使用 CI(docker) 跑一个基于 mpi 的程序报错,但实机没有问题

用的 omnetpp 跑一个仿真。并行方面用的 mpi。

mpiexec -n 20 --allow-run-as-root <exec> <args>

CI 是 gitlab runner,用的 docker(shm-size 设的 16G,cpu 和内存没有设置,应该是默认的全部资源)。跑代码时会报一个静态成员地址错误(每次是同一个),但不是第一次执行这块代码时就出错,而是执行了几遍后(大概 200 * 4 * 1x 次)。这个报错的地方只有读操作,所以就没有加锁。

但同机器上,不使用 docker 直接跑这个代码,是可以正常运行的。

代码因为是在私有 repo 里不太方便贴(而且不在手边)。

有什么可能会导致这种问题。。或者有哪些资料可以查找的。。希望可以有个解决的思路方向。。

1 个赞