如何在 tensorflow 中使用 intel-mkl

Posted

技术标签:

【中文标题】如何在 tensorflow 中使用 intel-mkl【英文标题】:How can I make use of intel-mkl with tensorflow 【发布时间】:2016-09-25 07:04:11 【问题描述】:

我看过很多关于使用 tensorflow 的 CPU 的文档,但是,我没有 GPU。我所拥有的是一个相当强大的 CPU 和一个 5GB 的英特尔数学内核,我希望这可以帮助我加快 tensorflow 的速度。

有谁知道我如何使用 intel-mlk “制作” tensorflow?

【问题讨论】:

不容易。 TensorFlow 不使用 BLAS 接口,因此您不能像使用 numpy 那样插入不同的 blas 实现。它使用直接调用 Eigen 的内核,因此您要么需要编写一个使用 MKL 的内核,要么制作支持 MKL 的 Eigen 版本 【参考方案1】:

从源代码构建 TensorFlow 1.2,并在配置步骤中启用 MKL 支持。

Mac 用户注意事项

截至 2017 年 12 月,MKL 仅适用于 Linux。见https://tensorflow.org/performance/performance_guide#optimizing_for_‌​cpu

注意:MKL 从 TensorFlow 1.2 开始添加,目前仅适用于 Linux。也使用 --config=cuda 时也不起作用。

【讨论】:

实际上,据我测试,您可以在 1.4 上同时拥有 MKL 和 cuda。【参考方案2】:

由于 tensorflow 使用 Eigen,请尝试使用支持 MKL 的 Eigen 版本,如 here 所述:

    在包含任何 Eigen 的标头之前定义 EIGEN_USE_MKL_ALL 宏 将您的程序链接到 MKL 库(请参阅 MKL linking advisor) 在 64 位系统上,您必须使用 LP64 接口(不是 ILP64 接口)

所以一种方法是按照上面的步骤修改tensorflow的源码,重新编译安装到你的机器上。当您使用它时,您还应该尝试使用 Intel 编译器,如果您 set the correct flags: -O3 -xHost -ipo,它本身可能会提供不错的性能提升。

【讨论】:

【参考方案3】:

我知道已经过去了整整一年,但我现在看到有一个用于英特尔优化的 Tensorflow 的办公室 WHEEL。值得一试 https://software.intel.com/en-us/articles/intel-optimized-tensorflow-wheel-now-available

【讨论】:

以上是关于如何在 tensorflow 中使用 intel-mkl的主要内容,如果未能解决你的问题,请参考以下文章

基于 Intel 的显卡是不是与 tensorflow/GPU 兼容?

超详细windows10下TensorFlow2.*安装(对于intel处理器。tensorflow_cpu和tensorflow_gpu)通用

使用 Intel Realsense D415 进行物体识别

仅使用 PIP 为 CPU 安装 Tensorflow 2.x

安装pytorch后出现Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.错误

安装pytorch后出现Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.错误