Sun Studio 12: C++ ユーザーズガイド

x86 で特に注意すべき点

x86 Solaris プラットフォーム用にコンパイルするときは、注意すべき重要な問題がいくつかあります。

古い Sun 形式の並列化プログラムは x86 で使用できません。代わりに OpenMP を使用してください。古い並列化命令を OpenMP に変換する方法については、『Sun Studio 12: OpenMP API User’s Guide』を参照してください。

-xarchssesse2sse2a、または sse3 に設定してコンパイルしたプログラムは、その拡張機能と機能を提供するプラットフォームだけで実行する必要があります。

Pentium 4 互換プラットフォームの場合、Solaris 9 4/04 以降のリリースは SSE/SSE2 に対応しています。これより前のバージョンの Solaris は SSE/SSE2 に対応していません。-xarch で選択した命令セットが、実行中の Solaris OS で有効でない場合、コンパイラはその命令セットのコードを生成またはリンクすることができません。

コンパイルとリンクを別々に行う場合は、必ずコンパイラを使ってリンクし、-xarch 設定で適切な起動ルーチンがリンクされるようにしてください。

x86 の 80 バイト浮動小数点レジスタが原因で、x86 での演算結果が SPARC の結果と異なる数値になる場合があります。この差を最小にするには、 -fstore オプションを使用するか、ハードウェアが SSE2 をサポートしている場合は -xarch=sse2 でコンパイルします。

イントリンシック算術ライブラリ (sin(x) など) が異なるため、Solaris と Linux でも演算結果が数値的に異なる場合があります。