OpenACCIntro
21/27 forループの並列化

【テロップ】
※各テロップ文字をクリックすると該当の場所がピンポイントで閲覧できます。



【ノート】
データプラグマは、その指定された範囲において、GPUメモリにデータをどのように転送するかを指定することができます。ここで示した配列は3個あり、配列xは、並列計算の前に、CPUメモリからGPUメモリへデータ転送を行い、並列計算後、CPUメモリへデータを戻すことになります。いっぽう、配列yは、計算前に、CPUメモリからGPUメモリへデータ転送を行いますが、CPUメモリにデータを戻す必要はありません。さらに、配列zは、並列計算の中であたいが格納されるので、並列計算後に、GPUメモリからCPUメモリへデータ転送するだけでよいことが分かります。 よって ★ 並列計算前に、配列xと配列yをCPUメモリからGPUメモリへデータ転送し、 ★ GPU内で最初のフォーループの並列計算を行ないます。 ★ さらに、 ★ 2個目のフォーループの並列計算を行ない、 ★ 計算結果の配列Zを、GPUメモリからCPUメモリにデータ転送を行い、 ★ さらに、配列xのデータ転送を行います。 ★ よって、データプラグマを使う前はデータ転送は6かしょありましたが、データプラグマで最適化したために データ転送は、合計で4回で済むことになりました。 この後のスライドで、データプラグマで指定するデータ転送方法について説明します。