Oracle Developer Studio パフォーマンスライブラリには、標準の LAPACK および BLAS ライブラリおよび既存のコードとの互換性を維持するために f95 インタフェースおよびレガシー f77 インタフェースが含まれています。 Oracle Developer Studio パフォーマンスライブラリの f95 およびレガシー f77 インタフェースでは次の規則が使用されます。
引数はすべて、参照によって渡されます。
1 つの呼び出し内では引数の型に一貫性が必要です。たとえば、同じ呼び出しに REAL*8 パラメータと REAL*4 パラメータを混ぜないでください。
配列は列方向に格納されます。
標準的な Fortran の慣行に従って、インデックスは 1 オリジンです。
Oracle Developer Studio パフォーマンスライブラリのルーチンを呼び出すときは、次の情報に留意してください。
Fortran 95 の INTERFACE 文でサブルーチンのプロトタイプ宣言をしないでください。代わりに、USE SUNPERF 文を使用します。
Oracle Developer Studio パフォーマンスライブラリのルーチンを呼び出すルーチンをコンパイルする場合は、-ext_names=plain を使用しないでください。
Oracle Developer Studio パフォーマンスライブラリでは、Fortran 95 プログラムでの使いやすさを向上させる Fortran モジュールが提供されています。このモジュールを使用するには、Fortran 95 コードに次の行を含めます。
USE SUNPERF
USE 文は、PROGRAM または SUBROUTINE 文を除き、コード内でほかのすべての文より前に置く必要があります。
SUNPERF モジュールは、呼び出しシーケンスを簡素化するインタフェースを持ち、次の機能を提供します。
型への非依存性 – Oracle Developer Studio パフォーマンスライブラリでは、データ引数の型を自動的に認識するインタフェースがサポートされているため、型に依存する接頭辞 (S、D、C、または Z) が不要になります。FORTRAN 77 のルーチンでは、名前の一部として型を指定する必要があります。たとえば、DGEMM は倍精度の行列乗算、SGEMM は単精度の行列乗算です。GEMM を Fortran 95 インタフェースで呼び出すと、Fortran が渡された引数から型を推測します。GEMM に単精度引数を渡すと、SGEMM を指定した場合と同じ結果になり、倍精度引数を渡すと、DGEMM を指定した場合と同じ結果になります。たとえば、CALL DSCAL(20,5.26D0,X,1) を CALL SCAL(20, 5.26D0, X, 1) に変更できます。
コンパイル時チェック – FORTRAN 77 では、特定のルーチンにどのような引数を渡すべきかをコンパイラが判断することは通常できません。Fortran 95 では、USE SUNPERF 文を使用することにより、コンパイラは Oracle Developer Studio パフォーマンスライブラリの各ルーチンに渡すべきそれぞれの引数の数、型、サイズ、および形状を判断できます。コンパイラは、コンパイル時に呼び出しと期待される値とを照合し、エラーを表示できます。
64 ビット整数のサポート – Oracle Developer Studio パフォーマンスライブラリで提供されている 64 ビットインタフェースを使用する場合は、整数引数を 64 ビットに上位変換し、ルーチン名に _64 を付加する必要があります。SUNPERF モジュールを使用すると、64 ビット整数が自動的に認識されるため、次のコード例に示すように、ルーチン名に _64 を付加する必要がなくなります。
SUBROUTINE SUB(N,ALPHA,X,Y) USE SUNPERF INTEGER(8) N REAL(8) ALPHA, X(N), Y(N) ! EQUIVALENT TO DAXPY_64(N,ALPHA,X,1_8,Y,1_8) CALL DAXPY(N,ALPHA,X,1_8,Y,1_8) END
Oracle Developer Studio パフォーマンスライブラリの 64 ビットインタフェースの詳細な使用方法については、64 ビットに対応したオペレーティング環境用のコードのコンパイルを参照してください。
sunperf.mod ファイルは -dalign でコンパイルされているため、USE SUNPERF 文を含んでいるコードはすべて -dalign でコンパイルする必要があります。コードを -dalign でコンパイルしないと、次のエラーが発生します。
use sunperf ^ "test_code.f", Line = 2, Column = 11: ERROR: Procedure "SUNPERF" and this compilation must both be compiled with -dalign, or without -dalign.