問題タブ [gpgpu]
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 - cudaMemcpy が値のコピーに失敗する
cudaMemcpy を呼び出していますが、コピーは正常に返されますが、ソース値が宛先にコピーされていません。私は memcpy() を使用して同様の作品を書きましたが、それはうまくいきます。ここで何が欠けていますか?
..
CUDAErrors のいずれも問題を報告していませんが、2 番目の FAILURE が呼び出されます..?
cuda - CUDAまたはOpenCLのスパース配列
私は大きな配列(たとえば512K要素)をGPUに常駐させており、処理する必要があるのはごく一部の要素(たとえば、5Kのランダムに分散された要素-セットS)だけです。どの要素がSに属するかを見つけるアルゴリズムは非常に効率的であるため、集合Sから要素へのポインターまたはインデックスの配列Aを簡単に作成できます。
Sの要素に対してのみCUDAまたはOpenCLカーネルを実行する最も効率的な方法は何ですか?アレイA上でカーネルを実行できますか?これまでに見たすべての例は、連続した1D、2D、または3Dアレイを扱っています。間接参照の1つのレイヤーを導入することに問題はありますか?
opencl - OpenCL: SIMT 実行モデルに関する基本的な質問
「SIMT」アーキテクチャの概念と設計のいくつかは、私にはまだ不明です。
多くのスレッドがロックステップで実行される可能性があるため、私が見て読んだことから、分岐コード パスと if() を完全に使用するのはかなり悪い考えです。では、それは正確には何を意味するのでしょうか。次のようなものはどうですか:
パラメータ「フラグ」はすべてのワークユニットで同じであり、すべてのワークユニットで同じ分岐が取られます。では、GPU はすべてのコードを実行し、それにもかかわらずすべてをシリアライズし、基本的にまだ取られていないブランチを取るのでしょうか? それとも、もう少し賢く、すべてのスレッドが取られた分岐に同意する限り、取られた分岐のみを実行しますか? ここでは常にそうです。
つまり、シリアル化は常に行われますか、それとも必要な場合にのみ行われますか? 愚かな質問で申し訳ありません。;)
opencl - OpenCL、GPUカーネルからホストメモリへの直接アクセス
コピーせずにGPUから直接アクセスできるホストにメモリを割り当てる方法はありますか?
CUDAのcudaHostGetDevicePointerのように。
cuda - CUDA モデル - ワープサイズとは?
ワークグループの最大サイズとワープサイズの関係は?デバイスに 240 個の CUDA ストリーミング プロセッサ (SP) があり、次の情報が返されるとします。
CL_DEVICE_MAX_COMPUTE_UNITS: 30
CL_DEVICE_MAX_WORK_ITEM_SIZES: 512 / 512 / 64
CL_DEVICE_MAX_WORK_GROUP_SIZE: 512
CL_NV_DEVICE_WARP_SIZE: 32
これは、ストリーミング マルチプロセッサ (つまり、計算ユニット) ごとに 8 個の SP があることを意味します。では、ワープ サイズ = 32 はこれらの数値にどのように関連していますか?
opengl - GLSL フラグメント シェーダーで、特定のミップマップ レベルでテクセルにアクセスする方法は?
OpenGL を使用して、1 つの頂点シェーダーと 1 つのフラグメント シェーダーを組み合わせて GPGPU 計算を実行しています。異なるスケールで画像を計算する必要があります。ミップマップの生成は自動でハードウェア アクセラレーションが可能なため、ミップマップを使用したいと考えています。しかし、フラグメント シェーダーのミップマップ テクスチャにアクセスできません。
自動ミップマップ生成を有効にしました: glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
シェーダーで texture2DLod を使用してみましたが、うまくいきませんでした。単純に通常のテクスチャを与え続けました。メインプログラムで glTextureParameteri(GL_BASE_LEVEL, X) も使用してみましたが、何も変わりませんでした。
どうやってそれをしますか?
Linux を使用しています。私のグラフィック カードはかなり古い Nvidia Quadro です。これは、サポートされているすべての拡張機能を含む私のglxinfo出力です。
optimization - OpenGLES2.0のセルオートマトンのテクスチャフォーマット
簡単なアドバイスが必要です。
GPUでセルオートマトン(雲のリアルなアニメーションのためのシンプルで効率的な方法から)をシミュレートしたいと思います。ただし、ビット単位の操作をサポートしないOpenGL ES 2.0シェーダー(WebGL内)に制限されています。
このセルオートマトンのすべてのセルはブール値を表すため、セルごとに1ビットを格納するのが理想的でした。では、このデータをOpenGLのテクスチャ形式で表現する最も効率的な方法は何でしょうか。トリックはありますか、それとも単純なRGBAテクスチャに固執する必要がありますか?
編集:これまでの私の考えは...
現時点では、プレーンなGL_RGBA8、GL_RGBA4、またはGL_RGB5_A1のいずれかを使用することを考えています。
おそらく、GL_RGBA8を選択し、浮動小数点演算を使用して元のビットを抽出しようとすることができます。たとえば
x*255.0
、おおよその整数値を示します。ただし、個々のビットを抽出するのは少し面倒です(つまり、2で除算して数回丸めます)。また、精度の問題にも注意しています。GL_RGBA4を選択すると、コンポーネントごとに1.0または0.0を格納できますが、GL_RGBA8を使用して以前と同じトリックを試すこともできます。この場合、それはだけ
x*15.0
です。ビットを抽出するための操作は少なくなりますが、読み取られるテクスチャごとの情報は少なくなるため、高速になるか表示されないかはわかりません。GL_RGB5_A1を使用して、アルファチャネルが1ビットセルの状態を格納するボクセルごとの色などの追加情報とともにセルをパックできるかどうかを試してみることができます。
.net - openTK と openCL.NET
.NET で openCL を使い始めています。openTK は openCL.NET と比べてどうですか? どちらが優れていますか?
opengl - OpenCL がある場合の GLSL のポイントは何ですか?
これをタイトルの質問の完全な形式と考えてください: OpenCL は、将来 (他のデバイス プログラミングの中でも) 本格的な GPU プログラミングの共通標準になる可能性があるため、OpenGL 用にプログラミングするときは、将来的に保証される方法で、すべての GPU を使用しない理由はありません。 OpenCLでの操作?そうすれば、プログラム上の制限なしに GLSL の利点を得ることができます。
opengl - GLSLはSLIを利用していますか?OpenCLはありますか?複数のGPU用のGLSLまたはOpenCLのどちらが優れていますか?
OpenGLのGLSLはSLIセットアップをどの程度利用していますか?それは実行の時点でまったく利用されていますか、それともエンドレンダリングのためだけに利用されていますか?
同様に、OpenCLはSLIとは無関係であることを知っていますが、1つに複数のGPUがあると仮定すると、マルチプロセッシングのGLSLとどのように比較されますか?
一般的な変換やレイトレーシングなど、アプリケーションによって異なる可能性があるため、アプリケーションの種類による違いについての洞察を提供できますか?