2014-10-05 67 views
1

我是BLAS的新手,並試圖編譯我的Fortran程序,該程序使用BLAS進行矩陣乘法。我有兩個矩陣A和B.fortran編譯blas程序錯誤

integer, parameter :: RK = selected_real_kind(10,2) 
real(kind=RK),pointer :: A(:,:), B(:,:), C(:,:) 

然後我把一些隨機值到它,並嘗試繁殖:

call dgemm('N', 'N', N, N, N, 1.0_RK, 
     A, N, B, N, 0.0_RK, C, N) 

N是兩個矩陣的大小。所有參數都正確嗎?

我不能編譯,並得到以下錯誤:

call dgemm('N', 'N', N, N, N, 1.0_RK, 
             1 
Error: Syntax error in argument list at (1) 
matrixmul.F90:44.2: 

    A, N, B, N, 0.0_RK, C, N) 
    1 
Error: Unclassifiable statement at (1) 

問題是什麼?我應該用一些指定的BLAS標誌進行編譯嗎?我已經安裝BLAS爲explained here

回答

3

你不能只是繼續在Fortran中一個新的生產線,您必須指定該行的末尾延續:

call dgemm('N', 'N', N, N, N, 1.0_RK, & 
     A, N, B, N, 0.0_RK, C, N) 

在你把一切在第六欄上新的生產線,而不是固定的形式。

沒有特殊的BLAS標誌,你只需告訴鏈接器你想鏈接到BLAS庫。在我的操作系統上,它由-lblas-lmkl或類似的程序完成。

+0

Thans!現在我用-lblas編譯並且有另一個錯誤:matrixmul.F90 :(。text + 0x592):未定義的對'dgemm_'的引用。我如何驗證BLAS是否已安裝? – Bob 2014-10-05 07:43:07

+0

搜索'libblas.so'或'libblas.a'或'blas.dll'你有什麼操作系統? – 2014-10-05 07:44:34

+0

我的操作系統 - Ubuntu 12.04和搜索後,我有:/etc/alternatives/libblas.a /usr/lib/libblas.a /usr/lib/libblas/libblas.a,這表明該庫已安裝。 – Bob 2014-10-05 07:45:26