CodeZine(コードジン)

特集ページ一覧

インテルプロセッサー向け並列化プログラミング
― 対称行列の三重対角化

インテルソフトウェア開発製品による並列化プログラミング (1)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/03/02 00:00
目次

コンパイラーによる自動並列化

 コンパイラーによる自動並列化を試します。先ほどと同じコマンドで、自動並列化のためのオプションである/Qparallelを追加してコンパイルします。

 できたプログラムの引数に2000を渡し実行してみると、実行時間は18.2秒とほとんど変化がありません。

 実行時間に変化がないのは、コンパイラーの並列化がうまく行われていないためです。というのも、デフォルトのオプションとして/Qpar-report1が指定されているので、コンパイラーが自動並列化を行うとコンパイル・メッセージとして並列化を行ったことが表示されるのですが、今回のコンパイルでは並列化のメッセージが出力されていないので並列化が行われてないことが分かります。

 ここで、/Qpar-reportオプションの引数を変更して、なぜ並列化できないのかを調べることができます。図3に/Qpar-report2を指定したときに、コンパイラーが出力する並列化レポートのメッセージを示します。並列化レポートのメッセージの意味は次のようになっています。

  • 「計算量が不足しています。」というのは、コンパイラーが並列化するのに十分な計算量がなく並列化の効果が少ないと判断したこと示しています。
  • 「並列依存関係が存在します。」というのは、並列化することによってプログラムの実行結果が正しくなくなるとコンパイラーが判断した依存関係が存在することを示します。
図3 インテルコンパイラーの並列化レポートの出力メッセージ
tridiag.cc(21): (col. 3) remark: ループは並列化されませんでした: 並列依存関係が存在しています。.
tridiag.cc(25): (col. 5) remark: ループは並列化されませんでした: 計算量が不足しています。.
tridiag.cc(39): (col. 5) remark: ループは並列化されませんでした: 計算量が不足しています。.
tridiag.cc(46): (col. 5) remark: ループは並列化されませんでした: 計算量が不足しています。.
tridiag.cc(48): (col. 7) remark: ループは並列化されませんでした: 計算量が不足しています。.
tridiag.cc(51): (col. 7) remark: ループは並列化されませんでした: 計算量が不足しています。.
tridiag.cc(59): (col. 5) remark: ループは並列化されませんでした: 計算量が不足しています。.
tridiag.cc(65): (col. 5) remark: ループは並列化されませんでした: 計算量が不足しています。.
tridiag.cc(70): (col. 5) remark: ループは並列化されませんでした: 並列依存関係が存在しています。.
tridiag.cc(71): (col. 7) remark: ループは並列化されませんでした: 並列依存関係が存在しています。.

 ここでは、/Qpar-thresholdオプションを使って並列化スレッショルド(しきい値)の変更を行います。このオプションは引数として0から100までの数字を指定するもので、デフォルトは100です。この数字が低いほどコンパイラーはより少ないループ回数で並列化の効果があると判断します。0を指定すると、コンパイラーは並列化可能なループを常に並列化します。ここでは、オプションに/Qpar-threshold0を追加してコンパイルしてみます。作成されたプログラムに引数として2000を渡すと実行時間は15.4秒となり、並列化の効果を確認できました。ただ、このオプションを指定しても「並列依存関係が存在する」と判断されたループの並列化は行うことができません。

 ここで指定したコンパイラーオプションを表2にまとめました。

表2 自動並列化に関するコンパイラーオプション
オプション 意味
/Qparallel 自動並列化を有効にする。
/Qpar-report[n] 並列化レポートの出力レベルを指定する。
/Qpar-threshold[n] 並列化レベルを指定する。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:インテルソフトウェア開発製品による並列化プログラミング

著者プロフィール

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5