1

我们正在尝试通过 docker 部署一个以 python 为中心的面向数学的应用程序(许多 numpy/scipy/etc 库),并发现该容器在某些硬件上运行良好,并且在其他硬件上失败并出现“非法指令”,因为它启动 Flask 应用程序(我假设这是因为某些导入,但错误消息没有帮助)。

背景:当我测试 Fargate 部署时,这实际上与 AWS 一起发挥了作用;它在他们的 EC-2 实例上运行良好,但作为 Fargate 容器失败(也很令人沮丧;零输出。花了一些时间来寻找它)。

实际上,这两台机器(由 /proc/cpuinfo 提供)具有不同的处理器(EC2 机器是 Intel Xeon E5-2676 v3@2.4GHz,Fargate 机器是 Intel Xeon E5-2680 v2@2.8GHz)并支持不同的标志(EC2 机器似乎启用了 Fargate 没有启用的这些标志:avx2、bmi1、bmi2、fma、invpcid、invpcid_single)。我见过 AVX/AVX2 不兼容可能导致这种情况的情况,但我不知道如何确认这是问题所在。我觉得这是一个 CFLAGS 问题,但我并不积极。

不管是不是问题,我将如何干净地修改我的构建过程(环境变量?)以使容器更便携并消除这个困难?我们做了一点 C++,但直到应用程序启动后才调用它,所以这是来自 Python 安装/Pip 过程,我不太清楚如何在那里建立编译设置。

4

0 回答 0