我需要找到一種使用MKL轉置矩陣的更快方法。我嘗試了MKL的mkl_domatcopy,但從來沒有把它做對。如何從MKL正確使用mkl_domatcopy?
下面是測試代碼(Fortran語言):
PROGRAM MAIN
INTEGER, PARAMETER:: NROW = 3 !rows
INTEGER, PARAMETER:: NCOL = 3 !cols
REAL*8, ALLOCATABLE:: M(:,:)
REAL*8, ALLOCATABLE:: MT(:,:)
INTEGER:: i,j
ALLOCATE(M(NROW,NCOL))
ALLOCATE(MT(NROW,NCOL))
DO i = 1, NROW
DO j = 1, NCOL
M(i,j)=i
END DO
END DO
call mkl_domatcopy("c","t",3,3,9,M,3,MT,3)
print *,M
print *,"************************"
print *,MT
END
,輸出是:
1.00000000000000 2.00000000000000 3.00000000000000
1.00000000000000 2.00000000000000 3.00000000000000
1.00000000000000 2.00000000000000 3.00000000000000
************************
0
爲什麼MT是0它是東陽我使用它錯了或什麼?
文檔關於此功能: https://software.intel.com/en-us/node/520863
PS:我還沒有得到什麼 '阿爾法' 的意思。
這是固定的或自由格式化的代碼。我在固定格式化代碼的情況下,「呼叫」開始的位置看起來像位置1,移動到至少位置6。 – albert
假設(如上面的註釋中所述)確實是子例程調用而不是註釋,那麼您是否沒有指定子例程的(顯式)接口的方法(模塊,包含文件等)? – francescalus
它是固定格式的代碼。對不起,我沒有得到'位置1'。這是否意味着我應該將'呼叫'移動到底部? – Tau