Innovating@Sun コミュニティ ご購入について (0120-33-9096) マイ・アカウント 日本 [Change] 日本語

FAQs
Sun Performance Library
      Studio 11
      ライセンス
      C++言語システム
    Sun Performance Library
目次
技術的な質問
  1. どのファイルをダウンロードしたらよいのか教えてください。
  2. 従来のファイルをインストールする前に、Sun Performance Library for Sun Studio 11 パッケージをインストールしてしまいました。どうしたらよいでしょうか ?
  3. Performance Library ルーチンを汎用インタフェースを使って F95 コードから呼び出そうとすると、未解決の外部参照が出力されます。どうしたらよいでしょうか ?
  4. Performance Library ルーチンを汎用インタフェースを使って F95 コードから呼び出そうとすると、何度試しても「SUNPERF が USE 文でモジュール名として指定されていますが、コンパイラはこれを見つけられません。」というエラーが出力されます。
  5. Performance Library ルーチンを汎用インタフェースを使って F95 コードから呼び出そうとすると、何度試しても「総称副プログラム呼び出しに一致するものが見つかりません。」というエラーが出力されます。
  6. Performance Library ルーチンを C ソースファイルから呼び出そうとすると、__f90 で始まる解決できない外部参照があると出力されます。
  7. Performance Library に対する C インタフェースのためのインクルードファイルはどこにありますか ?
  8. V9 アーキテクチャのアプリケーションをコンパイルする際に 64 ビットの Performance Library ルーチンを使用する方法を教えてください。
  9. Performance Library ルーチンを呼び出すと、セグメント例外が発生します。原因と解決策を教えてください。
  10. LINPACK が削除される時期とその代わりとなるものを教えてください。
 
 

技術的な質問


Q:
どのファイルをダウンロードしたらよいのか教えてください。
A:

Sun Performance Library for Sun Studio 11 のサイズを抑えるため、so.4 ライブラリだけが含まれています。so.2 と so.3 の従来のライブラリは、このリリースには含まれていません。

従来のライブラリ so.2、so.3 を必要とするアプリケーションとの互換性を維持するため、Sun Studio 11 は以前のバージョンの Sun Performance Library をシステム上で検索し、見つかった場合にはそれらのライブラリの場所へのシンボリックリンクをインストールします。以前の Sun Performance Library パッケージが見つからなかった場合、Sun Studio 11 パッケージは現在の so.4 ライブラリだけをインストールします。従来のライブラリを指すシンボリックリンクを作成させるには、Sun Performance Library for Sun Studio 11 パッケージをインストールする前に従来のパッケージをインストールする必要があります。

Sun Performance Library の全バージョンは、Sun Download Center から無料でダウンロードできます。特定バージョンの Sun Performance Library の従来のライブラリも、そのリリースの Forte Developer 製品の CD に入っています。たとえば Forte Developer 6 update 2 リリースのパッケージは、/cdrom/cdrom0/products/packages に入っています。

» 例を参照

パッケージは、必要な分だけインストールできます。

ページ先頭へ


Q:
従来のファイルをインストールする前に、Sun Performance Library for Sun Studio 11 パッケージをインストールしてしまいました。どうしたらよいでしょうか ?
A:
Sun Studio 11 をインストールする前に従来のライブラリをインストールしなかった場合、従来のライブラリへのシンボリックリンクを作成するには次の手順を実行します。
  • Sun Studio 11 Shared Performance Library パッケージをアンインストールします。
  • 従来の共有パッケージをインストールします。
  • Sun Studio 11 共有パッケージをインストールします。

従来のパッケージをインストールするには、pkgadd コマンドを使用します。使用方法については、pkgadd マニュアルページを参照してください。(デフォルト以外の場所にインストールする際には、pkgadd マニュアルページの "-a" オプションの項をよく読んでください。たとえば、"-a none" オプションは対話形式のインストールを行います。)

ページ先頭へ


Q:
Performance Library ルーチンを汎用インタフェースを使って F95 コードから呼び出そうとすると、未解決の外部参照が出力されます。どうしたらよいでしょうか ?
A:
F95 から Performance Library に対して呼び出しを行うソースに USE SUNPERF 文が含まれていることを確認してください。USE 文は、PROGRAM 文のあと、またほかのあらゆる文 (ほかの USE 文は別) の前に配置する必要があります。

PROGRAM MyProgram USE SUNPERF ...

ページ先頭へ


