有没有解决方案可以使用远程 PC CPU(和/或 GPU)来加速本地进程?
我的理想解决方案应该是:
- 无需重写应用程序即可使用特定库;
- 在异构操作系统和架构上工作(必要时使用动态重新编译);
- 支持服务故障转移:如果某些网络节点出现故障,执行仍可在剩余节点上继续进行(如果主节点被隔离,甚至仅在本地进行)。
用例:PC1 的性能不如 PC2,但我仍然喜欢在其上运行一些耗 CPU 的应用程序,并在执行期间使用其本地资源(文件系统、USB 外围设备等)。因此,我不想完全委托进程执行(如在 VNC 中),而是想在运行时动态委托其中的一部分。
答案1
is there a solution to accelerate a local process using remote PC CPUs (and/or GPU)?
是的,您所描述的就是计算机集群。但我想您已经知道这一点了,因为您已将问题标记为计算机集群。因此,我将回答您的要点:
work without the need to rewrite the app to use a specific library;
不。就像编写多线程应用程序以利用多核 CPU 一样,编写分布式应用程序以在集群中的节点之间分配其工作负载。从逻辑上讲,这与团队中一起工作的人遇到的问题相同。您必须制定计划,将其分解为单个任务,将这些任务委派给某些人,然后与这些人协调完成工作。必须这样做,因为其他人无法分享您的记忆、听到您的想法或看到您脑海中的愿景。
work on heterogeneous OSes and archs (using dynamic recompilation if necessary);
这可以通过为每个目标平台编写的客户端或使用 Java 或 Python 等通用语言来实现。
support service fail-over: if some network nodes go down execution can still proceed on the remaining nodes (or even just locally if the main node became isolated).
编写良好的分布式应用程序无需担心节点发生故障。计算任务由“主节点”分解为多个部分,并委托给列表中的处理单元。如果处理节点发生故障,这些任务将永远不会完成,并会保留在列表中供其他节点处理。
无论如何,没有灵丹妙药可以打造出一个强大的超级计算集群来处理 Excel 电子表格和运行游戏。分布式应用程序必须专门为这类任务而设计。请记住,大多数应用程序甚至无法在同一台机器上使用多个处理器核心,更不用说云端某台计算机中的处理器核心了。