2016年1月2日土曜日

SSE と AVX

PSXE2016 for Fortran の変更点が乗っているかと思い、入門ガイドを眺めておりました。

変更点は載っておりませんでしたが、初心者の私にとってはちょうど良い内容の項目がいくつかありました。目を引いたのは自動ベクトル化の箇所。

SIMD 演算でどのような命令が使用されているかに触れられていたのですが、今まで深く考えたことはなかったですね。自分で自分用に(開発環境 = 実行環境として)コンパイルしていますので、自動ベクトル化で問題なかった訳です。
使用しているハイスペック PCの CPU は旧世代の Core i7 ですので、SSE4.2までです(表現が矛盾していますが)。稀に、他支店の後輩にコンパイルしたものを送付することがあるのですが、AVX2 まで対応している CPU を使用していたと思います。そうすると、こちらの開発環境における自動ベクトル化では十分な機能を発揮できません。計算がどの程度早くなるのか不明ですが。
(iSUS の HP に良い記事がありました↓)
http://www.isus.jp/article/compileroptimization/performance-tools-for-software-developers-intel-compiler-options/

ちなみに、手元にあったソースを試すと、以下の通り。このソースではベクトル化に効果が出ませんでした(計算が軽いので、入出力に時間を取られているのでしょう)。

Type Time
normal 0:00:54
SSE4.2 0:00:52
AVX 0:00:53
AVX-OpenMP 0:00:58
AVX-OpenMP-O3 0:00:59



プロが傍にいませんので手探り状態です。が、入門ガイドに載っている程度の内容は、常識として身に付けておきたいものです。

0 件のコメント:

コメントを投稿