0

我正在尝试移植 MS VC++ 程序以在 Rocks 集群上运行!我不太擅长 linux,但我渴望学习,我想移植它对我来说不是不可能完成的任务。但是,我不明白如何利用集群节点。因为似乎执行的代码只在前端服务器上运行(显然)。

我已经阅读了一些关于 MPI 的内容,似乎我应该使用 MPI 在节点之间进行通信。该程序目前是这样编写的,因此我有一个同步所有工作线程的主线程。主线程还接收操作模拟或查询其状态的命令。如果模拟设置正确,执行线程之间的通信可以显着减少。我不明白的是如何在计算节点上启动进程以及如何处理节点中的故障?在移植我的程序以在集群中运行时,也许还应该考虑其他一些事情?

4

1 回答 1

1

第一步是将线程化的 MS VC++ 程序移植到单台 Linux 机器上运行。

一旦你超过了这一点,然后修改你的程序以使用 MPI 和线程(或代替线程)。您也可以在单台计算机上执行此操作。

要在集群上的多个节点上运行程序,您需要将程序提交到集群使用的任何调度系统。执行此操作的命令取决于 Rocks 集群使用的调度软件。询问您的管理员。它可能看起来像mpirun -np 32 yourprogram.

处理故障是节点是一个广泛的问题。您的第一次通过可能应该只报告失败,然后使程序失败。如果程序不需要很长时间在集群上进行计算,那么重新启动程序并针对故障节点进行调整可能就足够了。除此之外,您的应用程序可以将所需的中间信息写入磁盘,以便从中断的地方恢复。这称为检查点您的应用程序。因此,当节点失败时,作业会失败,但重新启动作业不会从头开始。更高级的是尝试实际检测节点故障并重新安排故障节点上的工作单元。这假设工作单元没有非幂等副作用。这种事情变得非常复杂。检查点可能已经足够好了。

于 2013-07-01T04:31:04.287 回答