OpenACCIntro
15/27 parallelプラグマとloopプラグマ

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



【ノート】
ここでは、計算を分散するフォーループの前に、ループプラグマを置きます。 よって、フォーループの計算の各要素ごとにスレッドを起動します。具体的には10個のスレッドを生成します。 ★ そこで、0番目のスレッドは、0番目の配列要素に対する計算を行ない、 1番目のスレッドは、1番目の配列要素に対する計算を行なうなど、計算を分散することになります。 ★ つまり、並列化したいフォーループの前にループプラグマを挿入することにより、 そのフォーループの計算が分散され、高速化されることになります。 オープンACCの仕様では、並列化は3階層に分かれ、 それぞれギャングとワーカーとベクターと呼ばれます。一般に、どの階層にどのような並列度を割り当てるかは、 ハードウェアを意識した割り当てが望ましいとされます。 なお、全体のスレッド数は、ギャングの数とワーカーの数とベクターの数を掛け算したあたいになります。 よって、効果的に並列化する場合には、この部分をよく考える必要がありますが、 この資料では、詳細にはふれないことにします。 このように、並列化の指示は、パラレルプラグマとループプラグマの組合せだけで可能となるので、極めて簡単です。しかし、並列化の可否関して、注意すべきて点があるので、次のスライドで説明いたします。