如果我包含该库,fortran 的 'matmul' 会使用 MKL 吗?
Will fortran's 'matmul' make use of MKL if I include the library?
我现在正在写一些代码,我有一个带有 matmul
的占位符,它看起来工作得很好,但我想使用 LAPACK
dgemm
实现.我现在只使用 gfortran
并使用 matmul
获得非常好的速度,但我想知道我是否可以变得更好。
当前通话是:
C = transpose(matmul( transpose(A), B))
其中 A
、B
和 C
是非方阵,double precision
矩阵。我可以使用 LAPACK
的当前 gfortran
实现轻松地为 dgemm
编写一个包装器,但我喜欢我可以将这一切作为一个函数来完成(而不是担心 call
对于一个 surbroutine 并且必须处理 transpose
).
我想知道如果我用 ifort
编译并包含 MKL
,这个 matmul
会神奇地变成 MKL
dgemm
函数吗?没有包装纸?
你不希望所有的 MATMUL 都是 dgemm,它对非常小的矩阵来说是无利可图的。
Gfortran 做你想做的事
-fexternal-blas
This option will make gfortran generate calls to BLAS functions for some matrix operations like MATMUL, instead of using our own
algorithms, if the size of the matrices involved is larger than a
given limit (see -fblas-matmul-limit). This may be profitable if an
optimized vendor BLAS library is available. The BLAS library will have
to be specified at link time.
您甚至可以通过 -fblas-matmul-limit=n
更改切换到 BLAS 的大小限制
您可以通过这种方式在 gfortran 中轻松使用 MKL。
Intel Fortran 有类似的东西
[no
- ] opt-matmul This option enables [disables] a compiler
- generated Matrix Multiply (matmul) library call by identifying matrix multiplicat ion loop nests , if any , and replacing them with a
matmul library call for improved performance. This option is enabled
by default if options / O3 (
- O3) and /Qparallel (
- parallel) are specified. This option has no effect unless option / O2 (
- O2) or higher is set.
我现在正在写一些代码,我有一个带有 matmul
的占位符,它看起来工作得很好,但我想使用 LAPACK
dgemm
实现.我现在只使用 gfortran
并使用 matmul
获得非常好的速度,但我想知道我是否可以变得更好。
当前通话是:
C = transpose(matmul( transpose(A), B))
其中 A
、B
和 C
是非方阵,double precision
矩阵。我可以使用 LAPACK
的当前 gfortran
实现轻松地为 dgemm
编写一个包装器,但我喜欢我可以将这一切作为一个函数来完成(而不是担心 call
对于一个 surbroutine 并且必须处理 transpose
).
我想知道如果我用 ifort
编译并包含 MKL
,这个 matmul
会神奇地变成 MKL
dgemm
函数吗?没有包装纸?
你不希望所有的 MATMUL 都是 dgemm,它对非常小的矩阵来说是无利可图的。
Gfortran 做你想做的事
-fexternal-blas This option will make gfortran generate calls to BLAS functions for some matrix operations like MATMUL, instead of using our own algorithms, if the size of the matrices involved is larger than a given limit (see -fblas-matmul-limit). This may be profitable if an optimized vendor BLAS library is available. The BLAS library will have to be specified at link time.
您甚至可以通过 -fblas-matmul-limit=n
更改切换到 BLAS 的大小限制您可以通过这种方式在 gfortran 中轻松使用 MKL。
Intel Fortran 有类似的东西
[no - ] opt-matmul This option enables [disables] a compiler - generated Matrix Multiply (matmul) library call by identifying matrix multiplicat ion loop nests , if any , and replacing them with a matmul library call for improved performance. This option is enabled by default if options / O3 ( - O3) and /Qparallel ( - parallel) are specified. This option has no effect unless option / O2 ( - O2) or higher is set.