問題タブ [multiple-gpu]
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++ - 複数のGPUでcudaカーネルを実行することは可能ですか?
これはかなり単純な質問ですが、グーグルには答えがないようです。
私が知りたいのは、cudaを実行できる2つのgpuカード(同一)がある場合、カーネルはこれらのカードにまたがることができますか?それとも、どちらかのカードにバインドされていますか?つまり、cudaには、使用可能なGPUコアのセット全体、またはそれが実行されているカード上のコアのみが表示されます。
もしそうなら、それを実現するために私が知る必要がある特別なことはありますか、そして知っておく価値のあるcuda SDK以上の例はありますか?
もちろん、ターゲット言語はC /C++です。
cuda - CUDA 計算の SLI サポートがないシステムで 2 枚の NVIDIA GPU カードを使用できますか?
CUDA アプリケーション用の現在のシステムには、古い NVIDIA カード 8800 GTX が 1 枚あります。マザーボードを更新せずに、もう 1 枚カードを追加することを考えています。PCI-E スロットが 2 つあれば、その 2 つが機能するというのは本当ですか? それとも、SLI サポート対応の新しいマザーボードを購入する必要がありますか?
cuda - Hadoop のようなものがありますが、GPU に基づいていますか?
Hadoop のようなものがありますが、GPU に基づいていますか? 分散コンピューティングについて研究したいと思います。ご協力ありがとうございました!
イク、
opencl - 複数の GPU で openCL を使用する新しいアイデアはありますか?
私の質問は:
複数の GPU で openCL を使用するための新しい進歩 (または開発されたツール/ライブラリ) はありますか? 誰かが複数の GPU を使用する目的で openCL でコードを書きたい場合、それが可能であることは理解していますが、それらの間の通信を調整する方法は少し「原始的」であると言われています。私が知りたいのは、プログラマーと GPU 間の通信のすべての配置の間に抽象化のレベルを置くことができるものがそこにあるかどうかです。
私はかなり大きなラティスを使用した確率的シミュレーションに取り組んでおり、それらを異なる GPU に分割して、それぞれが必要に応じてコンピューティングと通信を行うことができるようにしたいと考えています。これを効率的な方法で記述するのは非常に難しいため、openCL を介して標準的な方法で行う低レベルの作業をすべて回避できれば、大きな助けになります。
ありがとう!
gpu - Sun Grid Engine (SGE) を使用した GPU リソースのスケジューリング
それぞれ 4 つの GPU を備えたマシンのクラスターがあります。各ジョブは 1 ~ 4 個の GPU を要求できる必要があります。問題は次のとおりです。SGE が各ジョブにどのGPU を使用すべきかを伝えてほしいのです。CPU とは異なり、GPU は、一度に 1 つのプロセスのみがアクセスする場合に最適に機能します。だから私はしたい:
私が遭遇した問題は、SGE を使用すると、各ノードに 4 ユニットの GPU リソースを作成できますが、どの GPU を使用するかをジョブに明示的に通知しないことです (1、3、または 1 を取得するだけです)。なんでもいい)。
4 つのリソース ( gpu0, gpu1, gpu2, gpu3
) を作成することを考えましたが、-l
フラグが glob パターンを取るかどうかはわかりません。また、SGE がどの GPU リソースを受け取ったかをジョブに伝える方法もわかりません。何か案は?
multiprocessing - OpenCL : Work-group を特定のデバイスにターゲット設定する
マルチプロセッサマシンを持っていると仮定します。ワークグループを特定のデバイス (プロセッサ) にバインドできますか? openCL でこのタスクを達成するための API はありますか?
concurrency - CUDAマルチGPU実行の並行性
GPUを使用する複数のGPUシステムでcudaカーネル関数を実行してい4
ます。同時に起動することを期待していましたが、そうではありません。各カーネルの開始時間を測定し、最初のカーネルが実行を終了した後に2番目のカーネルが開始します。したがって、GPUでカーネルを起動することは、単一のGPU4
よりも高速ではありません。1
どうすればそれらを同時に動作させることができますか?
これは私のコードです:
cuda - DirectXをGPU専用にし、CUDAを別のGPU専用にする方法は?
私のアプリケーションでは、GUIスレッドはDirect2Dを使用して画像を表示し、ユーザーがパンとズームを行えるようにします。別のスレッドはCUDAを使用して画像処理を行います。画像処理スレッドがGUIスレッドによって妨害されるのを防ぎ、処理を高速化するために、次の設定でCUDAコンピューティング用に別のグラフィックカードを追加することを選択しました。
- ディスプレイ用のNvidiaQuadro400(Direct2D、PCと一緒に販売、ディスプレイ用に十分)
- CUDAコンピューティング専用のNvidiaGT640(コアが多く、アプリケーションが実行する必要のある処理がより効率的で、BIOSでの表示が無効で、画面が接続されていないため、CUDAコンピューティング専用に追加されました)。CUDAスレッドには、このGT640のみを使用するためのコードが含まれています。
ただし、これは期待どおりに機能しませんでした。ユーザーが画像をパンすると、表示が連続して更新されるため、CUDAの実行時間は通常の20ミリ秒から約800ミリ秒に跳ね上がります。GPUView(この問題を調査してまったく習得していないことを発見しました)を使用して、CUDAスレッドがGPUへのコマンドをキューに入れる前にディスプレイの更新が完了するのを待っているように見えることがわかりました。その間、Direct2DはGPUをほとんどの時間未使用のままにします(16ミリ秒のVSync期間で1ミリ秒の作業)。Direct2Dへの呼び出しがすべてのGPUを16ミリ秒間ブロックしているように見えます。その後、GUIスレッドによってCUDAスレッドが枯渇します(ただし、これらのスレッドはGPUアクセス以外の方法で同期されません)。
したがって、質問は次のとおりです。
- 何が起こっているのでしょうか?
- Direct2Dを1つの特定のGPUでのみ実行するように強制することは役に立ちますか?
- それも可能ですか、それとも私は問題を間違った方法で取っていますか?
c++ - 複数の GPU 環境で単一のアプリケーション スレッドを使用した CUDA 5.0 コンテキスト管理
Web のほとんどのチュートリアル、ガイド、書籍、Q&A は CUDA 3 および 4.x に言及しているようです。そのため、特に CUDA 5.0 について質問しています。質問に...
2 つの CUDA デバイスを備えた環境用にプログラムしたいのですが、設計を単純にするために 1 つのスレッドのみを使用します (特にプロトタイプであるため)。次のコードが有効かどうかを知りたい:
同じスレッドでcudaMalloc(...)
交換が発生しても、テスト前の s が持続するかどうかを具体的に知りたいです。また、やcudaSetDevice()
などのコンテキスト依存オブジェクトでも同じことが起こるかどうかを知りたいです。cudaEvent_t
cudaStream_t
このスタイルのアプリケーションでマッピング エラーが発生し続けており、メモリ リークが不足していたり、API の使用法が間違っていたりすると、それが何であるかを見つけることができないため、私はそれを求めています。
注: 元のコードでは、すべての CUDA 呼び出しをチェックしています。コードを読みやすくするために、ここには入れませんでした。
opencl - 複数の GPU で OpenCL カーネルを実行していますか?
現在、1 つの GPU で複数のアルゴリズムを並列に実行するようにプログラミングしましたが、複数の GPU (たとえば 3 つ) で実行しようとすると、すべて同じ問題が発生します。問題は、1 つの GPU で実行されるコードが 3 つの GPU でまったく同じ時間実行されることです (高速ではありません)。より多くのデータを使用して実行しようとしましたが、別のタスクを実行しようとしましたが、何も役に立ちませんでした。最後に、要素の合計などの最も簡単なタスクを実行しようとしても、このひどい間違いが発生しました。そのため、特定のアルゴリズムの問題ではないと考えており、自分のコード (または、複数の GPU でコードを並列化するアプローチにも) に誤りがあると感じています。
私の Parallel.cpp クラスのヘッダー ファイルは次のとおりです。
初期化メソッド init は次のとおりです。
カーネルを実行するメソッドは次のとおりです。
この質問をstackoverflowに投稿する前に、私はこの問題と2〜3週間戦っていましたが、今は本当に誰かの助けが必要なので、考えや回答を高く評価します!