Optimization Docker图像与架构优化?

Optimization Docker图像与架构优化?,optimization,docker,lapack,blas,Optimization,Docker,Lapack,Blas,一些库(如BLAS/LAPACK或某些优化库)在编译时针对本地机器体系结构进行了优化。让我们以OpenBlas为例。使用OpenBlas创建Docker容器有两种方法: DYNAMIC_ARCH=1 NO_AFFINITY=1 NUM_THREADS=32 使用Dockerfile,其中指定OpenBlas库的git克隆以及所有必要的编译标志和构建命令 从Docker Hub拉取并运行其他人的Ubuntu+OpenBlas图像 选项(1)保证OpenBlas是为您的机器构建和优化的。选择(2)

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

DYNAMIC_ARCH=1 NO_AFFINITY=1 NUM_THREADS=32
  • 使用Dockerfile,其中指定OpenBlas库的git克隆以及所有必要的编译标志和构建命令

  • 从Docker Hub拉取并运行其他人的Ubuntu+OpenBlas图像

  • 选项(1)保证OpenBlas是为您的机器构建和优化的。选择(2)如何?作为一名Docker新手,我认为映像是固定的和静态的,因此运行此映像不会对我的机器(可能是基于AMD的,而不是维护者的Intel CPU)进行优化。让我感到困惑的是,在构建过程中,该映像确实从Github克隆了最新的OpenBlas主机


    我似乎误解了Docker映像和/或自动构建的概念,我非常希望得到澄清。

    不,我认为你说得很对

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

    DYNAMIC_ARCH=1 NO_AFFINITY=1 NUM_THREADS=32
    

    这可能会以性能成本使安装变得可移植。另一种选择是为各种构建配置提供单独的映像。

    谢谢Adrian!您是对的-通过添加DYNAMIC_ARCH=1,所有CPU内核都会被编译(从而增加编译时间),然后根据调用OpenBlas的CPU体系结构进行拉取。整洁的好的,这很有趣!更新:Docker不再只是Linux 64位,而是针对Windows 10 PRO和Windows server 2016的Windows 64位本机容器。Docker Linux 32位@Walid的努力也是如此。我已经删除了那句话。@AdrianMouat我喜欢你的书和你的写作方式。谢谢你的社区精神。