タグ

C++とCに関するkenjiro_nのブックマーク (35)

  • 【Python C API入門】C/C++で拡張モジュール作ってPythonから呼ぶ -前編-|はやぶさの技術ノート

    こんにちは。 現役エンジニアの”はやぶさ”@Cpp_Learningです。 仕事の都合もあり「C言語 ⇒ C++Python」の順にプログラミング言語を習得しました。 最近は、PythonとC/C++両方を使って仕事をしています。 Pythonでプログラミングをしていると…

    【Python C API入門】C/C++で拡張モジュール作ってPythonから呼ぶ -前編-|はやぶさの技術ノート
  • 組み込みエンジニアの戸惑い PythonからC言語を呼び出してみる①(Python/C APIを使った場合) - KUMICO

    COLUMN 組み込みエンジニアの戸惑い PythonからC言語を呼び出してみる①(Python/C APIを使った場合) # Python # エンジニア # 組み込みエンジニアの戸惑いシリーズ Python編 # 言語 2019-07-26 FSI Embedded 組み込みソフトウェアエンジニアPythonを始めてみました。そして、第5の戸惑い、今回は組み込みとは切っても切り離せない「C言語」に関しての話題です。 Pythonを扱っていて課題となり得る、処理速度の改善や過去資産の流用など、そんなときに役立つかもしれない、PythonからC言語を呼び出す方法についてのご紹介です。 PythonからC言語、またはC++を呼び出す方法には様々なものがあります。以前の記事でもPython/C API (Python.h)やSWIG、boost.pythonなどを使うことで実現可能とご紹介し

  • Python 用の C++ 拡張機能の記述 - Visual Studio (Windows)

    この記事では、双曲正接を計算する CPython 用の C++ 拡張モジュールをビルドし、Python コードからそれを呼び出す手順について説明します。 Python では最初にルーチンを実装して、C++ で同じルーチンを実装した場合の相対的なパフォーマンス向上を示します。 Python インタープリターの機能の拡張には、C++ (または C) で記述されたコード モジュールが一般的に使われます。 拡張モジュールの主要な種類は次の 3 つです。 アクセラレータ モジュール: パフォーマンスの高速化を実現します。 Python はインタープリター言語であるため、C++ でアクセラレータ モジュールを記述してパフォーマンスを向上させることができます。 ラッパー モジュール: 既存の C/C++ インターフェイスを Python コードに公開するか、Python から簡単に使用できる、より Py

    Python 用の C++ 拡張機能の記述 - Visual Studio (Windows)
  • C++ で Python 用ライブラリーを作成する - XSim

    概要 C++ で作成した処理を Python から使用するには以下を始めとした複数の方法があります。 Python.h SWIG Boost.Python Shiboken pybind11 どの方法を使用するかは状況によって変わりますが Boost.Python では C++ 内から Python を呼び出せる(今回の例とは逆)という利点があります。PythonC++ の間で相互に呼び出しを行えるので、C++ で作成されたアプリケーションにマクロ言語として Python を組み込む相互に呼び出しを行うといったことができるようになります。 ここでは Linux(Ubuntu 18.04)上で Boost.Python を使用して PythonPython 3)用ライブラリーを作成する方法について説明します。 Boost.Python のビルド まず以下のコマンドで必要なパッケージ

    C++ で Python 用ライブラリーを作成する - XSim
  • C言語でPythonのモジュール作ってみる - Qiita

    C言語でPythonのモジュールを作ってみる 環境 Python 3.4.6 gcc version 4.8.5 openSUSE Leap 42.3 概要 Python勉強しているときに拡張モジュールの作り方が出てきて自分でも作ってみようと思った次第です。 個人的に色々つまったので、ここにノート代わりに書いておきます。 ゴールまでの流れ C言語でPythonのモジュールを作成 ↓ Pythonを使ってCをビルドする ↓ PythonでimportしてCモジュールを使ってみる C言語でモジュール作成 まず、C言語でPythonのモジュールを作成していきます。 PyObject型を多用します。とりあえず、Hello_worldとpushとpop作りました。 #include <Python.h> //Cの方で作成してPythonで利用する関数はPyObjectを使う static PyObj

    C言語でPythonのモジュール作ってみる - Qiita
  • 1. Extending Python with C or C++

    1. Extending Python with C or C++It is quite easy to add new built-in modules to Python, if you know how to program in C. Such extension modules can do two things that can’t be done directly in Python: they can implement new built-in object types, and they can call C library functions and system calls. To support extensions, the Python API (Application Programmers Interface) defines a set of fun

    1. Extending Python with C or C++
  • ベクトル/行列演算の定番ライブラリEigen - Qiita

    ベクトル/行列演算の定番ライブラリEigen (日語解説のサイトまとめと便利な機能紹介) Eigenとは C++の行列/ベクトルを扱うライブラリ(公式). Eigenの主な特長 行列演算を直感的に書くことが出来る. ヘッダーファイルのみのライブラリのため,ライブラリのビルドやリンクが必要なく組み込やすい. 高速.他のライブラリとの比較ベンチマークはこちら(公式) 解説サイト(すべて日語) Eigen - C++で使える線形代数ライブラリ(でらうま倶楽部)- 基的な使い方とも幾何変換,クォータニオンなどの解説もあり. Eigen ー C++で線形代数を!(singular point)- 3回のポストで,幅広い機能について解説している. Robotics/Eigen(NAIST::OnlineText)- 基的な機能の他に行列分解についても解説あり. Eigenの使い方 Eigenは

    ベクトル/行列演算の定番ライブラリEigen - Qiita
  • SIMDプログラミングによる行列積について

    C言語初心者です。 SIMD命令を使って8×8行列を計算するプログラムを書いたところ、"segmentation fault" が実行の度に起きたり起きなかったりする奇妙なことになってしまいました。 どこが間違いなのか、どう改善すべきなのか、教えていただけると幸いです。 またswitch文のところは、ポインタとiを使って計算すべき所だと思うのですが、なぜか変数を使うと "segmentation error" が起きてしまいます。これに関しても理由が知りたいです。 以下がコードです。 #include <math.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <x86intrin.h> void print_vec(__m256 m) { printf("{"); for(int i=0;i<8

    SIMDプログラミングによる行列積について
  • 小行列演算におけるインテル® AVX の利点 | iSUS

    まとめ 8×8 行列の乗算アルゴリズムと 16×16 行列の加算アルゴリズムの両方で、それぞれ 1.77 倍と 1.8 倍となり、インテル® AVX バージョンのほうがインテル® SSE よりも優れた結果となりました。これは、インテル® AVX のほうが、レジスターの幅を活用することで 1 命令あたり 2 倍のオペランドを処理し、インテル® SSE よりも高いスループットを達成できることを示した良い例です。 行列式アルゴリズムでは、8 つの行列の行列式の計算を同時に実行することでパフォーマンスが向上しました。ただし、行列式の計算の前の 2 つの 8×8 転置により、パフォーマンスはやや制限されます。 一般に、アプリケーションはメモリー集約型よりも計算集約型のほうが、より優れたパフォーマンス・スピードアップが得られます。 ソースコード 完全なソースコードは http://software.i

    小行列演算におけるインテル® AVX の利点 | iSUS
  • SIMD - C++のメモ

    C++のメモ Visualization Tool Kit(VTK)など トップページページ一覧メンバー掲示板編集 SIMD 最終更新: sonogi1 2014年08月28日(木) 22:44:43履歴 Tweet SIMDはCPUが持っているベクトル演算機能である. ベクトル長は128bitや256bitと短いが,配列の個々の要素に同一の操作をする場合,2倍〜10倍程度の高速化が簡単に見込める. 組み込み関数が用意されているため,通常のC++でそのまま記述することができる. 命令についてはIntel Intrinsics Guideを参照. SIMDを用いた行列の積の高速化 アルゴリズム AVX(Sandybridge以降) AVX2(Haswell以降) ベンチマーク結果 SIMDを用いた行列の転置の高速化 アルゴリズム ベンチマーク SIMDを用いた行列の積の高速化 AVXのベクト

    SIMD - C++のメモ
  • SIMD演算を用いた高精度疎行列計算ソフトウェアの高速化-情報処理学会

  • Learn Contemporary C++ | Concise&Visual Examples

    Learn up-to-date, idiomatic C++ with code examples, concise explanations, cheat sheets and infographics. -- Lerne aktuelles, idiomatisches C++ mit Code-Beispielen, knappen Erklärungen und Infografiken. -- 学现代的C++ // 代码示例,简洁的说明和图表

    Learn Contemporary C++ | Concise&Visual Examples
  • 非情報系学生のための C/C++ 入門

    ページの資料は私 (金丸) が 2008 年度から工学院大学にて行っている講議「プログラミング演習 I」の資料に基づいています。 機械系学生が対象であるので、細かな文法にこだわることより画像処理などの具体例を用いて プログラミングの質をつかんでもらうことを重視しています。 そのため内容はある程度限定せざるを得ませんが、このページで学んだ内容を足掛かりにして、 各自が C/C++ の自習を継続するための実力をつけてくれればよいと思います。 なお講義の内容を、ブラウザ上で動作するオンラインコンパイラで学べるよう 若干簡略化した「オンラインコンパイラで C/C++ を自習しよう」も公開していますのでお好みでどうぞ。 2020.07: Visual Studio 2019 で演習を行えるよう加筆しました。

    非情報系学生のための C/C++ 入門
  • Visual Studio Code で ARM Cortex の開発環境を作る - くにゅくにゅの雑記帳

    Visual Studio Code で ARM Cortex の開発環境を構築してみたので,備忘録代わりに構築手順を書いておきます。 Visual Studio Code そのものは統合開発環境ではなく,あくまで高機能なコードエディタという位置づけの製品ですが,アドオンを入れることにより,コーディングだけでなく,プロジェクトのビルドや,ターゲットMCUへのダウンロード,ターゲット上で実行しながらのデバッグを,エディタ上で行うことができるようになります。IntelliSense によるコード補完もきちんと動作し,なかなか快適です。一方,大きな欠点として,2018年5月時点では C/C++ のリファクタリング機能が完全に欠落しています。このため,変数名の一括変更といった,ほかのコードエディタならば当たり前にできるようなことができなかったりもします。それを差し置いても,Eclipseベースの環

    Visual Studio Code で ARM Cortex の開発環境を作る - くにゅくにゅの雑記帳
  • JNI:Java Native Interface

    JavaからC/C++言語を呼び出す、またはその逆の方法として、JNI(Java Native Interface)というAPIが提供されています。記事では、JavaからC/C++言語をネイティブメソッドとして呼び出すコードとそのコンパイル・リンク・実行手順、およびC/C++言語からJavaを呼び出すコードとそのコンパイル・リンク・実行手順を記します。 JNIに必要なもの JNIは、Javaで記述する部分とC/C++で記述する部分があります。Java側はJDKがあればよいのですが、C/C++側はC/C++コンパイラが別途必要となります。 Windows環境で必要なもの Windows環境のJavaVMはネイティブメソッドをDLL(Dynamic Link Library)という形で用意されていないといけないので、DLLを構築できるC/C++コンパイラが必要となります。 Windows環境

  • JNIより簡単にJavaとC/C++をつなぐ「JNA」とは(1/4)-@IT

    インターネットの普及に加えて、リッチクライアント/RIAの発展とともに、アプリケーションの形態は、C/S(クライアント/サーバ)システムから、Webアプリケーションシステムにシフトしています。一般の情報発信システムだけではなく、企業の基幹情報システムまで、盛んにWebアプリケーションで構築するようになりました。 この変化の主役であるといわれる、Java技術は、Webアプリケーションシステムの発展とともに、ネットワークの親和性や、プラットフォーム適用の多様性で、広く受け入れられて、Webアプリケーションシステム開発の基盤技術になっています。 これまでのC/Sシステムでは、サーバロジックはC/C++で実装されるケースが一般的でした。C/SシステムからWebアプリケーションシステムにシフトする際に、Java技術を導入することを決めた場合、Java技術で、すべて新規開発するのは1つの選択肢ですが、

  • C言語初心者がQiitaユーザー向けインスタンス「Qiitadon」でC++を勉強してみた

    先週、「マストドン飽きた」という記事を書いたら、記事を読んだ人から「超巨大インスタンス以外のインスタンスに入ること」を勧められた。その人いわく、小規模インスタンスではユーザーはローカルタイムラインで「チャット」をしており、誰もフォローしなくてもタイムラインで交流が持てるのがMastodon(マストドン)の最大の特徴らしい。トゥートとツイートでは、全く異なるのだという。 実際に規模の小さいインスタンスに行くとそのおもしろさが分かるというので、どのインスタンスに入ろうか迷っていた。すると、5月29日にQiitaのユーザー向けインスタンス「Qiitadon」が試験的に公開されたとの情報が。ここに決めた! Qiitadonの最大の特徴は、コードブロック記法とハイライト機能があること。Markdown記法と同様にコードを「```」で囲むと投稿がコードブロックとして認識・表示される。 Qiitadon

    C言語初心者がQiitaユーザー向けインスタンス「Qiitadon」でC++を勉強してみた
  • いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記

    私はつい最近まで勘違いしていました。 ここのページに書いてあるような方法で、一様分布する整数が得られると。 int random(int n) { return (int)(( rand() / (RAND_MAX + 1.0) ) * n); } この方法、一見すると実に一様分布が得られそうに見えるんですよね。 どういう思考回路を通っているかというのを自己分析すると、次のような感じです。 1. rand() では 0〜RAND_MAX のランダムな整数が得られる。 2. それを RAND_MAX + 1 で割ると、[0, 1) に一様分布する実数が得られる。 3. [0, 1) の一様な実数を n 倍して小数点以下を切り捨てたら、0 から n-1 に一様分布する整数が得られる。 これの罠なところは、1 と(特に)3 が正しいというところだと思います。 ただ、2 がダウト。 思いっきりダウ

    いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記
  • GWだからWindowsのC&C++フリー開発環境MinGWをインストールしたら、またも世の中から取り残されていたことに気づいた(前編) - 💙💛しいたげられたしいたけ

    4月27日 と 28日 のエントリーに、確率統計の再勉強中であることを書いた。高校時代から思っていたのだが、答えの正確性を担保するものがないことに、つらつら不満を感じた。問題集だったら巻末に答えが載っているが、現実に直面する問題にはそういうものはないから、間違えたら間違えっぱなしじゃないかということである。そして人間は必ず間違いを犯す存在なのだ。 のっけから話はズレるが、その点、複式簿記ってすごいですよ。貸借平均の原理というのに基づいて、間違いを検出するシステムが構築されている。あれも間違いなく人類の偉大な知的遺産の一つだと思っている。もっと勉強せねばと思いつつ果たしていない。 スポンサーリンク 話を戻して、高校時代に比べて今の自分は無駄に年を取ったわけでなく、ちっとは知識を蓄積しているはずだ。すぐに思いつくのは、簡単なプログラミングによってシミュレーションをすることだった。しかしマシンの

    GWだからWindowsのC&C++フリー開発環境MinGWをインストールしたら、またも世の中から取り残されていたことに気づいた(前編) - 💙💛しいたげられたしいたけ
    kenjiro_n
    kenjiro_n 2016/04/30
    bash on Windowsが正式に追加されてからそちらでgccをインストールするかすぐ使えるVisual Studio (Community|Express) がある現状だとあえてMinGWを選んだようにも思えるけど、そのあたりの話は続きで読めるんだろうか。
  • GCC 5系初のリリースとなる「GCC 5.1」登場 | OSDN Magazine

    GNU ProjectとGCC開発者は4月22日、「GNU Complier Collection(GCC)5.1」」を公開した。Cのデフォルトモードの変更、最適化エンジンの強化、JITコンパイラ対応など多数の機能が盛り込まれている。 2014年4月に公開されたGCC 4.9に続くもので、GCC 5系で最初のリリースとなる。変更点としては、まずCのデフォルトモードが-std=gnu89(GNU89)から-std=gnu11(ISO C11ベースのGNU11)に変更された。また、C++ランタイムライブラリlibstdc++ではデフォルトで新しいABIを利用するようになっている。古いABIのサポートも継続するデュアルライブラリとなり、「_GLIBCXX_USE_CXX11_ABI」パラメータで利用するABIを設定できる。libstdc++ではC++11のサポートが完全対応となった。また、C++

    GCC 5系初のリリースとなる「GCC 5.1」登場 | OSDN Magazine