問題タブ [memory-bandwidth]
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++ - clCreateBuffer() は CPU に割り当てていますか?
私は C++ と OpenCL で (リカレント) ニューラル ネットワークを使用して、深層学習の低レベルの経験を積んでいます。現在、単純な順伝播カーネルを使用していますが、パフォーマンスが異常に低下しています。セットアップは、ほとんどのディープ ラーニング セットアップと同様にメモリ制限があり、大まかなプロファイリングに基づいて、取得しているメモリ帯域幅は約 2 GB/s です。clGetDeviceInfo() を呼び出すと、オンボード GPU (GTX 960m) を使用していることを確認できます。clCreateBuffer() で割り当てているメモリがどうにかして CPU に到達し、この記事で示唆されているように転送速度が約 2 GB/s になるのではないかと思います。割り当てているバッファーは、GPU に対して大きすぎないようにする必要があります。最大のものは 1024*1024*4 バイト = 4 MB (重み) で、そのうち 12 個だけが作成されます。
いくつかのコンテキストを含む clCreateBuffer() への呼び出し:
OpenCL がアクティブなデバイスではなく CPU にメモリを割り当てる場合、どのような理由がありますか? GPU にメモリを強制的に割り当てるにはどうすればよいですか?
編集: 簡単なテストで、メモリ帯域幅のこの値が得られました。これは、CPU と GPU の間で推奨される 5 ~ 6 GB/秒の帯域幅に従っています。
opengl - OpenGL でテクスチャをレンダリングするには、いくつのメモリ アクセスが必要ですか?
OpenGL を使用して、フレームをレンダリングするために必要なスループットを計算したいと考えています。
最悪のシナリオを想定すると、(1) フレームバッファと (2) 8 つのテクスチャがすべてフルスクリーンであり、テクスチャが画面全体を覆うことになります (ただし、テクスチャは平らな長方形である可能性が高く、1:1 のスケールではありません)。
したがって、各ピクセルは 9 つの RGB ピクセルから微調整され (すべてのテクスチャにある程度の透過性があると仮定)、理想的な世界では、正確に 9 ピクセルを読み取り、結果をフレームバッファに保存します。もちろん、フィルタリングを使用すると、より多くのピクセルを読み取ることができます (特に、テクスチャがまっすぐでない場合など)。
メモリ アクセス数の概算を計算するにはどうすればよいですか。ビデオ ボードに 40Gb/s の制限があると表示されている場合、全負荷をサポートするのに十分な帯域幅があることを確認できますか?
コメントで要求された詳細:
フレーム/テクスチャ サイズ: 3840 x 2160 (4K)
予想されるフレーム レート: 30 FPS
GPU: NVidia (少なくとも Maxwell や Pascal などの最新のもの)