通过 icc 或 gcc 编译和链接 mkl 库之间是否存在性能差异?

Is there a performance different between compiling and linking mkl library via icc or gcc?

我找不到关于这个主题的任何信息, 运行使用 gcc 或 icc 编译和链接的程序时,运行时间性能有什么不同吗?

(我假设程序运行在Intel架构上)

因为这两个编译器都由 MKL 正式支持,并且它们 link 相同的库,例如 libmkl_core.alibmkl_core.so,它们为 MKL 执行实际工作。 MKL 操作的性能应该相同。当然自己写的代码可能会因为不同的编译器编译而有所不同。

编辑

MKL 被设计为 C 库。大多数 API 都是预编译的,并且设计用于 运行 大型输入数据,这需要相对较长的 运行ning 时间。您调用 API 的方式不会对性能产生太大影响。

有内联代码和辅助宏通过。例如 mkl_direct_call.h include inline code/marco for small matrix multiplication, small matrix (size of ~20 or smaller) may get performance improvement with this code.因此,您可能会在涉及这部分时看到性能差异。详情请参考以下link。

Improve Intel MKL Performance for Small Problems: The Use of MKL_DIRECT_CALL

Limitations of the Direct Call