問題タブ [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.
opengl - GLSLはSLIを利用していますか?OpenCLはありますか?複数のGPU用のGLSLまたはOpenCLのどちらが優れていますか?
OpenGLのGLSLはSLIセットアップをどの程度利用していますか?それは実行の時点でまったく利用されていますか、それともエンドレンダリングのためだけに利用されていますか?
同様に、OpenCLはSLIとは無関係であることを知っていますが、1つに複数のGPUがあると仮定すると、マルチプロセッシングのGLSLとどのように比較されますか?
一般的な変換やレイトレーシングなど、アプリケーションによって異なる可能性があるため、アプリケーションの種類による違いについての洞察を提供できますか?
memory-management - OpenClのクリーンアップによりセグメンテーション違反が発生する
ネット上のさまざまなソースを使用して、独自の小さなOpenclの例を作成しました。実際のカーネルは機能し、必要な出力が得られますが、例の1つで見つかったクリーンアップ関数により、segfaultが発生します。私は何を間違えましたか?
メルシー!
opencl - Apple の OpenCL コンパイラにキャッシュされたカーネルを強制的に再コンパイルさせるにはどうすればよいですか?
OpenCL カーネルで #include ステートメントを使用したいのですが、Apple の OpenCL コンパイラがカーネルをキャッシュしているようです。そのため、インクルード ファイルの内容を変更し、インクルードを実行するファイルを変更しない場合、プログラムは実行間で変更されません。
これを説明する例をコード化しました: http://github.com/enjalot/adventures_in_opencl/tree/master/experiments/inc/
コンパイルして実行すると、正常に動作するはずです。次に、inc.cl の構造体定義をコメントアウトしても、問題なく実行されます (または lvl2.cl の何かを変更します)。
Ubuntu で NVIDIA コンパイラを使用すると、期待どおりの動作が得られます。
では、clBuildProgram にカーネルを再コンパイルさせる方法はありますか?
event-handling - チュートリアルOpenClイベント処理
私の最後の質問では、OpenClのクリーンアップがセグメンテーション違反を引き起こします。、誰かが、イベント処理が欠落している、つまりコードが終了するのを待たないことが、セグメンテーション違反を引き起こす可能性があることをほのめかしました。それ以来、私が使用したチュートリアルをもう一度調べましたが、イベント(Matrix Multiplication 1(OpenCL)とNVIDIA_OpenCL_GettingStartedLinux.pdf
)に注意を払ったり、詳細に(私にとっては)理解できるように話したりしていません。
where and how to wait
OpenCLのチュートリアルを知っていますか?
メルシー!
cuda - OpenCLを使用した累積配列の合計
OpenCLを使用してn次元の点間のユークリッド距離を計算しています。n次元ポイントの2つのリストを取得し、最初のテーブルのすべてのポイントから2番目のテーブルのすべてのポイントまでの距離だけを含む配列を返す必要があります。
私のアプローチは、通常の二重ループを実行することです(Table1のすべてのポイント{Table2のすべてのポイント{...}}次に、並列のポイントのすべてのペアに対して計算を実行します。
次に、ユークリッド距離は3つの部分に分割されます。1。ポイントの各次元間の差を取ります2.その差を2乗します(まだすべての次元に対して)3。2で得られたすべての値を合計します。4。の平方根を取ります3.で取得した値(この例では、このステップは省略されています)。
すべての違いの合計を累積しようとするまで、すべてが魅力のように機能します(つまり、上記の手順のステップ3、以下のコードの49行目を実行します)。
テストデータとして、それぞれ2ポイントのDescriptorListsを使用しています。DescriptorList1:001,002,003、...、127,128; (p1)129,130,131、...、255,256; (p2)
DescriptorList2:000,001,002、...、126,127; (p1)128,129,130、...、254,255; (p2)
したがって、結果のベクトルの値は128、2064512、2130048、128になります。現在、実行ごとに変化する乱数を取得しています。
私が間違っていることについての助けやリードに感謝します。うまくいけば、私が取り組んでいるシナリオについてすべてが明確になっています。
java - OpenCL は Java でどのくらいネイティブですか?
Java 用の OpenCL バインディングがあるようです。これにより、CPU / GPU などを処理コアとして使用して、Java で真にプログラミングできるようになりますか、それとも単に Java アプリが C++ OpenCL 対応メソッドにアクセスできるようにするだけなのでしょうか?
興味深いことに、.Net 用の OpenCL バインディングはありますか?
memory - OpenCL での atom_inc の後の __global メモリからの読み取りに関する問題
OpenCL には、すべてのスレッドを停止するグローバル バリアがないため、次のコードで回避策を作成しようとしています。
アイデアは、すべてのスレッドがその 1 つのメモリをインクリメントするまで、各スレッドがループするというものです。
ただし、scratch[0] から読み取られた値は、一度読み取られるとスレッドで変更されることはなく、永久にループします。ホストに読み戻したときに正しい値であるため、インクリメントされていることがわかります。
グローバル メモリはローカルにキャッシュされていますか? 何が起きてる?
memory-management - clCreateBuffer+CL_MEM_COPY_HOST_PTRを使用したバッファオブジェクトの作成とclCreateBuffer+clEnqueueWriteBufferを使用したバッファオブジェクトの作成の違いは何ですか?
チュートリアルで両方のバージョンを見ましたが、それらの長所と短所が何であるかを知ることができませんでした。どちらが適切ですか?
対。
ありがとう。
[アップデート]
CL_MEM_COPY_HOST_PTR,
正しくするために、2番目の例に追加しました。
cuda - バンクコンフリクトとは?(Cuda/OpenCL プログラミングを行っています)
CUDA と OpenCL のプログラミング ガイドを読んでいますが、バンク コンフリクトとは何かがわかりません。彼らは、主題自体について詳しく説明することなく、問題を解決する方法に飛び込むだけです. 誰でもそれを理解するのを手伝ってもらえますか? ヘルプが CUDA/OpenCL のコンテキストにあるのか、それともコンピュータ サイエンス全般のバンク コンフリクトに関連するものなのか、好みはありません。
cuda - Cuda/OpenCL のグローバル メモリにバンク コンフリクトがないのはなぜですか?
私が理解していないことの1つは、Googleが私を助けていないことです.共有メモリでは銀行の競合が発生する可能性があるのに、グローバルメモリでは発生しないのはなぜですか? レジスタとのバンクの競合はありますか?
更新 うわー、ティビットとグリズリーからの2つの回答に本当に感謝しています。緑のチェック マークを 1 つの回答にしか付けることができないようです。私はスタックオーバーフローに慣れていません。1つの答えを最良のものとして選択する必要があると思います。緑のチェックを付けていない回答に対して、何かお礼をすることはできますか?