Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cluster computing 移植MS VC++;将(单机)编程到rocks群集_Cluster Computing_Rocks - Fatal编程技术网

Cluster computing 移植MS VC++;将(单机)编程到rocks群集

Cluster computing 移植MS VC++;将(单机)编程到rocks群集,cluster-computing,rocks,Cluster Computing,Rocks,我正在尝试移植一个MS VC++程序以在rocks集群上运行!我对linux不是很在行,但我渴望学习,我想移植它对我来说不是不可能的任务。然而,我不明白如何利用集群节点。因为代码execute似乎只在前端服务器上运行(显然) 我读过一些关于MPI的书,似乎我应该使用MPI在节点之间进行通信。该程序目前的编写方式是,我有一个主线程来同步所有工作线程。主线程还接收操作模拟或查询其状态的命令。如果模拟设置正确,执行线程之间的通信可以大大减少。我不明白的是如何在计算节点上启动进程,以及如何处理节点中的故

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


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

< P>第一步是移植线程的MS VC++程序在一个Linux机器上运行。 一旦您通过了该点,那么修改您的程序,除了使用线程(或代替线程)外,还可以使用MPI。您也可以在一台计算机上执行此操作

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


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

感谢您提供了非常翔实的答案。检查指针听起来是个好主意。模拟几乎是无限期地运行,或者直到我们暂停它(当有趣的事情发生时)。也许可以调整一些参数,然后再次运行它。所以它永远不会真正完成。为了维护,我们将整个状态转储到磁盘,以便稍后恢复。