問題タブ [cloo]
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.
c# - 大きなバッファを OpenCL デバイスに渡す方法は?
OpenCL (Cloo.dll) を使用して C# でプログラムを作成していますが、大きなバッファを OpenCL ComputeDevice に渡す必要があります。このバッファを OpenCL ComputeDevice に渡すと、例外やエラーなしでプログラムがクラッシュします。
コード:
OpenCL カーネル:
ComputeDevice.MaxParameterSize - デバイスに渡すことができるパラメーターの最大サイズについて読みました。私の考えでは、問題はここにあります。小さなバッファー (サイズが 1KB 未満) をうまく渡すことができるからです。私のデバイスの MaxParameterSizes は 1024 バイトと 4096 バイトですが、これらの値は非常に小さいです。サイズが 100 MB を超えるバッファを渡す必要があります。
大きなバッファをデバイスに渡すにはどうすればよいですか? このバッファへのポインタのみを渡すことはできますか?
私の OpenCL デバイス:
AMD Radeon HD8750M 2048MB、
Intel Core I3 4000M + 6GB RAM
編集:
カーネルがuchar16
データを扱うため、GlobalSize を に設定する必要がありbuffer.size / 16
ます。
コードを 1 行だけ変更しました (バッファー サイズは 16 で除算されます)。
すべて正常に動作します。みんな、ありがとう!!!)
c# - C# で Cloo を使用すると、(明らかに) グラフィック カードがインストールされているにもかかわらず、ComputePlatform.Platforms.Count がゼロになります。
C# で Cloo を使用してグラフィック カードにアクセスする必要があります。ComputePlatform.Platforms からアクセスしようとすると、このリストは空です。私のドライバーは最新です。これを Visual Studio 2013 および 2015 で実行しようとしましたが、結果はありません。助けてください!
optimization - スループットに最適なデバイスを選択する OpenCL
OpenCL C# ライブラリである Cloo を使用していますが、実行時にカーネルに使用するデバイスをどのように決定するのが最善かを考えていました。私が本当に知りたいのは、GPU 上にあるコアの数 (計算ユニット * 計算ユニットあたりのコア数) です。これを正しく行うにはどうすればよいですか?現在、計算ユニットと周波数を決定できます。
編集: すべてのデバイスでプロファイリング (速度テストの実行) を試み、結果を保存/比較することを検討しました。しかし、私の理解では、比較のためにすべてのデバイスを最適/公正に使用するプログラムを作成できないため、これも問題を引き起こします。
これは、カーネル呼び出しごとに指定する最適な数のワーカー スレッドを選択する場合にも役立ちます。どんな助けでも大歓迎です。
c# - OpenCL Cloo: リソース不足エラー
(Cloo C# を使用して) OpenCL でいくつかのテスト コードを実行しているときに、OpenCL からこれらの OutOfResource エラーが発生し始め、例外が発生する前に Unity が完全にクラッシュすることがあります。基本的に、タイミングをチェックするために、さまざまな数のグローバル/ローカル作業項目を使用して、カーネル関数を何度も再呼び出ししています。引数を同じままにして、2x2x2 グローバルおよび 2x2x2 ローカルで開始し、有効なサイズのみをチェックする上向きに反復するカーネルを呼び出します。ときどき正常に動作しますが、ほとんどの場合、約 30 または 40 の Execute() 呼び出しが完了し、次の Execute() 呼び出しでクラッシュします。
注: 実行は、コンピューター上の OpenCL.dll を指します。Unity が返すスタック トレースは、ネイティブ コードのため、NULL であると思います。
誰がこれを引き起こしているのか考えていますか?
注: このバージョンの Cloo は、GitHub の Cloo-Unity であり、Unity で使用しています。エラーが発生したときに呼び出される同等の OpenCL 関数は clEnqueueNDRangeKernel() ですが、Cloo では Execute() と呼ばれます。
コードサンプル: