MKL Intel ライブラリ内で Pardiso ソルバーを使用するために、簡単な例を作成しようとしています。提供されている例に従っていますが、サブルーチンで Pardiso を呼び出すと機能しません。恐れ入りますが、INCLUDE ステートメントまたはリンクの側面に関連するものです。
すべてのサブルーチンで使用される配列は、変数と呼ばれるモジュールに含まれています
MODULE variables
INTEGER :: M ! Lines
INTEGER :: N ! Columns
REAL*8, DIMENSION(:,:), ALLOCATABLE :: MATRA ! original matrix
INTEGER, DIMENSION(:), ALLOCATABLE :: ROWSA,COLSA ! ia and ja in pardiso
REAL*8, dimension(:), ALLOCATABLE :: VALSA, RHSVC, SOLVC ! a, b, x
END MODULE variables
プログラムを含むファイルは次のとおりです。
INCLUDE 'mkl_pardiso.f90'
program PardisoFortran
use variables
use mkl_pardiso
implicit none
! do some stuff to create the matrices
call create_matrices
call INITPARDISO
end program
最後にファイル initpardiso
subroutine INITPARDISO
USE VARIABLES
USE mkl_pardiso
! pardiso variable declaration
TYPE(MKL_PARDISO_HANDLE), ALLOCATABLE :: pt(:)
INTEGER maxfct, mnum, mtype, phase, nrhs, error, msglvl
INTEGER, ALLOCATABLE, DIMENSION(:) :: iparm
INTEGER i, idum
REAL*8 waltime1, waltime2, ddum
! --- then I allocate and fill the variables
! Finally I can call pardiso
phase = 11 ! only reordering and symbolic factorization phase
CALL pardiso_64 (PT, maxfct, mnum, mtype, phase, M, VALSA, COLSA, &
ROWSA, idum, nrhs, iparm, msglvl, ddum, ddum, error)
end subroutine
ここで、追加のインクルード ディレクトリも Visual Studio プロジェクト構成に追加しました (つまり、
C:\Program Files (x86)\Intel\ComposerXE-2011\mkl\include;
C:\Program Files (x86)\Intel\ComposerXE-2011\mkl\lib\intel64;
C:\Program Files (x86)\Intel\ComposerXE-2011\mkl\lib\ia32)
pardiso への呼び出しにコメントすると、すべてが完全に機能します。そうしないと、次のエラーでコンパイルが停止します。
エラー 1 エラー #6285: このジェネリック サブルーチン呼び出しに一致する特定のサブルーチンがありません。[PARDISO_64] ....PardisoFortran\initpardiso.f 144
そのためのアイデアはありますか?それは上のINCLUDEステートメントの問題ですか?どこに含めるべきですか?