Docker镜像与架构优化?

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

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

  2. 从Docker Hub中拉出并运行其他人的Ubuntu + OpenBlas的图像。

选项(1)保证OpenBlas是为您的机器构build和优化的。 选项(2)呢? 作为一个Docker新手,我看到图像是固定的和静态的,所以运行这个镜像不会被我的机器(可能是基于AMD的而不是维护人员的Intel CPU)优化。 让我感到困惑的是图像ipython / scipyserver在构build过程中从Github克隆了最新的OpenBlas master。

我似乎误解了Docker映像和/或自动构build的概念,我非常感激澄清。

不,我认为你是对的。

你链接到的图像是一个自动构build,所以OpenBlas将使用Docker构build服务器的内核和体系结构进行编译。 我注意到构build脚本在构buildOpenBlas时设置了以下标志:

DYNAMIC_ARCH=1 NO_AFFINITY=1 NUM_THREADS=32 

这大概使安装便携性能的性能成本。 另一种方法是为各种构buildconfiguration分别创build一个图像。