複数のプロセス間で単一の GPU を共有したいアプリケーションがあります。つまり、これらの各プロセスは、同じ GPU を対象とする独自の CUDA または OpenCL コンテキストを作成します。Fermi のホワイト ペーパー [1] によると、アプリケーション レベルのコンテキスト切り替えは 25 マイクロ秒未満ですが、起動は GPU での起動時に効果的にシリアル化されるため、Fermi はこれにはうまく機能しません。Kepler のホワイト ペーパー [2] によると、複数の CUDA ストリーム、MPI プロセス、またはプロセス内のスレッドから最大 32 の同時接続を可能にする Hyper-Q と呼ばれるものがあります。
私の質問: 誰かがこれを Kepler GPU で試し、そのカーネルが個別のプロセスからスケジュールされたときに同時に実行されることを確認しましたか? これは単なる CUDA 機能ですか、それとも Nvidia GPU の OpenCL でも使用できますか? AMD の GPU は同様のものをサポートしていますか?
[2] http://www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdf