PGIコンパイラでATLASの代わりにIntel MKLを使う

出典: トータル・ディスクロージャ・サイト(事実をありのままに)

 ソースコード付きのソフトウェアで、build方法が、コンパイラはPGI Fortranで、BLASライブラリはATLASを使うものがあります。こういったソフトウェアをハードウェアの変更無しで、少しでも高速化したいというのは自然な発想でしょう。そういった場合、コンパイラやライブラリを変更するだけで、高速化される場合があります。コンパイラやライブラリを既にお持ちであれば、build時間の投資だけで、高速化が達成されるかもしれません。高速化の1つの方法としては、コンパイラをIntel Fortranに、ATLASをIntel MKLに代えるというのが一般的でしょう。

 しかし、コンパイラをPGI FortranからIntel Fortranに代えると、makefileの書き換えや場合によってはソースコードの書き換えが必要になり、結構手間がかかる場合があります。一方、PGI Fortranはそのまま使い、ATLASをMKLに代えるだけという発想もあります。makefileの中のlinkのオプションをちょっと書き換えるだけですみますので、ほとんど手間いらずです。これは、Intel MKLが10.1以降構造が変わり、PGIコンパイラと楽にlinkできるようになったから生まれた、新しい発想といえるでしょう。詳しくは株式会社ソフテックの加藤さんの記事をお読みください。記事はこちら。 加藤さん、どうもありがとうございます。

 また、加藤さんの記事でも触れられている、Intel® Math Kernel Library Link Line Advisorこちらを使って、コンパイラのコマンドライン引数を決めると、いろいろ調べなくてもすむので、時間の節約になります。私もこれを使いました。

 実際のlinkではmakefileを書き換えて、以下のように実行されるようにしました。

set MKLDIR = "/opt/intel/Compiler/11.1/056/mkl/lib/em64t"
pgf77 途中省略 -o ?.exe ?.o ?.a -Wl,--start-group $MKLDIR/libmkl_intel_ilp64.a $MKLDIR/libmkl_pgi_thread.a $MKLDIR/libmkl_core.a -Wl,--end- group -mp -lpthread 

この結果、実行時間は1割強短縮されました。もっと短縮されるかと思っていたのですが、ちょっと意外でした。まあ、CPUのクロックを1割上げても計算時間は1割短縮できませんので、クロックを2割程度上げたのと同等の効果でしょうか。手間はほとんどかかりません。そう考えると費用対効果は高いといえるかもしれません。手間暇を掛けずに高速化したい場合は、この方法を試してみては如何でしょうか。

--ケンちゃん 2010年3月19日 (金) 12:57 (JST)  


この記事へのコメントをお寄せください

  • サイトへの書き込みに差し支えございましたら トータルディスクロージャーサイトサポート係へメールをお送りください
  • トータル・ディスクロージャ・サイトに投稿された文章と画像は、すべてその著作権がHPCシステムズ株式会社に帰属し、HPCシステムズ株式会社が著作権を所有することに同意してください。
  • あなたの文章が他人によって自由に編集、配布されることを望まない場合は、投稿を控えてください。
  • コメントを書き込む場合は名前にひらがなを織り交ぜてください。
  • あなたの投稿する文章と画像はあなた自身によって書かれたものであるか、パブリック・ドメインかそれに類する自由なリソースからの複製であることを約束してください。あなたが著作権を保持していない作品を許諾なしに投稿してはいけません!

<comments hideform="false" />


Comments

ノート:PGIコンパイラでATLASの代わりにIntel MKLを使う

個人用ツール