コンパイルオプション  

CPU拡張命令による最適化オプション  

Intel Compilerを使用する際は、コンパイラオプションで最適化のレベルを指定しますが、Ver.9.xと10.x以降ではオプションの書式が変わっています。従ってコンパイル時のCFLAGSがコンパイラバージョンによって異なるので注意!
なお、CFLAGSは通常configureコマンドを実行するときに指定します。

Ver.9.x  

CFLAGS="-O3 -tpp7 -xWNB -axWNB -ip"

Ver.10.x および11.x互換  

CFLAGS="-O3 -xW -axT -mtune=pentium4 -parallel -no-prec-div -ip"

ただし-xW,-axTオプションはCPUによって異なるので要確認。
いろいろなオプションを入れたもの

CFLAGS="-O3 -xW -axT -openmp -parallel -no-prec-div -ipo"

ipoオプションはipよりも強力な最適化を行うみたいですが、プログラムサイズが大きくなるとコンパイルエラーが出ます。ほどほどのサイズのものなら試してみるといいかもしれません。なお、ipoオプションを付けることで計算が遅くなる場合もあるので確認した方がいいかもしれません(OpenMP版SHELXLはipoを付けた方が遅かったです)。

Ver.11.x  

おそらくver.10のオプションも利用可能ですが、ドキュメントによると変わっているようです。

CFLAGS="-O3 -xsse2 -axssse3 -parallel -no-prec-div -ip"

って感じになるようです。

-x
{sse4.2,sse4.1,ssse3,sse3,sse2,host}
Processor-specific targetingです。このオプションで指定した命令セットに対応したCPU上でしか走りません。
-m
{sse3,sse2,ia32}
non-intelプロセッサ上でも最適化されたコードを使えます。
-ax
{sse4.2,sse4.1,ssse3,sse3,sse2}
Automatic Processor Dispatchオプション。使用するプロセッサにより自動的に選択されるコードパスを追加します。複数指定の場合は-axsse4.1,sse3というようにします

つまり、-xオプションは指定された命令セットへの対応が必須で-axオプションは命令セットに対応していればそれが実行されるというオプションだと思います。例えば-xsse2 -axssse3ならPentuim4以降のプロセッサに対応し、Core2プロセッサの場合SSSE3命令セットも使用されるということなのでしょう。

対象となる命令セット
命令セットVer.11Ver.10内容
SSE4.2sse4.2Intel Core processor family. Core i7など
SSE4.1sse4.1Intel 45nm Hi-k next generation Intel Core microarchitecture
SSSE3ssse3TIntel Core2 processor family。SSE3の補完版
SSE3sse3P,O(non-intel)Pentium4 prescott。-msse3と併用できない
SSE2sse2N,W(non-intel)Pentium4。-msse2と併用できない
SSEKPentium IIIおよびPentium III Xeon, non-intel support SSE
HOSThost拡張命令セット使用せず。non-Intelでは-mオプションと同じ

現在のCPUがどの命令セットに対応しているかを確認するにはLinuxの場合、more /proc/cpuinfoで表示し、flagsの項目を見ればわかります。Intel Core2 Quadなら

flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm

こんな感じで、ssse3まで対応していることがわかります。

CPUと拡張命令セット(たぶん)  

CPU拡張命令
PentiumII
Celeron
MMX
PentiumIII
Celeron(533MHz-)
SSE
Pentium4 Willamette
Pentium4 Northwood
Celeron(1.7GHz-)
SSE2
Pentium4 Prescott
CeleronD
PentiumD
SSE3

その他のオプション  

オプション説明
-no-prec-div浮動小数点演算の効率化を行う。速度向上が見込めるが完全な IEEE 準拠の除算よりも多少精度が低い最適化が有効になる

リンカオプション  

オプション説明
-static-intelIntel Compilerのライブラリのみ静的リンクにする
-heap-arraysスタック領域が不足してセグメントエラーでプログラムが強制終了する時に使うとよい。
巨大な配列をヒープ領域に取ることでスタック領域不足を回避します(Ver.10以降)。
それ以前のバージョンでは
ifort -Wl,-stack_size,0x10000000,-stack_addr,0xc0000000 foo.f
という感じでスタック領域のサイズを指定するみたいです(未確認)。
参考:Intel® Fortran Compiler - Increased stack usage of 8.0 or higher compilers causes segmentation fault

外部サイト