更新日付: 2004 年 5 月 26 日

Sun Studio 9: Fortran 95 Readme


目次

  1. はじめに
  2. Sun Studio 9 Fortran 95 について
  3. 新規および変更された機能
  4. ソフトウェアの修正事項
  5. 問題点と回避策
  6. 制限事項と互換性の問題
  7. 記述の誤りの訂正
  8. Fortran 95 の必須パッチ
  9. ライブラリの再配布について

 


A. はじめに

この文書では、Sun[tm] Studio 9 Fortran 95 コンパイラ、f95 に関する情報を提供しています。記載内容は、このリリースで導入された新機能とソフトウェアの修正事項、既知の問題点、制限事項、互換性の問題などです。また、本書の記載内容はソフトウェアマニュアルの情報を更新ないし補充します。

製品マニュアル

注 - Compiler Collection ソフトウェアがデフォルトの /opt 以外のディレクトリにインストールされている場合は、ご使用のシステムにおける実際のパスを、システム管理者に確認してください。


B. Sun Studio 9 Fortran 95 について

この文書は、今回のリリースのバージョン 8.0 の f95 で新たに追加された機能と変更された機能に関する最新情報を提供します。

バージョン 8.0 の Fortran 95 コンパイラ f95 は、Sun Studio 9 のコンポーネントの 1 つとしてリリースされ、SPARC(R) プラットフォームおよび x86 プラットフォームの Solaris[tm] オペレーティングシステム (Solaris OS) のバージョン 8、9、および 10 で使用できます。

このコンパイラの前のバージョンは 7.1 で、Sun Studio 8 とともにリリースされました。


C. 新規および変更された機能

