2

私は OpenCL と CUDA を知っています。これらはモバイル デバイスではサポートされていません。しかし、それらのほとんどは OpenGL ES をサポートしています。そこで、一般的なコンピューティング用の OpenGL ES シェーディング言語を使用して学習したいと考えています。OpenGLSL の OpenCL や CUDA のように。

  • 何種類のバッファーを使用できますか? 彼らは何ですか?
  • これらのバッファを操作する方法

私が知っているように、ここまで頂点シェーダーとフラグメント シェーダーを作成できます。

  • フラグメント シェーダーを使用する場合、どのバッファーを操作できますか
  • 頂点シェーダーを使用するときにどのバッファーを操作できますか
  • GPUに同期機能はありますか(GPUでの同期を意味します.OpenCLまたはCUDAのブロックで同期されたスレッドのように)

PS: Using Mobile GPU for General-Purpose Computing
という論文を読みました。彼らの実験は、次の仕様の Nvidia Tegra SoC で実行されました。

  1. 1GHz デュアルコア ARM Cortex-A9 CPU、
  2. 1GBのRAM
  3. 333MHz で動作する Nvidia 超低電力 GeForce GPU、および 512MB のフラッシュ メモリ

FFT(128*128) で 3 倍のスピードアップが得られます。これらの結果は良いと思います。それをする価値があるかどうか、皆さんは考えますか。では、主なボトルネックはメモリアクセスですよね?

多くの人が言ったように、OpenGL ES で汎用コンピューティングを行う価値はありません。したがって、OpenCL をサポートするモバイルも期待する価値はありません。右?私の意見では、OpenGL ES は OpenCL の助長です。

4

2 に答える 2

4

一部のプラットフォームでは、浮動小数点形式がサポートされていません。一部のプラットフォーム (powervr、tegra、adreno) は、ハーフ フロート (16 ビット フロート) サーフェスをサポートしており、レンダー ターゲットとテクスチャの両方として使用できます。一部のプラットフォーム (adreno、最新の powervr と思われます) では完全なフロート サポートが存在しますが、かなりまれです。

したがって、それは、実行することを期待している計算の種類、許容できる精度の種類、およびターゲット プラットフォームが何であるかに大きく依存します。

また、現在の世代の opengl es (2.0) には完全な IEEE float 要件がないため、結果が異なる場合があることも考慮してください。

最終的に、それが価値があるかどうかは、バッチ サイズに大きく依存します。結果へのアクセス (つまり、レンダー ターゲットからピクセルを読み取る) が非常に遅く、パフォーマンスの向上が無効になる場合があります。

箇条書きに 1 つずつ対処するには:

  • 何種類のバッファーを使用できますか? 彼らは何ですか?

テクスチャを作成し、そこから FBO を形成できます。さらに、データを定数 (uniform) または頂点ごとのデータ ストリーム (varyings/attribs) としてシェーダーに供給することができます。

  • これらのバッファを操作する方法

通常のテクスチャ処理関数を使用してテクスチャに書き込むことができます。

  • フラグメント シェーダーを使用する場合、どのバッファーを操作できますか

FBO がバインドされると、フラグメント シェーダーを使用して書き込むことができます。後で、FBO にバインドしたテクスチャから読み取ることで、結果にアクセスできます。

  • 頂点シェーダーを使用するときにどのバッファーを操作できますか

なし。

  • GPUに同期機能はありますか

glFinish() を使用してパイプラインをフラッシュできます。ただし、テクスチャ データにアクセスしようとすると、ドライバーは暗黙的にパイプライン フラッシュを発生させる必要があります。

于 2012-12-17T09:44:25.943 に答える
1

大量の数値データを持っていたときに OpenCL に進出する前は、数値データを rgba イメージを介してピクセル データとして使用して GPU にフィードし、それを操作していました。これは、数学的操作のために多数のセットにアプローチする優れた高速な方法です。 、ただし、変更を抽出できるようにバッファからCPUにコピーする必要があるため、この方法で操作する必要があるデータの量と、グラフィックRAMの量に依存します利用可能なコアの数など。

于 2012-12-17T13:25:40.667 に答える