Q:
Performance Library ルーチンを汎用インタフェースを使って F95 コードから呼び出そうとすると、何度試しても「SUNPERF が USE 文でモジュール名として指定されていますが、コンパイラはこれを見つけられません。」というエラーが出力されます。
A:
F95 コンパイラは、現在のディレクトリを検索して USE 文に指定されているモジュールファイルを検索します。コンパイル行に -M オプションでディレクトリを指定すると、コンパイラはそのディレクトリも検索します。

f95 -o mytest mytest.f -xlic_lib=sunperf -M/opt/SUNWspro/lib
注:この場合、f95 コンパイラは正しい sunperf.mod ファイルをアーキテクチャ固有ディレクトリで検索しません。-xarch オプションで v9 アーキテクチャを設定して実行可能ファイルをコンパイルしている場合には、正しい sunperf.mod ファイルをコンパイラが取り出せるように、該当するアーキテクチャパスを使用する必要があります。

例:

f95 -o mytest mytest.f-xlic_lib=sunperf-xarch=v9a-M/opt/SUNWspro/lib/v9a

ページ先頭へ


Q:
Performance Library ルーチンを汎用インタフェースを使って F95 コードから呼び出そうとすると、何度試しても「総称副プログラム呼び出しに一致するものが見つかりません。」というエラーが出力されます。
A:
このエラーは、Performance Library にあるルーチンを F95 汎用インタフェースを使って呼び出そうとしたときに、使用されているパラメータの並び (パラメータリスト) に、提供されているインタフェースのパラメータリストと一致するものがない場合に発生します。F95 は、「その場限りの多相性」(ad-hoc polymorphism) という技法によって多相性を実現します。つまり、特定のルーチンが 1 つの共通インタフェースを通して呼び出されているように見えていても、実際には、複数のインタフェースが作成され、コンパイラは呼び出し手順に一致するものをこれらのインタフェースの中から 1 つ取り出します。上記のエラーは、サポートされているルーチンのいずれかの呼び出しに使用されたパラメータリストが sunperf.mod ファイル内のどのパラメータリストとも一致しないことを意味します。
  • 完全指定のパラメータリストは、常にサポートされる。
  • 配列刻み幅と主次元を記述するパラメータは、常に除外できる。
  • 作業配列および作業配列のサイズを記述するパラメータは、常に除外できる。
  • 配列次元サイズを記述するパラメータは、通常の場合 (常にとは限らない) 除外できる。
  • 1 つのパラメータリスト内で同じ型のパラメータが隣り合っている場合、すべてを除外するかまたはすべてを記述する。
  • INFO パラメータは、常に除外できる。

例 1:

SUBROUTINE CAXPY(N,ALPHA,X,INCX,Y,INCY)
サポートされている呼び出しシーケンス:
CALL AXPY(N,ALPHA,X,INCX,Y,INCY) <-- 規則 #1 完全指定
CALL AXPY(N,ALPHA,X,Y=Y) <-- 規則 #2 配列刻み幅の省略
CALL AXPY(ALPHA=ALPHA,X=X,Y=Y) <-- 規則 #4 配列次元の省略
注:ルーチンの型は ALPHA、X、Y のパラメータの型によって制御されるので、ルーチン名の第 1 文字は省略されます。1 つのパラメータリストの中で 浮動小数点型パラメータと複合型パラメータを混在させるインタフェース はサポートされません。つまり、REAL*4 の型の ALPHA と REAL*8 の型の X とを持つ AXPY を呼び出すことはできません。

例 2:

SUBROUTINE DGELQF(M,N,A,LDA,TAU,WORK,LDWORK,INFO)
サポートされている呼び出しシーケンス:
CALL GELQF(M,N,A,LDA,TAU,WORK,LDWORK,INFO) <- 規則 #1
CALL GELQF(M,N,A,TAU=TAU,INFO=INFO) <- 規則 #2、#3
CALL GELQF(A=A,TAU=TAU,INFO=INFO) <- 規則 #2、#3、#4、#5
CALL GELQF(A=A,TAU=TAU) <- 規則 #2、#3、#4、#5、#6
注:あるパラメータが除外されたあと、継承パラメータは、正しく機能するために "pass-by-name" 規則を使用しなければなりません。パラメータ名は、対応マニュアルページにリストされている名前に一致します。

ページ先頭へ


Q:
Performance Library ルーチンを C ソースファイルから呼び出そうとすると、__f90 で始まる解決できない外部参照があると出力されます。
A:
Performance Library は、多くの F95 言語機能を活用するため、Sun F95 コンパイラによってコンパイルされています。このため、Performance Library は F90 実行時システムへの呼び出しを生成します。C コードを Performance Library とリンクするとき、参照を解決できないシンボルを次のいずれかの方法で回避できます。
  • C コンパイラでコンパイルし F95 コンパイラでリンクします。この結果、正しい F90/F95 実行時ルーチンがリンクされます。

    例:

    cc -c faq_c.c -dalign
    f95 -o faq_c faq_c.o -xlic_lib=sunperf
  • 正しい F90/F95 実行時ルーチンがリンクされるように、C コンパイルおよびリンク行に情報を追加します。

    例:

    cc -o faq_c faq_c.c -xlic_lib=sunperf,fui,fai,fsu -dalign

