在网络上的计算机上运行 C++ 程序

在网络上的计算机上运行 C++ 程序

我有一个多线程的 C++ 程序。我相信如果我可以在通过交换机连接的其他计算机上运行它,吞吐量将会增加。所有这些都使用相同的操作系统(Ubuntu)。有没有一种方法可以在不更改代码的情况下做到这一点?如果我需要更改代码,我应该寻找什么?

答案1

如果不更改代码,这通常是不可能的。

多线程程序将利用单台计算机上的处理器。一旦您想要在连接的机器网络上运行相同的程序并使该程序的各个实例相互通信,代码就必须在运行在不同机器上的程序的多个副本之间进行显式消息传递。簇。

有一些库可以做到这一点。一个相当著名的标准称为消息传递接口,或简称为 MPI,大多数免费的 Unices 都存在 MPI 的实现。

如果程序正在执行的处理是尴尬地平行,这意味着程序的多个副本将能够处理输入数据块而无需相互通信,那么这可能是一个更容易解决的问题,并且可以使用 GNU 来完成parallel

最终取决于程序实际在做什么。

相关内容