ここでは、このリリースの Fortran 95 で新たに追加された機能と変更された機能を説明しています。 各コンパイラオプションの詳細は、『Fortran ユーザーズガイド』と f95(1) のマニュアルページを参照してください。

  1. x86 プラットフォーム版 Solaris OS 用の f95
  2. 実行時パフォーマンスの向上
  3. Fortran 2003 のコマンド行組み込み関数
  4. f95 コマンド行オプションの追加および変更
  5. デフォルトの SPARC アーキテクチャを v8plus に変更
  6. OpenMP: 最大スレッド数を増加
  7. OpenMP: 変数の自動スコープ
  1. x86 プラットフォーム版 Solaris OS 用の f95
    このリリースの Sun Studio では、x86 プラットフォーム版 Solaris OS で Fortran 95 コンパイラが使用できるようになっています。-xtarget 値として generic native 386 486pentium pentium_pro pentium3pentium4 のいずれかを使ってコンパイルし、Solaris x86 プラットフォーム用の実行可能ファイルを生成できます。x86 プラットフォームでのデフォルトは -xtarget=generic です。

    x86 プラットフォーム版の場合、次の f95 機能はまだ実装されていません。使用できるのは、SPARC プラットフォーム上だけです。

    • 区間演算 (コンパイラオプション -xia および -xinterval)
    • Quad (128 ビット) 演算 (REAL*16 など)
    • IEEE 組み込みモジュール の IEEE_EXCEPTIONS、IEEE_ARITHMETIC、および IEEE_FEATURES
    • sun_io_handler モジュール
    • -autopar-parallel-explitipar-openmp などの並列化オプション

    次の f95 コマンド行オプションは、x86 プラットフォームでのみ使用できます。SPARC プラットフォーム では使用できません。

    • -fprecision、-fstore、および -nofstore

    次の f95 コマンド行オプションは、SPARC プラットフォームでのみ使用できます。x86 プラットフォーム では使用できません。

    • -xcode、-xmemalign、-xprefetch、-xcheck、-xia、-xinterval、-xipo、-xjobs、-xlang、-xlinkopt、-xloopinfo、-xpagesize、-xprofile_ircache、-xreduction、-xvector、-depend、-openmp、-parallel、-autopar、-explicitpar、-vpara、-XlistMP

    また、x86 プラットフォーム版の場合、-fast を指定することによって -nofstore が追加されます。

    x86 プラットフォームでのコンパイルについて

    • x86 プラットフォームにおける -xtarget 値と展開
      x86 プラットフォームの場合は、2 つの -xtarget 値が新たに使用できるようになっています。
      -xtarget=pentium3 は、-xarch=sse -xchip=pentium3 -xcache=16/32/4:256/32/4 に展開されます。
      -xtarget=pentium4 は、-xarch=sse2 -xchip=pentium4 -xcache=8/64/4:256/128/8 に展開されます。

    • 次の -xarch および -xchip 値が新たに追加されています。
      -xchip=pentium3 - Pentium 3 プロセッサ用に最適化します。
      -xchip=pentium4 - Pentium 4 プロセッサ用に最適化します。
      -xarch=sse は、pentium_pro 命令セットに sse 命令セットを追加します。
      -xarch=sse2 は、pentium_pro 命令セットに sse2 命令セットを追加します。

    • -fns は、pentium3 または pentium4 プロセッサでのみ有効です。-xarchssesse2 でない場合、-fns=yes は無視されます。-xarchssesse2 の場合、SSE および SSE2 浮動小数点演算命令に対し、-fns=yes は、アンダーフローをゼロにフラッシュし (FTZ)、非正規化オペランドをゼロとして扱う (DAZ) ことを意味します。-fns=yes は、従来の x86 浮動小数点演算命令には影響しません。

    • x86 に関する特記事項
      Solaris x86 SSE/SSE2 Pentium 4 互換プラットフォームで動作するよう -xarch={sse | sse2} を使ってコンパイルしたプログラムは、SSE/SSE2 対応のプラットフォームでのみ実行する必要があります。SSE/SSE2 に対応していないプラットフォームでそうしたプログラムを実行すると、セグメント例外が発生したり、明示的な警告メッセージなしに不正な結果が発生することがあります。SSE/SSE2 でコンパイルされたバイナリが SSE/SSE2 に対応していないプラットフォームで実行されることのないようにするための OS およびコンパイラに対するパッチが、後日提供される可能性があります。

      Pentium 4 互換のプラットフォームの場合は、Solaris 9 update 6 以降の OS リリースは SSE/SSE2 に対応しています。これより前のバージョンの Solaris OS は SSE/SSE2 に対応していません。

      このことは、.il インラインアセンブリ言語関数を使用しているプログラムや、SSE/SSE2 命令を利用している __asm() アセンブラコードにも当てはまります。

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

      x86 の浮動小数点レジスタのサイズが 80 バイトであるため、x86 上と SPARC 上での算術演算結果が異なることがあります。こうした違いが出ないようにするには、-fstore オプションを使用してください。あるいは、ハードウェアが SSE2 をサポートしている場合は、-xarch=sse2 を付けてコンパイルしてください。

  2. 実行時パフォーマンスの向上
    今回のリリースでは、多くのアプリケーションの実行時パフォーマンスが向上するとみられます。最良の結果を得るには、最適化レベルを高くして (-xO4 または -xO5)、コンパイルしてください。これらのレベルでは、コンパイラが内部手続きや、形状引き継ぎ、割り付け、あるいはポインタ引数を持つ手続きをインライン化することができます。
  3. Fortran 2003 のコマンド行組み込み関数
    Fortran 2003 規格草案では、コマンド行引数および環境変数を処理するための新しい組み込み関数が紹介されています。今回のリリースの f95 コンパイラには、これらの組み込み関数が実装されています。新しい組み込み関数は以下のとおりです。
    • GET_COMMAND(コマンド, 長さ, ステータス)
      コマンド で、プログラムを呼び出しコマンド行全体を返します。
    • GET_COMMAND_ARGUMENT(コマンド, 値, 長さ, ステータス)
      でコマンド行引数を返します。
    • GET_ENVIRONMENT_VARIABLE(名前, 値, 長さ, ステータス, トリム名)
      環境変数の値を返します。
  4. f95 コマンド行オプションの追加および変更
    このリリースの f95 では、次のコマンド行オプションが新しく追加されています。詳細は f95(1) のマニュアルページを参照してください。

    • -xipo_archive={ none | readonly | writeback }
      クロスファイル最適化でアーカイブ (.a) ライブラリを取り込むことができます (SPARC のみ)。

      -xipo_archive=none
      アーカイブファイルを処理しません。

      -xipo_archive=readonly
      実行可能ファイルを生成する前に、アーカイブライブラリ (.a) に存在するオブジェクトファイル (-xipo でコンパイルしたファイル) を使ってリンカーに渡すオブジェクトファイルを最適化します。

      -xipo_archive=writeback
      実行可能ファイルを生成する前に、アーカイブライブラリ (.a) に存在するオブジェクトファイル (-xipo でコンパイルしたファイル) を使ってリンカーに渡すオブジェクトファイルを最適化します。コンパイル中に最適化されたライブラリに含まれるオブジェクトファイルはすべて、その最適化されたバージョンに置き換えられます。

      -xipo の値が指定されていない場合、コンパイラは -xipo_archive=none とみなします。

    • -xprefetch_auto_type=[no%]indirect_array_access
      間接アクセスされるデータ配列に対して間接プリフェッチを生成します (SPARC のみ)。

      [no%]indirect_array_access
      直接メモリーアクセスに対してプリフェッチが生成されるのと同じ方法で、-xprefetch_level=[1|2|3] オプションが指示するループに対して間接プリフェッチを生成します (または生成しません)。

      -xprefetch_auto_type の値が指定されていない場合、コンパイラは -xprefetch_auto_type=[no%]indirect_array_access に設定します。

      -xprefetch オプションは、SPARC プラットフォームでのみ使用できます。

      -xdepend-xrestrict-xalias_level などのオプションは、メモリー別名のあいまいさを排除する情報の生成に役立つため、間接プリフェッチ候補の決定の積極性に影響し、このため、自動的な間接プリフェッチの挿入が促進されることがあります。

    • -xprofile_pathmap=collect_prefix:use_prefix
      プロファイルデータファイルのパスマッピングを設定します。以前に -xprofile=collect を使ってコンパイルしたときに使用したディレクトリとは異なるディレクトリにプロファイリングする場合は、-xprofile_pathmap オプションを -xprofile=use オプションと併用してください。

    このリリースの f95 では、次のコマンド行オプションのデフォルト値が変更されています。

    • -xprefetch のデフォルト値は -xprefetch=no%auto,explicit です。
    • -xmemalign のデフォルト値は -xmemalign=8i です。 ただし、-xarch=v9 オプションのいずれかを付けたコンパイルでは、デフォルト値は -xmemalign=8f になります。
    • -xarch=v9 オプションのいずれかを付けたコンパイルでの -xcode のデフォルト値は abs44 になります。

    以前のリリースのコンパイラで使用されていたデフォルト値でコンパイルにするには、次のオプションを明示的に指定します。

    • 32 ビットコンパイルの場合: -xarch=v8 -xmemalign=4s -xprefetch=no
    • 64 ビットコンパイルの場合: -xcode=abs64 -xprefetch=no
  5. デフォルトの SPARC アーキテクチャを v8plus に変更
    デフォルトの SPARC アーキテクチャは V7 でなくなりました。この Sun Studio 9 リリースでは、-xarch=v7 のサポートに制限があります。新しいデフォルトは V8PLUS (UltraSPARC) です。-xarch=v8 以上をサポートしているのは Solaris 8 OS だけであるため、-xarch=v7 によるコンパイルは、-xarch=v8 として扱われます。

    SPARC V8 システム (SPARCStation 10 など) に配備するには、明示的に -xarch=v8 を使ってコンパイルします。提供のシステムライブラリは、SPARC V8 アーキテクチャで動作します。

    SPARC V7 システム (SPARCStation 1 など) に配備するには、明示的に -xarch=v7 を使ってコンパイルします。提供のシステムライブラリは、SPARC V8 命令セットを利用します。この Sun Studio 9 リリースでは、SPARC V7 アーキテクチャをサポートするのは、Solaris 8 OS だけです。SPARC V8 命令が検出されると、OS はソフトウェアでその命令を解釈します。このためプログラムは実行されますが、パフォーマンスは低下します。

  6. OpenMP: 最大スレッド数を増加
    OMP_NUM_THREADS およびマルチタスクライブラリの最大スレッド数が 128 から 256 に増加しました。
  7. OpenMP: 変数の自動スコープ
    このリリースの Fortran 95 コンパイラに実装されている、共有メモリー並列プログラミング用の OpenMP API には、並列領域における変数の自動スコープ機能があります。詳細は、『OpenMP API ユーザーズガイド』を参照してください。(このリリースでは、OpenMP は SPARC プラットフォームにのみ実装されます。)

