某些库(如BLAS / LAPACK或某些优化库)在编译时针对本地机器架构进行了优化.让我们以OpenBlas为例.有两种方法可以使用OpenBlas创建Docker容器:
>使用Dockerfile,在其中指定OpenBlas库的git clone以及所有必需的编译标志和构建命令.
>从Docker Hub中拉出并运行其他人的Ubuntu OpenBlas映像.
选项(1)保证为您的机器构建和优化OpenBlas.选项(2)怎么样?作为Docker新手,我认为图像是固定的和静态的,因此运行此图像不会优化到我的机器(可能是基于AMD而不是维护者的Intel CPU).令我困惑的是,图像ipython/scipyserver确实在构建过程中从Github克隆了最新的OpenBlas master.
我似乎误解了Docker镜像和/或自动构建的概念,我非常感谢澄清.
最佳答案 不,我认为你是对的.
您链接的图像是自动构建,因此OpenBlas将使用Docker构建服务器的内核和体系结构进行编译.我确实注意到build script在构建OpenBlas时设置了以下标志:
DYNAMIC_ARCH=1 NO_AFFINITY=1 NUM_THREADS=32
这可能使得安装以性能成本便携.另一种方法是为各种构建配置提供单独的映像.