我有两个用C ++编写的独立程序,现在必须在运行时通过某种接口进行耦合。我尝试使用伪代码在下面绘制草图:
program1.cpp:
program1(){
initializeProgram1();
for (i = 0; i < nIterations; i ++){
A = veryComplexParallelCalculation();
postProcessAndOutput(A);
}
finishProgram1();
}
program2.cpp:
program2(){
prepareProgram2();
for (i = 0; i < nIterations; i ++){
B = evenMoreComplexParallelCalculation();
OutputAndPostProcess(B);
}
finishProgram2();
}
我们需要在program1.cpp
中的循环中添加另一个函数,该函数在运行时期间使用program2.cpp
的结果与迭代i
的相同值。例如,两个程序的修改循环如下所示:
for (i = 0; i < nIterations; i ++){
A = veryComplexParallelCalculation();
postProcessAndOutput(A);
//iB is the iteration number from program2
getBfromProgram2(B, iB);
if (iB == i )
C = foo(A ,B);
}
在program2.cpp
中,它会像
for (i = 0; i < nIterations; i ++){
B = evenMoreComplexParallelCalculation();
OutputAndPostProcess(B);
//send data and iteration number to program1
sendBtoProgram1(B, i);
doSomeOtherStuff();
}
所以我想知道是否有可能在program2的运行时期间捕获变量B
并将其发送到program1。注意,两个程序是两个无法合并的巨大项目!
或许可以使用某种接口或包装器(某种程序间的MPI_Send / Recv :)?我也在考虑i / o到/来自文件。我会赞成任何有关它的想法。