問題タブ [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.

0 投票する
1 に答える
276 参照

opencl - clCreateSubBuffer が見つかりません oO

cl.h または cl.hpp で clCreateSubBuffer が見つからないようです (エラー マクロのみ)。仕様に記載されていますが、これについて何か考えはありますか?またはサブバッファを作成する他の方法はありますか?

私が考えることができるのは、インクリメントされたポインターを使用してバッファーを再作成することだけです。

0 投票する
2 に答える
1298 参照

opencl - Linux でコンパイルされる OpenCL コードが Windows ではコンパイルされない

私は最近、Linux(ubuntu 10.4、atiCatalyst 10.4、ati sdk v2.1)でいくつかのOpenCLコードを書いており、Linuxでうまく機能しています。

Windows でコードを実行したいときに、プログラム ビルド エラーが発生しました。

「この宣言にはストレージ クラスまたは型指定子がありません」

そして、「グローバル変数はaddrSapce定数で宣言する必要があります」

無効なカーネルを使用しても機能しません。コードにコメントを付けても、同じエラーが発生しました 笑!

サンプル r が正常に動作するのは十分に奇妙です。コードをサンプル プロジェクトにコピーすると、同じエラーが発生しました。

私はWindows 7 32ビット、ati stream sdk v2.1およびv10.6ドライバーを使用しています(Windows用の10.4がどこにも見つからなかったので、10.6はOpenCLをサポートする保証がないので悲しいです。 amdに行きます笑!)

私はすべてのカーネルを切り取り、これだけを残しましたが、それでも同じエラーが発生しました。

0 投票する
1 に答える
2357 参照

opencl - OpenCL でスキャンを実行する

私はかなり長い間、単純なスキャンを機能させようとしてきました。小さな問題の場合、出力は正しいですが、大きな出力の場合、正しい結果が得られることがあります。Apple の OpenCL の例を確認しましたが、基本的に同じことを行っています (atm を無視している銀行の競合を除いて)。最初のフェーズのコードは次のとおりです。

そしてリダクション関数自体:

2 番目のフェーズでは、パーシャルの合計を使用して各要素の合計を作成します。

入力は、ローカル作業サイズの倍数のサイズにパディングされます。各ワーク グループは、そのサイズの 2 倍のチャンクをスキャンできます。結果を確認するために使用する sums 配列に各チャンクの合計を保存します。以下は、1 の配列の入力サイズ 4000 の出力です。

ただし、期待される結果は

コードをもう一度実行すると、次のようになります。

カーネルへの呼び出しは次のとおりです。

グローバル サイズは 4096 で、ローカル サイズは 512 です。ローカル ワーク グループのサイズを 64 に制限すると、出力は次のようになります。

入力サイズを 512 と任意のチャンク サイズに変更すると、すべてがうまく機能します。

最後に、入力サイズ 513 とグループ サイズ 256 を使用すると (つまり、それぞれ 512 要素を持つ 2 つのチャンクがあり、2 番目のチャンクには最初の要素のみが 1 に設定されている)、最初のフェーズの結果は次のようになります。

あるべき場所:

私の推測では、異なるスレッドが同じデータに同時にアクセスするのは問題ですが、すべてのワーク グループが入力データの異なるチャンクを処理しているため、これは当てはまりません。この問題に関するヘルプは大歓迎です!!

0 投票する
2 に答える
2075 参照

opencl - OpenCL 対応プログラム間で GPU を共有する

2 つの別々の OpenCL 対応プログラム間、またはより具体的にはOpenCL カーネルを実行するために GPU を同時に必要とする 2 つの別々のプロセス間で GPU を共有する方法はありますか? もしそうなら、これはどのように行われますか?

0 投票する
1 に答える
917 参照

opencl - fp16 拡張機能をサポートする OpenCL の利用可能な実装はありますか?

cl_khr_fp16 拡張機能をサポートする OpenCL 言語の実装を探しています。私の知る限り、現在これをサポートしている公開されている実装はありません。

0 投票する
2 に答える
1594 参照

scala - OpenCLはエージェントベースのシミュレーションに適していますか?

私は、アクターの並行性を使用してエージェントベースのシミュレーションを作成することを目的としてScalaを学習しています。私は現在OpenCLについてほとんど知りませんが、飛び込む前に、エージェントベースのシミュレーションと適切/互換性があるかどうか誰かに教えてもらえますか?

もしそうなら、ScalaCLは非常に魅力的に見えます。

0 投票する
1 に答える
2474 参照

opencl - OpenCLで関数を定義するには?

OpenCL で関数を定義するにはどうすればよいですか? 関数ごとに 1 つのプログラムを作成してみました。そして、それはうまくいきませんでした。

0 投票する
2 に答える
4077 参照

memory-management - OpenCLでのメモリ管理

OpenCLでプログラミングを開始したとき、カーネルにデータを提供するために次のアプローチを使用しました。

これには明らかに、データをチャンクに分割して、各チャンクがデバイスのメモリに収まるようにする必要がありました。計算を実行した後、clEnqueueReadBuffer()を使用してデータを読み取ります。しかし、ある時点で、次の行を使用できることに気付きました。

これを行うと、データのパーティション化は廃止されました。そして驚いたことに、パフォーマンスが大幅に向上しました。それは私にはわかりません。私が得たものから、ホストポインタを使用する場合、デバイスメモリはキャッシュとして機能しますが、処理のためにすべてのデータをそこにコピーし、終了したらメインメモリにコピーして戻す必要があります。明示的なコピー(clEnqueRead / WriteBuffer)を使用すると、基本的に同じであるはずなのに、どうして桁違いに遅くなるのでしょうか。私は何かが足りないのですか?

ありがとう。

0 投票する
4 に答える
9945 参照

opencl - OpenCLホストに複数のプラットフォームがありますか?

KhronosのOpenCL1.0および1.1仕様におけるプラットフォームの定義:

プラットフォーム:ホストと、OpenCLフレームワークによって管理されるデバイスのコレクション。これにより、アプリケーションは、プラットフォーム内のデバイスでリソースを共有し、カーネルを実行できます。

OpenCL関数clGetPlatformIDsは、プラットフォームの配列を作成します。これは、複数のプラットフォームが可能であることを意味します。特定のOpenCLホストにプラットフォームが1つしかないことを想定しても安全ですか?

言い換えれば、これを行うことによって、どのホストでも何かを失うことになりますか?

0 投票する
4 に答える
2499 参照

python - Python での GPGPU プログラミング

Python でGPGPUプログラミングを開始したいと考えています。pyopencl または clyther から始めるべきですか? 違いは何ですか?