c++可执行程序的分布式计算

标签 c++ parallel-processing cluster-computing distributed-computing

我想知道是否可以在不添加源代码的情况下运行可执行程序,就像在多台计算机上运行任何游戏一样。当我用 c# 编程时,我注意到一个进程方法,它可以让你召唤或关闭任何应用程序或进程,我想知道是否有类似于 c++ 的东西可以让我将任何可执行文件或游戏的进程转移到其他计算机或服务器最大限度地减少我的计算机的处理器消耗。

谢谢。

最佳答案

一切皆有可能,但这需要大量的工作,而且几乎肯定会使您的程序变慢(我在这里说的是数百万或数十亿的因数)。本质上,您需要确保程序中使用的每一层都允许这样做。因此,您必须重写操作系统才能执行此操作,而且还必须重写它使用的许多库。

为什么?假设您想要在不同机器上分配实际线程。如果它是实际流程,它会稍微更容易,但令我惊讶的是许多应用程序都是这样工作的。

首先,您需要同步内存,更具体地说是所有非线程本地存储,这通常意味着“所有内存”,因为并非所有语言都有线程感知内存模型。当然,这可以优化,例如缓冲所有内容,直到遇到“原子”读取或写入,当然如果您的系统有这样的概念。现在,您能想象每当必须锁定/解锁线程或必须读取/写入原子变量时,每个线程都会为同步而阻塞几秒钟吗?

接下来是与管理设备相关的问题。假设您需要一个网络连接:哪个设备将启动它,如何选择 ip,...?为了无缝地解决这个问题,您可能需要一个在所有平台之间共享的虚拟设备。这必须发生在网络设备、文件系统、打印机、监视器……。正如您亲切地提到游戏:这也应该发生在 GPU 上,想象一下这将如何影响仅从 GPU 发送数据/向 GPU 发送数据的性能(提示:即使 16xpci-e 通常已经成为瓶颈)。

总结:这是不可行的,如果你想要一个集群应用,你必须从头开始构建到应用中。

关于c++可执行程序的分布式计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563423/

相关文章:

c++ - C++函数返回数组的方法

kubernetes - 是否有任何API或Go编程逻辑来获取kubernetes集群中节点的容量?

hadoop - 我可以使用 hadoop 发行版而不是手动安装吗?

python - 如何在 mpi4py 中分散和收集 python 对象列表

c++ - 无法编译简单的C++17程序

c++ - 自定义窗口断言 - 禁用按钮 "retry"

C++横向协变: return type differs due to incomplete type

python - 对 Pandas 数据框应用/矢量化/加速按列清理功能

r - R 中的异步编程

我们可以并行化这个任务吗?