私のCUDA開発では、16コアのマシンと16個のSMを持つGTX 580 GPUを使用しています。私が行っている作業のために、私は16のホストスレッド(各コアに1つ)と1つのスレッドごとに1つのカーネルを起動し、それぞれ1つのブロックと1024のスレッドを持つことを計画しています。私の目標は、16個のSM上で16個のカーネルを並行して実行することです。これは実現可能か実行可能なのか?個々のCUDAカーネルを起動する複数のホストスレッド
私は独立した文脈についてできるだけ読み込もうとしましたが、利用可能な情報があまりにも多くないようです。私が理解しているように、各ホストスレッドは独自のGPUコンテキストを持つことができます。しかし、独立したコンテキストを使用するとカーネルが並行して動作するかどうかはわかりません。
すべての16のホストスレッドのすべてのデータを1つの巨大な構造体に読み込み、それをGPUに渡して1つのカーネルを起動できます。ただし、コピーが大きすぎるとアプリケーションが遅くなります。
複数のコンテキストで同時に1つのGPUを使用することはできません。したがって、これは機能しません。 – talonmies
ありがとうございます。私はそれを受け入れることができるように答えとして上記を入れてくださいできますか? – gmemon
@gmemon CUDA 5.5で複数のコンテキストを作成して実行するには、下記の私のコメントを参照してください。 16SMで16のカーネルを正常に実行しましたか?あなたの解決策は何でしたか? – Tariq