その他の Sun Studio 9 コンポーネントについては、『Sun Studio 9 の新機能』を参照してください。このマニュアルは、ソフトウェアに付属している他のマニュアル同様、file:/opt/SUNWspro/docs/index.html からアクセスできます。Sun Studio 9 コレクションの『Sun Studio 9 の新機能』は、http://docs.sun.comでも提供しています。


D. ソフトウェアの修正事項

現時点では新しい情報はありません。


E. 問題点と回避策

ここでは、このリリースにおける既知のソフトウェアの問題と、その回避策について説明します。

次に示す問題の多くは、このリリースのあとで提供されるパッチで修正される可能性があります。最新情報またはパッチについては、http://developers.sun.com/prodtech/cc/support_index.html を参照してください。


F. 制限事項と互換性の問題

ここでは、制限事項およびシステムまたはその他のソフトウェアとの互換性の問題について説明します。

f95 コンパイラの以前のリリースで生まれた互換性の問題は、このリリースの 8.0 コンパイラでも継続しています。以前の f95 リリースから 8.0 (Sun Studio 9) にアップグレードするにあたっては注意してください。互換性の問題とは次のとおりです。

以下に示す一般的な事柄にも注意してください。


G. 記述の誤りの訂正

現時点では情報はありません。


H. Fortran 95 の必須パッチ

このリリースの必須およびオプションのパッチについては、『リリースノート』を参照してください。


I. ライブラリの再配布について

実行可能ファイルが、次のファイルに示されたサンの動的ライブラリを必要とする場合は、ライセンスにもとづいて、それらのライブラリを再配布できます。

   /opt/SUNWspro/READMEs/ja/runtime.libraries

注 - ソフトウェアが /opt 以外のディレクトリにインストールされている場合は、ご使用のシステムにおける実際のパスを、システム管理者に確認してください。

どのような形態でも、ヘッダーファイル、ソースコード、オブジェクトモジュール、オブジェクトモジュールの静的ライブラリを第三者に配付、公開することはできません。

使用ライセンスは、CD-ROM のケースの裏面にあるエンドユーザーオブジェクトコードライセンスに記載されています。



Copyright (C) 2004 Sun Microsystems, Inc. All rights reserved.Use is subject to license terms.