我剛剛安裝了用於Fortran OS X *(學生版)的英特爾®Parallel Studio XE Composer版。它帶有Math Kernel Library,這就是我購買它的原因。我很難開始使用MKL。這是我一步一步完成的。如何在命令行上使用英特爾Fortran編譯器和MKL
1)安裝了用於Fortran OS X *的英特爾®Parallel Studio XE Composer Edition(沒有問題)。我可以使用ifort
運行一個'hello world'腳本,並在末尾拋出-mkl
鏈接命令(沒有調用任何mkl命令)。
2)以下these instructions我使用intel提供的腳本(精確地位於opt/intel/bin中)設置我的環境變量。我有intel 64位架構(根據ifort -V
),所以我使用bash mklvars.sh intel64 mod ilp64
。它運行沒有錯誤(或任何輸出)。
3)我寫下面的代碼,以使用MKL的gemm命令fortran95。只需乘以2個矩陣。
program test
implicit none
real, dimension(2,2) :: testA, testB, testC
testA = 1
testB = 1
testC = 0 ! I don't think I need this line, but it shouldn't matter
call gemm(testA, testB, testC)
write(*,*) testC
end program test
4)我用ifort test_mkl.f90 -o test -mkl
編譯。我收到以下錯誤:
Undefined symbols for architecture x86_64:
"_gemm_", referenced from:
_MAIN__ in ifortSTVOrB.o
ld: symbol(s) not found for architecture x86_64
5)我嘗試ifort test_mkl.f90 -o test -L/opt/intel/mkl/lib -mkl
並得到相同的結果。
我注意到有很多人使用MKL的人開始自己的代碼USE mkl95_blas, ONLY: gemm
,所以我把在上面的兩個例子,並得到上述implicit none
:
test_mkl.f90(4): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [MKL95_BLAS]
USE mkl95_blas, ONLY: gemm
--------^
test_mkl.f90(12): error #6406: Conflicting attributes or multiple declaration of name. [GEMM]
call gemm(testA, testB, testC)
---------^
test_mkl.f90(4): error #6580: Name in only-list does not exist. [GEMM]
USE mkl95_blas, ONLY: gemm
--------------------------^
compilation aborted for test_mkl.f90 (code 1)
任何想法是什麼問題或如何解決這個問題?我已經成功使用MKL的run a simple script in XCODE,所以這絕對是我正在做的事情,而不是我的安裝。
查看是否可以找到該模塊的路徑... – Jeff
您必須爲rigjt include路徑設置環境。這是您在英特爾支持論壇上應該詢問的一個典型問題,您需要爲您的支持付費。 –
感謝弗拉基米爾,看到您的評論後,我嘗試了MKL的英特爾支持論壇,並在那裏找到了一些幫助。 – benten