Ich muss einen schnelleren Weg finden, eine Matrix mit MKL zu transponieren. Und ich habe mkl_domatcopy von MKL ausprobiert, aber nie richtig verstanden. HierWie verwende ich mkl_domatcopy von MKL?
ist der Testcode (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
Und der Ausgang ist:
1.00000000000000 2.00000000000000 3.00000000000000
1.00000000000000 2.00000000000000 3.00000000000000
1.00000000000000 2.00000000000000 3.00000000000000
************************
0
warum die MT 0 Ist es beacause ich es falsch oder etwas verwenden?
Dokumente zu dieser Funktion: https://software.intel.com/en-us/node/520863
PS: ich immer noch nicht bekommen, was 'Alpha' bedeutet.
Ist der fixe oder freier formatiertem Code. Bei fest formatiertem Code an der Position, an der der Aufruf beginnt, sieht er wie Position 1 aus, verschiebe ihn auf mindestens Position 6. – albert
Nehmen wir an (wie im obigen Kommentar), dass es sich wirklich um einen Unterprogrammaufruf handelt, der kein Kommentar ist. Verfügen Sie nicht über einige Mittel (Modul, Include-Datei usw.) zur Angabe der (expliziten) Schnittstelle für das Unterprogramm? – francescalus
Es ist fester formatierter Code. Es tut mir leid, dass ich nicht "Position 1" bekomme. Bedeutet das, dass ich den "Call" nach unten verschieben sollte? – Tau