問題タブ [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.
java - ベクトル計算を高速化するための Java ライブラリはありますか?
ベクトル (およびおそらく行列も) を使用して高速な計算を実行できる Java ライブラリを探しています。
高速とは、GPU 処理や SSE 命令を利用することを意味します。できるだけポータブルなものを見つけることができるかどうか疑問に思っています。JVM がハードウェアの厚い抽象化レイヤーを提供することは認識しています。
私はJCUDAに出くわしましたが、欠点があります.Nnvidiaグラフィックカードのないコンピューターでは、エミュレーションモードで実行する必要があります(したがって、期待どおりに効率的ではないと思います)。すでに試した人はいますか?
c++ - GPU 共有メモリ バンクの競合
銀行の競合がどのように発生するかを理解しようとしています。
グローバル メモリにサイズ 256 の配列があり、1 つのブロックに 256 のスレッドがあり、配列を共有メモリにコピーしたい場合。したがって、すべてのスレッドが 1 つの要素をコピーします。
この単純なアクションで銀行の競合が発生しますか?
配列のサイズがスレッドの数よりも大きいと仮定して、これを使用してグローバル メモリを共有メモリにコピーします。
上記のコードは銀行の競合を引き起こしますか?
matlab - ループ最適化のための CUDA および MATLAB
CUDA を使用して、MATLAB で記述されたコードの最適化を試みます。私は最近 CUDA のプログラミングを始めましたが、それがどのように機能するかについての一般的な考えを持っています。
たとえば、2 つの行列を足し合わせたいとします。CUDA では、スレッドを使用して結果行列の各要素の答えを計算するアルゴリズムを作成できました。しかし、この手法はおそらく MATLAB が既に行っている手法と似ているのではないでしょうか? その場合、効率は技術に依存せず、ハードウェア レベルのみに起因するのではないでしょうか。
gpu - 汎用GPUを利用する人気のあるソフトウェアはどれですか?
したがって、ソフトウェア開発がGPUに移行することについてはよく耳にしますが、GPUでの計算を実際に活用する人気のあるソフトウェアを知っている人はいますか?
opengl - OpenGLを使用したオーディオのミキシング
OpenGLを使用して2つ(またはそれ以上)の16ビットオーディオストリームをミキシングしたいのですが、少し助けが必要です
基本的に私がやりたいのは、オーディオデータをテクスチャに入れてフレームバッファオブジェクトに描画してから読み戻すことです。これは問題ではありませんが、正しい結果が得られる方法でデータを描画することは、もう少し問題があります。
基本的に2つの質問があります。
- 描画によってデータを混合するには、ブレンディング(alpha = 0.5)を使用する必要がありますが、結果にはアルファチャネルが含まれていてはなりません。したがって、たとえばRGB形式のフレームバッファにレンダリングした場合、アルファブレンディングは期待どおりに機能し、結果のアルファはfboに書き込まれませんか?(レンダリングパスごとにfboを読み戻す必要はありません)
テクスチャ|sR| sG | sB |
フレームバッファ(前)| dR | dG | dB |
フレームバッファ(後)| dR * 0.5 + sR * 0.5 | dG * 0.5 + sG * 0.5 | dB * 0.5 + sB * 0.5 |
- オーディオサンプルは、符号付き16ビット整数値です。この方法で署名された計算を行うことは可能ですか?または、最初に値をCPUで符号なしに変換し、描画してから、CPUで再度符号を付ける必要がありますか?
編集:
少しわかりませんでした。私のハードウェアはOpenGL3.3ハードウェアに制限されています。私は他のものにOpenGLを使用しているので、CUDAやOpenCLは使用したくないです。
各オーディオサンプルは別々のパスでレンダリングされます。つまり、フレームバッファにすでにレンダリングされているものと「ミックス」する必要があります。問題は、ピクセルシェーダーからの出力がフレームバッファーにどのように書き込まれるかです(私が知る限り、このブレンディングはプログラム可能なシェーダーからはアクセスできず、glBlendFuncを使用する必要があります)。
EDIT2:
各オーディオサンプルは異なるパスでレンダリングされるため、シェーダーで一度に使用できるオーディオサンプルは1つだけです。つまり、FBOに蓄積する必要があります。
ではなく
c++ - PBOをサポートする高レベルのOpenGLライブラリ
GPUで画像処理を行いたいのですが、使用する適切なライブラリを探しています。私がやりたい操作は、スケーリング、合成、色空間変換、および変換です。
私はOpenCLとCUDAを検討しましたが、必要な操作のほとんどはすでに(直接的または間接的に)OpenGLに実装されているため、OpenGLの方が適切だと思います。
OpenGLを使用して必要な機能をすでに正常に実装しましたが、信頼性と保守性を向上させるために、高レベルのサードパーティのOpenGLライブラリを使用したいと思います。
ただし、これまでに見つけたすべての高レベルOpenGLライブラリは、デバイスとホスト間およびその逆の高速転送にPBOを使用していません。
これまで、Shallows(pboなし、維持されていませんか?)とSFML(pboなし、維持されています)を見てきました。
簡単にメンテナンスできるシンプルな画像処理を実装するための適切なツールの提案を探しています。
c - Conway のライフ ゲームを CUDA 用に最適化するには?
コンウェイのライフ ゲーム用に、次の CUDA カーネルを作成しました。
エラー/最適化を探しています。並列プログラミングは私にとってまったく新しいものであり、それを正しく行う方法がわからない。
残りは、入力配列から CUDA 配列にバインドされた 2D テクスチャ inputTex への memcpy です。出力は、グローバル メモリからホストに memcpy されてから処理されます。
ご覧のとおり、スレッドは単一のピクセルを処理します。一部の情報源は、スレッドごとに行以上を実行することを提案しているため、それが最速の方法であるかどうかはわかりません。私が正しく理解していれば、NVidia自身は、スレッドが多いほど良いと言っています。これについては、実務経験のある方からのアドバイスをいただければ幸いです。
graph-theory - グラフ上の 2 つのノード間のすべての可能なパスの GPU ベースの検索
私の研究では、Migliore、Martorana、および Sciortino によるアルゴリズムを広範囲に使用して、考えられるすべての単純なパス (つまり、ノードが 2 回以上遭遇しないパス) をグラフ内で見つけます: An Algorithm to find All Paths between Two Nodes inグラフ. (このアルゴリズムは本質的に深さ優先検索であり、本質的に直感的に再帰的ですが、著者は非再帰的なスタックベースの実装も提示しています。) そのようなアルゴリズムを GPU に実装できるかどうか知りたいです。現時点では、この問題で実際の並列性を確認するのに苦労しています。たとえば、スレッドの監視とディスパッチのコストによって、(ハードウェア スレッドによる) 協調グラフ検索が非常に困難になる場合があります。あるいは、グラフが分割され、検索のために個々のハードウェア スレッドに割り当てられている場合、分割統治戦略が機能する可能性があります。ただし、(1) グラフを分割する方法、(2) サブタスクを定式化する方法、および (3) 分割での検索結果を結合する方法を理解する必要があります。
iphone - iPhone で GPU 加速計算 (GPGPU) を実行するためのリソースはありますか?
iOS (iPhone 3GS および 4 用) で GPU 高速化計算を行うことに興味があります。残念ながら、どちらのデバイスも OpenCL をサポートしていないため、プログラム データをグラフィックス データとして表現し、OpenGL ES 2.0 プログラマブル シェーダー (頂点とフラグメント) を使用して作業を行うしかないようです。役立つリソースを推奨できる人はいますか? サンプルコードは聖杯です。
security - 信頼できない GPGPU コード (OpenCL など) - 安全ですか? どんなリスク?
一般的な CPU で信頼されていないコードを実行するには、サンドボックス、偽のルート、仮想化など、多くのアプローチがあります。
GPGPU の信頼できないコード (OpenCL、cuda、または既にコンパイル済みのもの) はどうですか?
そのようなサードパーティの信頼できないコードを実行する前に、グラフィックス カードのメモリがクリアされていると仮定すると、
- セキュリティリスクはありますか?
- どのようなリスクがありますか?
- それらを防ぐ方法はありますか?
- サンドボックス化はgpgpuで可能/利用可能ですか?
- 多分バイナリインストルメンテーション?
- 他のテクニック?
PS 私は、高レベルの gpgpu プログラミング言語のセキュリティよりも、gpu バイナリ コード レベルのセキュリティに関心があります (ただし、これらのソリューションも同様に歓迎されます)。つまり、gpu オペコード (別名マシン コード) への参照は大歓迎です。