問題タブ [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.
cuda - ベンチマークを使用した OpenCL の例
速度が大幅に (50 倍から 1000 倍に) 向上する可能性があるアプリケーションの種類を示す、OpenCL の入門的な例を探しています。 Cudaにはすばらしい例がたくさんありますが、OpenCL で同じものは見つかりませんでした。
良い例は、粒子群、シミュレートされたアニーリング、進化的アルゴリズム、アリコロニーの最適化などによる複雑な機能のグローバルな最適化かもしれません.
c++ - ポインターから配列インデックスを計算する
私と何人かの仲間がゲーム (Rigs ofRods) に取り組んでおり、物理計算のために OpenCL を統合しようとしています。同時に、データ構造の非常に必要なクリーンアップを実行しようとしています。私たちはデータ構造をクリーンアップし、OpenCL の要件に注意を払っていると言うべきだと思います。
オープン CL を使用する際の問題の 1 つは、メモリ空間が異なるためポインターを使用できないことです。OpenCLについて私が知っていることはほとんどありませんが、すべてのデータをGPUにコピーしてから計算を実行すると、ポインター値がコピーされますが、アドレスは予想されるアドレスに対応しません。
問題のデータは配列に集中されます。オブジェクトがそのデータを必要とする場合、必要なオブジェクトへのポインターを使用するか、配列インデックスを格納します。
OpenCL を説明する 1 つの解決策は、ポインターの代わりに配列インデックスを使用することです。これはハードカップリングにつながり、後で頭痛の種になる可能性があります。解決策として、開始アドレスと現在のアドレスに基づいて配列インデックスを計算するという考えがありました。もちろん、これは連続配列でのみ機能します。
これをテストするためにサンプル アプリを作成しましたが、問題なく動作し、別のプラットフォームでも検証された人もいます。
これは骨の折れる解決策というよりも、クラッジのようなものではないかと心配しています。これが非連続メモリでは機能しないことは承知しています。
基本的に私の質問は次のとおり
です。既知の連続メモリでこのアプローチを使用する場合の落とし穴は何ですか?
それが連続的であるとどのように判断できますか?
この種の問題に対処するとき、人々はどのようなアプローチをとってきましたか?
ありがとうございます。フォーマットがずれている場合はお詫び申し上げます。質問を投稿するのはこれが初めてです。
concurrency - 並列プログラミングを始める
したがって、マルチコアのように見え、それに関連するすべての複雑さがそのまま残ります。私は、並列処理から確実に恩恵を受けるソフトウェア プロジェクトを計画しています。問題は、並行ソフトウェアを書いた経験がほとんどないことです。私は大学でそれを学び、概念と理論を非常によく理解していますが、学校以来、複数のプロセッサで実行するソフトウェアを構築するのに役立つ経験はありません。
私の質問は、マルチプロセッサ プログラミングを始めるための最良の方法は何ですか? Windows の経験はほとんどなく、Mac OS X での C/C++ および Obj-C による Linux 開発に精通しています。また、私が計画しているソフトウェア プロジェクトでは、FFT と、多くのデータの浮動小数点比較が必要になるでしょう。
OpenCL、OpenMP、MPI、POSIX スレッドなどがあります。どのテクノロジから始めるべきですか?
以下に、私が検討しているいくつかのスタック オプションを示しますが、それらが私の目標に向けて実験できるかどうかはわかりません。
- Snow Leopard を入手して、ラップトップの ATI X1600 GPU で OpenCL Obj-C プログラムを実行できるようにする必要がありますか? また
- プレイステーションを手に入れて、利用可能な 6 つの Cell SPE コアを処理する C コードを書いてみるべきでしょうか? また
- Nvidia カードを搭載した Linux ボックスを構築し、CUDA で作業してみるべきですか?
よろしくお願いします。
osx-snow-leopard - OpenCLコンパイラの前処理定義?
私はSnowLeopardでOpenCLコードを開発しており、OpenCLのジャストインタイムコンパイルがClang/LLVMによって行われることを理解しています。Cプリプロセッサは使用されていますか?コンパイラで前処理定義を設定する方法はありますか?どのような定義がありますか?
コードがCPU用にコンパイルされているのかGPU用にコンパイルされているのかを認識して、たとえばデバッグにprintfステートメントを使用できるようにします。
osx-snow-leopard - OpenCL カーネルで __constant 修飾子を使用する
OpenCL カーネルで__constant修飾子を使用できません。私のプラットフォームは Snow Leopard です。
GPU で CL 読み取り専用メモリ オブジェクトを初期化し、定数配列をホストからそれにコピーしようとしました。次に、カーネル引数を__globalメモリ引数と同じように設定しましたが、これは正常に機能しませんが、エラーや警告は表示されません。また、 float型やint型と同様に clSetKernelArg 関数でデータを直接使用しようとしましたが、どちらも機能しません。
何か間違いを犯したり、Apple の実装に何か問題があるのでしょうか? OpenCL (gpu) とホスト コードの両方で、これがどのように行われるかの実例を見たいと思います。
cell - Cellプロセッサの死
前回、主に次の理由により、Cellプロセッサが停止していると主張する人がたくさんいました。
- ユーザーがLinuxをインストールできないため、新しいプレイステーション3でのサポートの欠如
- GPUの処理能力の向上とそのコストの低下
- CBEではなくさまざまなGPU用の統合プログラミングアプローチ(openCL)の存在(今日はCell向けに発表されました!)
- セルの実際の使用例のカロンシー(学界を除く)
- グローバルな失敗感
どう思いますか?2、3年前にセルのプログラミングを開始した場合、これを続行しますか、それともGPUへの切り替えを検討していますか?セルの新しいバージョンが登場しますか?
ありがとう
c++ - CL_MEM_OBJECT_ALLOCATION_FAILURE が表示されるのはなぜですか?
GPUに cl_mem バッファーを割り当てて作業していますが、これは特定のサイズを超えるまで正常に動作します。その場合、割り当て自体は成功しますが、実行またはコピーは成功しません。より高速な操作のためにデバイスのメモリを使用したいので、次のように割り当てます。
今私が理解していないのはサイズ制限です。約 16M バイトをコピーしていますが、約 128M バイトを使用できるはずです (「参考文献」を参照CL_DEVICE_MAX_MEM_ALLOC_SIZE
)。
これらの数値が大きく異なるのはなぜですか?
以下は、oclDeviceQuery からの抜粋です。
c - シンプルな OpenCL プログラムがコンパイルおよび実行されるが、出力が正しくない
SDK に基づいて単純な OpenCL プログラムを作成し、コンパイルして実行しましたが、出力が間違っています。私が間違っていることはありますか?
C と OpenCL のデバッグを学習するための提案は大歓迎です。私はプラットフォームにまったく慣れていません。
コードは以下です。
配列 c の出力はすべてゼロです。
ありがとう。
test_opencl.h
test_opencl.cl
test_opencl.cpp
c++ - openCL の上に構築された優れたサードパーティ ライブラリはありますか?
特に、FFT、畳み込み、相関、行列数学、あらゆる種類のマシン ビジョン プリミティブなどのプリミティブの処理について考えています。私はこれらの線に沿って何かを見つけることができませんでした.誰かが芽生えた良いプロジェクトを知っていますか?