1

MPI-CPU ノードと単一 GPU 間の「データ転送」アルゴリズムを改善したいと考えています。

NUMPROCS ノードでは、各 MPI ノードに Ntot/NUMPROCESS float4 の 1D 配列があります。

私のアルゴは非常に単純です。

1) 1D 配列はマスターノード上の大きな配列 (サイズ Ntot) に集められます (MPI_GATHER)。

2) マスター ノードでは、大きな配列が cudaMemcpy 関数を介して GPU に送信されます。CUDA カーネルは、マスター ノードで起動されます。

最初のステップを回避することは可能ですか?つまり、各 MPI ノードはその配列を cudaMemcpy 経由で送信し、連結は GPU のメモリ上で直接行われます。

4

1 に答える 1

1

MPI-CPU ノードは GPU と同じ物理ホスト上で実行されているため、最初のステップを回避できます。

非同期関数CudaMemcpyAsync()を使用して、2 番目のステップを実行できます。関数にはストリーム パラメータがあります。memcpyこれは、GPU コンピューティングを行うと同時に役立ちます。

各プロセスでは、CudaSetDevice(devicenumber)選択した GPU を制御するために使用できます。

詳細については、CUDA マニュアルを参照してください。

于 2012-09-20T08:07:56.370 に答える