ページ先頭へ


Q:
Performance Library に対する C インタフェースのためのインクルードファイルはどこにありますか ?
A:
Performance Library ルーチンのインクルードファイルの名前は sunperf.h で、コンパイラのあるディレクトリの下の include ディレクトリに入っています。

例:

/opt/SUNWspro にコンパイラをインストールしている場合は、次のディレクトリにそのインクルードファイルがインストールされています。
/opt/SUNWspro/prod/include/cc/sunperf.h

ページ先頭へ


Q:
V9 アーキテクチャのアプリケーションをコンパイルする際に 64 ビットの Performance Library ルーチンを使用する方法を教えてください。
A:
Performance Library の V9 バージョンには、計算ルーチンに対する 32 ビットと 64 ビットのインタフェースが含まれています。32 ビットのインタフェースが呼び出される場合、整数パラメータは 64 ビットの整数に変換され、64 ビットのルーチンが呼び出されます。このことは、V9 バージョンの Performance Library とのリンクに際し、32 ビットインタフェースの呼び出しに多少のパフォーマンスのペナルティが生じることを意味します。64 ビットのインタフェースを直接呼び出すには、希望のルーチン名に _64 を付加します。

例 1:

INTEGER*4 N, INCX, INCY
CALL CAXPY(N,ALPHA,X,INCX,Y,INCY)
V9 ライブラリにリンクすると、N、INCX、および INCY を 64 ビットの整数に変換するラッパールーチンが呼び出され、昇格されたパラメータとともに CAXPY_64 ルーチンが呼び出されます。

例 2:

INTEGER*8 N, INCX, INCY
CALL CAXPY_64(N,ALPHA,X,INCX,Y,INCY)
V9 バージョンの Performance Library とリンクすると、64 ビットの CAXPY ルーチンが直接呼び出されます。

注: このインタフェースは、V8 または V8PLUS バージョンの Performance Library に存在しません。そのため、これらのアーキテクチャのコンパイルを試行すると、リンク時に不十分な外部参照を取得することになります。

例 3:

INTEGER N, INCX, INCY
CALL CAXPY_64(N,ALPHA,X,INCX,Y,INCY)
V9 バージョンの Performance Library とリンクすると、64 ビットの CAXPY ルーチンが直接呼び出されます。この場合、必ずコンパイラフラグ -xtypemap=integer:64 を使用してコンパイルしてください。さもないと、未定義の結果が発生します。これは、64 ビットのルーチンが 64 ビットの整数パラメータを予測するためです。

ページ先頭へ


Q:
Performance Library ルーチンを呼び出すと、セグメント例外が発生します。原因と解決策を教えてください。
A:
プログラムにスタックのオーバーフローが発生している可能性があります。対処を必要とするスタックスペースは 2 種類あります。

まず、プロセスに割り当てられているスタックスペースがあります。このスペースは、limit コマンドで制御されます。次のように入力して、プロセスの制限解除を試行してください。

% unlimit stacksize
第 2 に、プログラムがマルチスレッドである場合、各スレッドは独自のスタックスペースを保持します。このスペースは、${STACKSIZE} 環境変数で制御されます。単位は KB であるため、次のように入力してください。
% setenv STACKSIZE 4000
各スレッドのスタックサイズが 4 M バイト に設定されます。これは、Performance Library に必要な最小値であるため、${STACKSIZE} が最低でも 4000 に設定されていることを確認してください。プログラムが大きなスタックをベースとする変数を使用する場合は、この値を引き上げる必要があります。

ページ先頭へ


Q:
LINPACK が削除される時期とその代わりとなるものを教えてください。
A:
Forte Developer 6 update 2 は、Sun Performance Library に LINPACK が含まれる最後のリリースです。LINPACK およびすべての旧バージョンの LAPACK に置き換わる LAPACK version 3.0 が代わりに提供されます。LINPACK ルーチンを呼び出す従来のユーザーコードを修正しても LAPACK ルーチンを呼び出せない場合、パブリックドメインバージョンの LINPACK を Netlib から取得できます。削除された LINPACK ルーチンをに示します。

ページ先頭へ


Sun だからできる、Java システム最適化ソリューション
Web でシステムの悩みをお聞かせください。
詳細