リンクには、SUPER-UXのコマンド、f90、またはクロスコンパイル・コマンドのsxf90を使用します。f90 -dwオプション(既定値)を使用してリンクする場合には、表1のように指定します。f90 -ewオプションを使用してリンクする場合には、表2のように指定します。それぞれに示された順番にリンクするか、またはリンク時にf90 -h lib_cyclicオプションを指定する必要があります。各ライブラリで使用されるデータ型については表3を参照してください。
| ライブラリ名 | リンク方法 |
|---|---|
| BLAS | -lblas |
| LAPACK | -llapack -lblas |
| ScaLAPACK | -lscalapack -lblacsF90init -lblacs -lblacsF90init -llapack -lblas -lmpi |
| BLACS | -lblacsF90init -lblacs -lblacsF90init -lmpi |
| PARBLAS | -lparblas -Popenmp |
| CBLAS | -lcblas -lblas |
| SBLAS | -lsblas |
| FFT | -lfft |
| PARFFT | -lparfft -Popenmp |
| METIS | -lmetis |
| ParMETIS | -lparmetis -lmpi |
| Solver | -lsolver -lmetis -lblas -Popenmp |
| ARPACK | -larpack -llapack -lblas |
| PARPACK | -lparpack -larpack -llapack -lblas -lmpi |
| ライブラリ名 | リンク方法 |
|---|---|
| BLAS | -lblas_64 |
| LAPACK | -llapack_64 -lblas_64 |
| ScaLAPACK | -lscalapack_64 -lblacsF90init_64 -lblacs_64 -lblacsF90init_64 -llapack_64 -lblas_64 -lmpiw |
| BLACS | -lblacsF90init_64 -lblacs_64 -lblacsF90init_64 -lmpiw |
| PARBLAS | -lparblas_64 -Popenmp |
| CBLAS | サポートなし |
| SBLAS | -lsblas_64 |
| FFT | -lfft_64 |
| PARFFT | -lparfft_64 -Popenmp |
| METIS | -lmetis_64 |
| ParMETIS | -lparmetis_64 -lmpiw |
| Solver | -lsolver_64 -lmetis_64 -lblas_64 -Popenmp |
| ARPACK | -larpack_64 -llapack_64 -lblas_64 |
| PARPACK | -lparpack_64 -larpack_64 -llapack_64 -lblas_64 -lmpiw |
MathKeisanライブラリが見つからない場合にリンクエラーが起こることがあります。MathKeisanライブラリのあるデフォルトのディレクトリはSX上では/usr/opt/mathkeisan/inst/lib0、クロスコンパイル機上では/SX/opt/mathkeisan/inst/lib0です。これらのディレクトリにライブラリがない場合はリンクオプション-Ldirを使いそれらの場所を指定してください。dirはMathKeisanライブラリを含むディレクトリの完全パス名です。
C/C++コンパイラを使ってMETIS, ParMETIS, CBLAS, BLACS以外のライブラリをリンクする場合は、コマンドラインのMathKaisanライブラリのあとに-f90libオプションをつけてください。この時、-dwのMathKaisanライブラリをリンクする場合は-f90lib dwオプションをつけ、-ewのMathKaisanライブラリをリンクする場合は-f90lib ewオプションをつけてください。
f90でリンクしたとき、__c_cexp、__c_csqrt、__c_npow、__c_pow、__c_ppow、__c_sincos、__c_spow、__c_stkmem、__c_stkmem2、__c_tpow、__c_vcexp、__c_vcsqrt、__c_vpow、__c_vsassign4、__c_vsincos、__c_wcexp、__c_wcsqrt、__c_wpow、__c_wsincosなどのシンボルが未解決と表示されたら、全てのMathKeisanライブラリのあとのリンクコマンドラインに-lcppをつけてください。
各データ型に対応するSX版MathKeisanライブラリは、表3のとおりです。
| ライブラリ名 | 4バイト整数型 (f90 -dw) | 8バイト整数型 (f90 -ew) | ||||
|---|---|---|---|---|---|---|
| 4バイト実数型 | 8バイト実数型 | 8バイト実数型 | ||||
| ライブラリ | 接頭辞 | ライブラリ | 接頭辞 | ライブラリ | 接頭辞 | |
| BLAS | libblas.a | S C
| libblas.a | D Z
| libblas_64.a | S D C
Z
|
| LAPACK | liblapack.a | S C
| liblapack.a | D Z
| liblapack_64.a | S D C
Z
|
| ScaLAPACK | libscalapack.a | S C
| libscalapack.a | D Z
| libscalapack_64.a | S D C
Z
|
| BLACS | libblacs.a | S C
| libblacs.a | D Z
| libblacs_64.a | S D C
Z
|
| PARBLAS | libparblas.a | S C
| libparblas.a | D Z
| libparblas_64.a | S D C
Z
|
| CBLAS | libcblas.a | S C
| libcblas.a | D Z
| サポートなし | |
| SBLAS | libsblas.a | S C
| libsblas.a | D Z
| libsblas_64.a | S D C
Z
|
| FFT | libfft.a | S C
| libfft.a | D Z
| libfft_64.a | S D C
Z
|
| PARFFT | libparfft.a | S C
| libparfft.a | D Z
| libparfft_64.a | S D C
Z
|
| ARPACK | libarpack.a | S C
| libarpack.a | D Z
| libarpack_64.a | S D C
Z
|
| PARPACK | libparpack.a | S C
| libparpack.a | D Z
| libparpack_64.a | S D C
Z
|
| METIS | サポートなし | libmetis.a | libmetis_64.a | |||
| ParMETIS | サポートなし | libparmetis.a | libparmetis_64.a | |||
| Solver | サポートなし | libsolver.a | libsolver_64.a | |||
表3のライブラリファイルは4バイト(32ビット)整数型のデータ型(FORTRAN integer(kind=4))、または8バイト(64ビット)整数型のデータ型(FORTRAN integer(kind=8))のいずれかです。
既定値f90 -dwでコンパイルしたコードは4バイト整数型を使い、「4バイト整数型」の欄に書いてあるライブラリとリンクします。
f90 -ewでコンパイルしたコードは8バイト整数型を使い、「8バイト整数型」の欄に書いてあるライブラリとリンクします。
浮動小数点型のデータ型は、暗黙の宣言(接頭辞欄が記載無し)によるか、 または以下の表のようにサブルーチン名の接頭辞で決まります。
| 接頭辞 | 4バイト整数型 (f90 -dw) | 8バイト整数型 (f90 -ew) |
|---|---|---|
S
| 4バイト実数型 (FORTRAN real(kind=4))
| 8バイト実数型 (FORTRAN real(kind=8))
|
D
| 8バイト実数型 (FORTRAN real(kind=8))
| 8バイト実数型 (FORTRAN real(kind=8))
|
C
| 8バイト複素数型 (FORTRAN complex(kind=4))
| 16バイト複素数型 (FORTRAN complex(kind=8))
|
Z
| 16バイト複素数型 (FORTRAN complex(kind=8))
| 16バイト複素数型 (FORTRAN complex(kind=8)) |
表4で、8バイト整数型 (f90 -ew)のデータ型のライブラリはサブルーチン名の接頭辞がSとDの場合には8バイト実数型のデータ型、また、接頭辞がCとZで始まる場合には16バイト複素数型のデータ型から構成されています。
IPF版MathKeisanは、アーカイブライブラリ(.a)と共有ライブラリ(.so)の両方を含んでいます。表5は、完全パス名を使用する.aライブラリのオプション一覧です。表6は、-staticオプションを使用する.aライブラリのリンク方法です。表7は、.soライブラリのリンク方法です。表中の$(LIBDIR)マクロには、MathKeisanのlibディレクトリを設定してください。既定値は、$(LIBDIR)
= /opt/MathKeisan/libです。ScaLAPACK、BLACSおよびParMETISライブラリでは、NEC MPIまたはMPICHのためにMPIディレクトリに$(MPI)と$(MPILIBDIR)が設定されています。NEC MPIの規定値は$(MPI)
= NECMPI及び$(MPILIBDIR) = /usr/lib/libmpi.aです。MPICHの規定値は$(MPI) = MPICH_ch_p4sおよび$(MPILIBDIR)
= /opt/mpich/lib/libmpich.aです。 各ライブラリで使用されるデータ型については表8を参照してください。
| ライブラリ名 | リンク方法 |
|---|---|
| BLAS | $(LIBDIR)/libblas.a -openmp |
| LAPACK | $(LIBDIR)/liblapack.a $(LIBDIR)/libblas.a -openmp |
| ScaLAPACK | $(LIBDIR)/libscalapack.a $(LIBDIR)/$(MPI)/libblacsF90init.a $(LIBDIR)/$(MPI)/libblacs.a $(LIBDIR)/$(MPI)/libblacsF90init.a $(LIBDIR)/libblas.a -L$(LIBMPIDIR) -lmpi -openmp |
| BLACS | $(LIBDIR)/$(MPI)/libblacsF90init.a $(LIBDIR)/$(MPI)/libblacs.a $(LIBDIR)/$(MPI)/libblacsF90init.a -L$(LIBMPIDIR) -lmpi |
| CBLAS | $(LIBDIR)/libcblas.a -openmp |
| SBLAS | $(LIBDIR)/libsblas.a -openmp |
| FFT | $(LIBDIR)/libfft.a -openmp |
| METIS | $(LIBDIR)/libmetis.a |
| ParMETIS | $(LIBDIR)/$(MPI)/libparmetis.a -L$(LIBMPIDIR) -lmpi |
| Solver | $(LIBDIR)/libsolver.a $(LIBDIR)/libmetis.a $(LIBDIR)/libblas.a -openmp |
| PARDISO | $(LIBDIR)/libmkl_solver.a $(LIBDIR)/liblapack.a $(LIBDIR)/libblas.a -openmp |
| ARPACK | $(LIBDIR)/libarpack.a $(LIBDIR)/liblapack.a $(LIBDIR)/libblas.a -openmp |
| ライブラリ名 | リンク方法 |
|---|---|
| BLAS | -static -L$(LIBDIR) -lblas -openmp |
| LAPACK | -static -L$(LIBDIR) -llapack -lblas -openmp |
| ScaLAPACK | -static -L$(LIBDIR) -lscalapack -L$(LIBDIR)/$(MPI) -lblacsF90init -lblacs -lblacsF90init -lblas -L$(MPILIBDIR) -lmpi -openmp |
| BLACS | -static -L$(LIBDIR)/$(MPI) -lblacsF90init -lblacs -lblacsF90init -L$(MPILIBDIR) -lmpi |
| CBLAS | -static -L$(LIBDIR) -lcblas -openmp |
| SBLAS | -static -L$(LIBDIR) -lsblas -openmp |
| FFT | -static -L$(LIBDIR) -lfft -openmp |
| METIS | -static -L$(LIBDIR) -lmetis |
| ParMETIS | -static -L$(LIBDIR)/$(MPI) -lparmetis -L$(MPILIBDIR) -lmpi |
| Solver | -static -L$(LIBDIR) -lsolver -lmetis -lblas -openmp |
| PARDISO | -static -L$(LIBDIR) -lmkl_solver -llapack -lblas -openmp |
| ARPACK | -static -L$(LIBDIR) -larpack -llapack -lblas -openmp |
| ライブラリ名 | リンク方法 |
|---|---|
| BLAS | -L$(LIBDIR) -lblas -openmp |
| LAPACK | -L$(LIBDIR) -llapack -lblas -openmp |
| ScaLAPACK | -L$(LIBDIR) -lscalapack -L$(LIBDIR)/$(MPI) -lblacsF90init -lblacs -lblacsF90init -lblas -L$(MPILIBDIR) -lmpi -openmp |
| BLACS | -L$(LIBDIR)/$(MPI) -lblacsF90init -lblacs -lblacsF90init -L$(MPILIBDIR) -lmpi |
| CBLAS | -L$(LIBDIR) -lcblas -openmp |
| SBLAS | -L$(LIBDIR) -lsblas -openmp |
| FFT | -L$(LIBDIR) -lfft -openmp |
| METIS | -L$(LIBDIR) -lmetis |
| ParMETIS | -L$(LIBDIR)/$(MPI) -lparmetis -L$(MPILIBDIR) -lmpi |
| Solver | -L$(LIBDIR) -lsolver -lmetis -lblas -openmp |
| PARDISO | サポートなし |
| ARPACK | -L$(LIBDIR) -larpack -llapack -llapack -lblas -openmp |
実行時に「error while loading shared libraries
」のエラーメッセージが表示された場合、LD_LIBRARY_PATH環境変数にMathKeisanのlibディレクトリを追加してください。以下のCシェルコマンドを使用して、デフォルトのMathKeisanのlibディレクトリ/opt/MathKeisan/libをLD_LIBRARY_PATHに追加します。.cshrcファイルに追加するか、またはコマンドラインで入力してください。
if !($?LD_LIBRARY_PATH) then
setenv LD_LIBRARY_PATH /opt/MathKeisan/lib
else
setenv LD_LIBRARY_PATH /opt/MathKeisan/lib:$LD_LIBRARY_PATH
endif
Bashシェルの場合は、下記のラインを.profileファイルに加えるか、コマンドラインで入力してください。
export LD_LIBRARY_PATH="/opt/MathKeisan/lib:$LD_LIBRARY_PATH"
IPF版MathKeisanライブラリの各データ型に対応するライブラリファイル名を表8に示します。
| ライブラリ名 | 4バイト実数型 | 8バイト実数型 | ||||
|---|---|---|---|---|---|---|
| アーカイブライブラリ | 共有ライブラリ | 接頭辞 | アーカイブライブラリ | 共有ライブラリ | 接頭辞 | |
| BLAS | libblas.a | libblas.so | S C
| libblas.a | libblas.so | D Z
|
| LAPACK | liblapack.a | liblapack.so | S C
| liblapack.a | liblapack.so | D Z
|
| ScaLAPACK | libscalapack.a | libscalapack.so | S C
| libscalapack.a | libscalapack.so | D Z
|
| BLACS | libblacs.a | libblacs.so | S C
| libblacs.a | libblacs.so | D Z
|
| CBLAS | libcblas.a | libcblas.so | S C
| libcblas.a | libcblas.so | D Z
|
| SBLAS | libsblas.a | libsblas.so | S C
| libsblas.a | libsblas.so | D Z
|
| FFT | libfft.a | libfft.so | S C
| libfft.a | libfft.so | D Z
|
| METIS | サポートなし | libmetis.a | libmetis.so | |||
| ParMETIS | サポートなし | libparmetis.a | libparmetis.so | |||
| Solver | サポートなし | libsolver.a | libsolver.so | |||
| PARDISO | サポートなし | libmkl_solver.a | libmkl_solver.so | |||
| ARPACK | libarpack.a | libarpack.so | S C
| libarpack.a | libarpack.so | D Z |
表8のライブラリファイルは4バイト(32ビット)整数型(FORTRAN integer(kind=4))のデータ型です。実数型あるいは複素数型のデータ型は暗黙的な宣言(接頭辞欄が記載無し)によるか、または以下の表のようにサブルーチン名の接頭辞で決まります。
| 接頭辞 | データ型 |
|---|---|
S
| 4バイト実数型 (FORTRAN real(kind=4))
|
D
| 8バイト実数型 (FORTRAN real(kind=8))
|
C
| 8バイト複素数型 (FORTRAN complex(kind=4))
|
Z
| 16バイト複素数型 (FORTRAN complex(kind=8)) |