Docker 具有架构优化的图像?

Docker images with architecture optimisation?

某些库(例如 BLAS/LAPACK)或某些优化库会在编译时针对本地机器架构进行优化。让我们以 OpenBlas 为例。有两种方法可以使用 OpenBlas 创建 Docker 容器:

  1. 使用 Docker 文件,在其中指定 OpenBlas 库的 git 克隆以及所有必要的编译标志和构建命令。

  2. 从 Docker Hub 拉取和 运行 其他人的 Ubuntu + OpenBlas 图片。

选项 (1) 保证 OpenBlas 是为您的机器构建和优化的。选项(2)呢?作为一个 Docker 新手,我将图像视为固定和静态的东西,因此 运行 宁此图像不会针对我的机器进行优化(它可能是基于 AMD 而不是维护者的英特尔 CPU).让我感到困惑的是,图像 ipython/scipyserver 确实在构建过程中从 Github 克隆了最新的 OpenBlas master。

我似乎误解了 Docker 图像 and/or 自动构建的概念,非常感谢您的澄清。

不,我认为你说的很对。

您 link 的图像是自动构建的,因此 OpenBlas 将使用 Docker 构建服务器的内核和体系结构进行编译。我确实注意到 build script 在构建 OpenBlas 时设置了以下标志:

DYNAMIC_ARCH=1 NO_AFFINITY=1 NUM_THREADS=32

这可能会以性能成本为代价使安装变得可移植。另一种方法是为各种构建配置使用单独的图像。