問題タブ [opencl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
openmp - OpenCL: OpenMP でうまく動作するか、他の言語を接続できますか、など
OpenCL の 1.0 仕様が数日前に公開されたばかりで (仕様はこちら)、私はそれを読み始めたところです。OpenMP ( spec ) などの他の高性能マルチプロセッシング API とうまく連携するかどうかを知りたいです。また、何を学ぶべきかを知りたいです。だから、ここに私の基本的な質問があります:
- すでに OpenMP を使用している場合、それによって OpenCL が壊れますか、またはその逆ですか?
- OpenCL は OpenMP よりも強力ですか? それとも、それらは補完的であることを意図していますか?
- OpenCL プログラムを標準の C99 プログラム (または他の言語) に接続する標準的な方法はありますか? それは何ですか?
- 誰かが OpenCL の本を書いているかどうか知っていますか? 仕様を読んでいますが、本の方が役立つことがわかりました。
c - レーベンバーグ・マルカート アルゴリズムはどのように詳細に機能するのですか?
自分で実装できるように、Levenberg-Marquardt 曲線近似アルゴリズムがどのように機能するかを学びたいと考えているプログラマーです。読者が数学者ではなくプログラマーである場合に、それがどのように機能するかを詳細に説明できる優れたチュートリアルはどこにありますか。
私の目標は、このアルゴリズムを opencl に実装して、ハードウェア アクセラレーションを実行できるようにすることです。
c++ - C++ テンプレート プリプロセッサ ツール
C++ ファイルを取得してテンプレート展開パスを実行し、展開されたテンプレートのインスタンス化を使用して新しい C++ コードを生成するコンパイラまたはスタンドアロン プリプロセッサはありますか?
テンプレートがまだ新しく実験的だった 90 年代半ばに、このようなツールがあったことを覚えています。プリプロセッサは、ネイティブ テンプレート サポートなしでコンパイラを使用してテンプレート プログラミングを行う方法でした。
これは、コンテキストを理解するためにコードの解析とトークン化が必要になる可能性が高いため、マクロ処理ステップよりもはるかに複雑です。
私の希望は、OpenCL コードを記述するときにそのようなツールを使用することです。 OpenCLは C++ ですが、テンプレートをサポートしていません。整数またはブールのみの引数を持つような単純なものであっても、テンプレートを作成し、ファイルを事前に解析してテンプレートの使用を見つけて呼び出しを展開し、新しい C++ コードを提供するツールを作成できることを願っています。 OpenCL コンパイラは理解できます。
非常に限定されたツールでも役に立つ可能性があります。すべてのテンプレートの癖をサポートする必要はなく、複数のモジュールなどをサポートする必要さえありません。
別の方法:#define
どこにでもあるマクロ.. 醜く、安全ではなく、効率が悪く、汎用性が低くなります。
sdk - OpenCL SDKを入手するにはどうすればよいですか?
私はhttp://www.khronos.org/Webサイトを熟読していましたが、OpenCLのヘッダーのみが見つかりました(私が気にしないOpenGLではありません)。OpenCL SDKを入手するにはどうすればよいですか?
parallel-processing - OpenCLフレームワークでMIMDを実行することは可能ですか?
間もなく、複数のデータ(MIMD)に対して複数の命令を実行できるnVidiaGTX300が登場します。OpenCLがMIMDを実行できるかどうか疑問に思いますか?
gpgpu - 混合ベンダーのハードウェアで OpenCL を実行する
Stream 2.0 ベータ版の ATI OpenCL 実装で遊んでいます。現在のベータ版の OpenCL は、現時点では CPU のみを使用しており、次のバージョンでは GPU カーネルをサポートする予定です。仕事用マシンに ATI GPU があるため、Stream をダウンロードしました。
私は、GPU を使用することで得られる利益から大きな恩恵を受けるソフトウェアを作成しています。ただし、このソフトウェアは顧客のマシンで実行されますが、開発するハードウェアを正確に選択して最適化する余裕はありません (多くの科学計算環境のように)。私の質問は、私のアプリケーションで ATI OpenCL 実装を配布した場合、NVidia ビデオ カードなどを使用できなくなるということですか? また、NVidia OpenCL SDK を使用すると、AMD チップ上で最適に実行されることはありません (ATI/AMD リンクを考慮すると)。
言い換えれば、最終的に OpenCL の実装を提供する責任は誰にあるのでしょうか? ユーザーは、AMD CPU で最適なパフォーマンスを提供する「ドライバー」と一緒に、NVidia ビデオ カード用の OpenCL「ドライバー」をインストールできますか?
余談ですが、Khronos メッセージ ボード以外に、OpenCL の優れた/アクティブなサポート フォーラムはありますか? ATI にはボードがあり、NVidia にもボードがあると思われますが、OpenCL ユーザー/開発者コミュニティはどこでたむろしていますか? すでに一か所に統合されていますか?
c++ - std::vectorおよびcスタイルの配列
私はソフトウェアの速度を上げるためにOpenCLを試しています。私たちはマップを頻繁に扱い、単純化するために、マップをstd :: vector <std::vector>として表します。OpenCL APIは、生のcスタイルのポインターを引数として受け取ります。たとえば、上記の場合はint*です。
私の質問:
- ベクトルが内部的にメモリ内で連続しているという実装保証がstlにありますか?
- std ::vectorをint*に安全にキャストして、それが機能することを期待できますか?
- ベクトルのベクトルの場合でも、これが当てはまると仮定できますか?ベクトルが他の状態データ、アライメントの問題、またはおそらく他の何かを保持することを期待します...
- これに取り組むための最良の方法は何ですか?内部の連続したメモリ内バッファを保持するカスタム2Dデータ構造を記述し、それを処理しますか?ベクトルとの間でたくさんコピーする必要があります...
ありがとう。
c++ - #includeを使用してOpenCLコードをロードする
私はこれがhlsl/glslシェーダーコードで行われるのを見てきました-実行時にファイルIOが発生しないよう#include
にコードをに貼り付けるソースコードファイルを使用します。char*
これを擬似コードとして表すと、次のようになります。
もちろん、#define
これらの引用符を使用して文字列を開始しようとするため、これは機能しません。
algorithm - 一般的なアルゴリズムの GPU と CPU のパフォーマンス
一般的なアルゴリズム (並べ替え、検索、グラフなど) が OpenCL (または任意の GPU 言語) に移植されているかどうか、および CPU によって実行される同じアルゴリズムとパフォーマンスがどのように比較されるかを知りたいです。私は特に結果(数字)に興味があります。
ありがとう!