Critical Section 戦略と Reduction 戦略の比較

omptest のパフォーマンスデータを収集し、omptest.1.er を開いたことを確認してください。 これらの作業がまだ済んでいない場合には、omptest サンプルのデータ収集を参照して実行してください。

ここでは、critsec_()reduc_() のパフォーマンスを比較します。CRITICAL SECTIONS 指令と REDUCTION を使用します。 この場合、1 対の do ループに埋めこまれている同じ代入文を並列化戦略で処理します。 その目的は、三次元配列のコンテンツを集計することです。

t = (a(j,i)+b(j,i)+c(j,i))/k
sum = sum+t
 
  1. 4 CPU 実験 omptest.1.er において、「関数」タブで critsum_()redsum_() を検索します。
  2. 2 つの関数の包括ユーザー CPU 時間を比較します。

    critsum_() は critical section 並行化戦略を使用するので、critsum_() の包括ユーザー CPU 時間は膨大です。 加算演算は 4 台の CPU すべてに分散されますが、t 値を sum に加算できる CPU は一度に 1 台だけです。 この種のコーディングコンストラクトの場合、これは並行化を有効に活用した戦略とは言えません。

    redsum_() の包括ユーザー CPU 時間は、critsum_() よりはるかに低い値です。 これは、redsum_() が reduction 戦略によって合計を評価するためです。 この戦略では、部分合計が各プロセッサに並行して累積され、この部分合計が sum に逐次加算されます。 この戦略は sum に対する逐次アクセスの必要性を最小限に抑えるので、利用可能な CPU を有効に活用できます。



著作権と商標について