問題タブ [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.
double - テスラ倍精度
倍精度が tesla gpu にハードウェアでどのように実装されているかという情報を探しています。2 つのストリーム プロセッサが単一の double 値で動作していることを読みましたが、nvidia からの公式の論文は見つかりませんでした。
前もって感謝します。PPS なぜほとんどの GPU は単精度のみで計算するのですか (色は RR.GG.BB.TT として格納できるため、各文字は 8 ビット値です)。
PS google it for meは役に立ちませんでした
cuda - CUDAまたはOpenCLのスパース配列
私は大きな配列(たとえば512K要素)をGPUに常駐させており、処理する必要があるのはごく一部の要素(たとえば、5Kのランダムに分散された要素-セットS)だけです。どの要素がSに属するかを見つけるアルゴリズムは非常に効率的であるため、集合Sから要素へのポインターまたはインデックスの配列Aを簡単に作成できます。
Sの要素に対してのみCUDAまたはOpenCLカーネルを実行する最も効率的な方法は何ですか?アレイA上でカーネルを実行できますか?これまでに見たすべての例は、連続した1D、2D、または3Dアレイを扱っています。間接参照の1つのレイヤーを導入することに問題はありますか?
opencl - OpenCL: SIMT 実行モデルに関する基本的な質問
「SIMT」アーキテクチャの概念と設計のいくつかは、私にはまだ不明です。
多くのスレッドがロックステップで実行される可能性があるため、私が見て読んだことから、分岐コード パスと if() を完全に使用するのはかなり悪い考えです。では、それは正確には何を意味するのでしょうか。次のようなものはどうですか:
パラメータ「フラグ」はすべてのワークユニットで同じであり、すべてのワークユニットで同じ分岐が取られます。では、GPU はすべてのコードを実行し、それにもかかわらずすべてをシリアライズし、基本的にまだ取られていないブランチを取るのでしょうか? それとも、もう少し賢く、すべてのスレッドが取られた分岐に同意する限り、取られた分岐のみを実行しますか? ここでは常にそうです。
つまり、シリアル化は常に行われますか、それとも必要な場合にのみ行われますか? 愚かな質問で申し訳ありません。;)
opencl - OpenCL、GPUカーネルからホストメモリへの直接アクセス
コピーせずにGPUから直接アクセスできるホストにメモリを割り当てる方法はありますか?
CUDAのcudaHostGetDevicePointerのように。
queue - OpenCLイベントとコマンドキュー
私はCUDAアプリケーション(知っておく必要がある場合はこれ)をOpenCLに変換する作業をしています。元のアプリケーションはCスタイルのCUDAAPIを使用しており、結果を読み取る際の自動ビジーウェイトを回避するために単一のストリームを使用しています。
ここで、OpenCLコマンドキューがCUDAストリームによく似ていることに気付きました。しかし、デバイスの読み取りコマンド、および同様に書き込みコマンドとカーネル実行コマンドでは、イベントのパラメーターにも気づきます。だから私は、デバイスの書き込み、いくつかのカーネル(たとえば、あるカーネルへの1回の呼び出し、次に別のカーネルへの100回の呼び出し)、およびデバイスの読み取りをすべて順番に実行するのに何が必要か疑問に思っています。
- それらを同じキューに順番にエンキューした場合、CUDAの場合と同じように順番に実行されますか?
- それが機能しない場合は、イベントをデイジーチェーン接続して、各呼び出しの待機リストを前の呼び出しのイベントにすることができますか?
- または、依存関係などのN ^ 2検索がある場合のように、以前のすべてのイベントを各呼び出しの待機リストに追加する必要がありますか?
- または、 AMDのチュートリアルで述べられているように、呼び出しごとに個別にevent.wait()を実行する必要がありますか?
ありがとう!
cmake - cmakeでCプリプロセッサのみを実行しますか?
OpenCL プログラムの配布を簡素化するために cmake を使用しようとしています。複数のヘッダーやその他のソース ファイルを含むカーネル ファイルがあり、単一の自己完結型の実行可能ファイルが必要です。
私の計画は、cmakeにカーネル ソースでCプリプロセッサを実行させ、cl ファイルとそのインクルードを操作しやすい単一のユニットに変換することです。
-E を指定して gcc/clang を呼び出して add_custom_command を使用できますが、コマンドでさまざまなヘッダー ファイルを見つけるための適切なディレクトリを含めるためのフラグを取得できません。コンパイラへのカスタム呼び出しで使用する現在のインクルード ディレクトリをすべて検索します。
現在の cmake 環境でファイルに対してCプリプロセッサのみを実行する方法はありますか?
memory - OpenCL で使用可能なデバイス メモリを確認するにはどうすればよいですか?
バッファを割り当てる前に、デバイスにどれだけの空きメモリがあるか知りたいです。これは可能ですか?CL_DEVICE_GLOBAL_MEM_SIZE
合計メモリと単一オブジェクトの最大サイズがあることは知っCL_DEVICE_MAX_MEM_ALLOC_SIZE
ていますが、現在のメモリ状態を知りたいです。
現状では、おそらく OpenGL ベンダー固有の拡張機能を使用する必要があります。
function - OpenCL インライン関数は OpenCL 型を返すことができますか?
OpenCL がインライン関数をサポートしていることは知っていますが、それらの関数は OpenCL 型を受け入れて返すことができますか?
具体的には、次のシグネチャを持つ何かに興味があります: float4 func(float4 x, float4 y)
open-source - CLang と LLVM を使用した Apple の OpenCL 実装はオープンソースですか?
Apple がClang と LLVM に基づくOpenCL実装を持っていることは明らかです。OpenCL を LLVM に移行するために必要なことについて、Apple エンジニアによる講演もあります。
ただし、この実装のコードは何らかのオープンソース ライセンスの下で利用できますか?それとも、これはクローズド ソース ソフトウェアですか? コードがリリースされていない場合、将来リリースされる可能性があるかどうかを知っている人はいますか? 独自の実装を試みる前に、Clang と LLVM に基づくオープンソースの OpenCL 実装があるかどうかを知りたいです...
opengl - OpenCL がある場合の GLSL のポイントは何ですか?
これをタイトルの質問の完全な形式と考えてください: OpenCL は、将来 (他のデバイス プログラミングの中でも) 本格的な GPU プログラミングの共通標準になる可能性があるため、OpenGL 用にプログラミングするときは、将来的に保証される方法で、すべての GPU を使用しない理由はありません。 OpenCLでの操作?そうすれば、プログラム上の制限なしに GLSL の利点を得ることができます。