Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.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
C++ 如何生成更高级别的并行代码/脚本?_C++_Shell - Fatal编程技术网

C++ 如何生成更高级别的并行代码/脚本?

C++ 如何生成更高级别的并行代码/脚本?,c++,shell,C++,Shell,我是新手 我有一个C++程序XX,注释XX是这里的一个可执行二进制文件。现在我想让这个程序XX做N次类似的工作,但是有N组不同的输入参数,假设我现在有N个处理器,那么我可以让这N个任务在这N个处理器上同时运行 从脚本级别到qsub这类“并行”作业是否可能?还是可以在C++级别上完成?还有更好的主意吗 我这样问是因为我写的XX代码是基于一个大项目的,我不容易更改代码的mpi部分:( 或者我必须修改XX代码和项目,以有一个新的算法来满足我的需要 或者其他建议,比如使用python或者什么?这可以很快

我是新手

<>我有一个C++程序XX,注释XX是这里的一个可执行二进制文件。现在我想让这个程序XX做N次类似的工作,但是有N组不同的输入参数,假设我现在有N个处理器,那么我可以让这N个任务在这N个处理器上同时运行

从脚本级别到qsub这类“并行”作业是否可能?还是可以在C++级别上完成?还有更好的主意吗

我这样问是因为我写的XX代码是基于一个大项目的,我不容易更改代码的mpi部分:(

或者我必须修改XX代码和项目,以有一个新的算法来满足我的需要

或者其他建议,比如使用python或者什么?这可以很快实现我的目标

非常感谢


我想补充我的问题,让它更清楚

如果这些N的结果是相依的呢?不,我是说我怎么能这样做

第一个周期,N个处理器上的N个作业同时运行,经过一段时间后,它们都结束并给出N个结果,我需要根据这些N个结果执行一个串行作业,这一结果将用作下一个周期的初始条件,然后移动到下一个周期

第二周期

第三周期

等等

是shell脚本能够做到这一点吗?还是我最好学会使用Python?或者我仍然可以使用C++?? 谢谢:)

您可以使用shell脚本并行执行作业


好的旧
xargs
接受一个
-p
参数,告诉它同时执行多少个作业

具有“-j”开关,允许您指定要同时运行的作业数量。因此,如果您能够将整个过程转换为具有适当依赖关系的gnu Makefile,那么您可能能够同时运行指定数量的作业。或者,您可以尝试其他构建系统/自动化工具。或者,您可以在shell脚本或类似的东西中从头开始实现它。也可以使用普通C++,只要你能访问一些线程库。或者可以使用python生成Makefile(或另一个构建脚本)。有很多方法可以做到这一点。

伯恩壳牌可以很好地满足您的要求:

#!/bin/sh
# Run XX 3 times in parallel
XX args&
XX other-args&
XX different-args&
wait  # Wait for all 3 to finish
...

许多shell都有一个外部cmd
xargs
,有些版本会使用
-n2-??
参数来表示并行运行
n
副本。还要寻找gnu并行。这两个都在S.O.的Q/A中有很好的记录。祝你好运。