OpenACCIntro
22/27 dataプラグマ(copy)

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



【ノート】
コピーというのは、指定された範囲の前後でデータ転送を行なうことを指示します。つまり、並列計算前に、CPUメモリからGPUメモリにデータ転送を行い、並列計算後に、反対方向のデータ転送を行います。 このプログラムにおいては、配列xがその対象となります。 最初のフォーループ及び2個目のフォーループで、配列xは読み出しを行われ、最初のフォーループで更新もされます。よって、読み出し及び書き込みの両方があるので、CPUメモリとGPUメモリ間でデータの送受信が必要になります。 ★ まず、CPUメモリ上に、初期化された配列xがあり、 ★ それを並列計算前に、 ★ GPUメモリへ転送します。 ★ さらに、配列xは、最初のフォーループで更新され、書き換えられます。 ★ よって、並列計算の後に、GPUメモリからCPUメモリへデータ転送され、 ★ CPUメモリの配列xのあたいが更新されます。 なお、このプログラムでは、最後に、配列xの要素がプリントエフ文で表示されるので、並列計算後にCPUメモリへデータ転送しましたが、この表示がなければ、CPUメモリを更新する必要はありません。