并发 docker 容器可以加速计算吗?

Can concurrent docker containers speed-up computations?

作为免责声明,我只想说我是 Docker 的初学者,因此这个问题听起来有点“愚蠢”。

我正在探索并行化选项以加速某些计算。我正在使用 Python,所以我按照官方指南创建了 my first image and then run it as a container

目前,我使用一个虚拟程序生成一个非常大的 np 随机矩阵(假设为 4000 x 4000),然后找出每一行中有多少元素落入预定义范围 [min, max]。

然后我用不同的端口和名称启动了同一图像的第二个容器。我没有得到任何我期望的计算速度,因为:

所以我上面a,b对应的问题是:

  1. 并行性是 docker 部署支持的“特性”吗?在什么意义上?它只是负载共享吗?如果我实施负载均衡器,docker 如何知道如何将中间结果从一个容器传输到另一个容器?
  2. 如果上一个问题不“正确”,那么我是否需要编写程序的“并行”版本以分配给每个容器?这不是等同于编写我的程序的 MPI 版本并将它们分配到我系统中的不同内核吗?那么 docker 架构的好处是什么?

提前致谢

Docker 只是一种部署应用程序的方式 - 它本身并不允许您仅通过使用 Docker 来实现 'support' 并行性。您的应用程序本身需要支持并行性。 Docker(和 Kubernetes 等)可以帮助您轻松地进行并行扩展,但您的应用程序需要能够支持这种扩展。

因此,如果您现在可以 运行 并行应用程序的多个实例(但是您可能会这样做)并且它不会带来任何性能改进,那么 Docker 将无济于事。如果 运行 现在使用多个实例 确实 提高了性能,那么 Docker 将有助于横向扩展。