像折叠“家庭”这样的程序是如何工作的?我的电脑
发布于 2022-09-19 07:25:46
像折叠@Home和BOINC这样的项目是松散耦合并行计算的例子,在这种情况下,每个任务都是完全独立的,无需与其他计算实体通信就可以完成。它们也是一种称为控制器/工作者(以前称为主/工作者)的模式的例子,在这种模式中,中央控制器将一个大型任务分解成一个小型(呃)子任务池,并以先到先得的方式将其分配给一组工作进程,这与您的第一点相对应。
在F@H (和BOINC)中,客户端计算机连接到服务器,请求任务,直到任务完成,然后再连接到服务器,返回结果并请求一个新任务。这样做的好处是自动负载平衡、容错(通过冗余)和不需要调度。
当您运行make -j #cores时,make会启动许多并行作业,但是这些作业通常是相互依赖的,因此make必须以最优的方式对它们进行调度。然后,作业作为进程在同一台计算机上运行,这将为make提供完整的进程控制。如果生成步骤失败,整个构建作业将立即中止,用户可以快速查看问题,修复问题,并重新启动构建。这不是一个可行的模型,因为客户端计算机可以具有任意的计算速度,可以在任何时候连接和断开连接,并且/或决定简单地停止处理任务。有一些make的分布式版本,比如dmake,它们在不同的远程节点上运行构建过程的不同部分,但是这种情况仍然发生在一个严格控制的环境中,通常是在构建集群上。
请注意,在非常高的抽象级别上,这两者基本上是等价的,主要的区别在于工作是被推送还是被拉出来的。尽管作业拉动在各种系统上都能很好地工作,但作业推送通常要求(紧密耦合的)系统具有可预测的特性和良好的调度算法。
https://stackoverflow.com/questions/73766959
复制相似问题