gfortran matmul openMP

gfortran matmul openMP

gfortran (gcc-9) 是否会自动并行化 matmul() 内在函数,如果使用 -fopenmp 编译(和 运行 whith OMP_NUM_THREADS > 1 in Linux)?如果是这样,有没有办法将其关闭?

没有应用 -fextrnal-blas 标志来为 matmul 调用并行 BLAS。

在GCC的代码中你可以很容易地看到:

https://github.com/gcc-mirror/gcc/blob/master/libgfortran/generated/matmul_r4.c

许多 Fortran 内部调用实际上是作为库 libgfortran 提供的外部函数实现的,matmul 也不例外。所有基本数值类型(及其种类)都有一个单独的 matmul C 代码,还有各种目标向量指令集(AVX、FMA 等)的替代形式。但其中 none 显然使用了任何 OpenMP 指令。