параллелизм — программы Link 2 C ++ в Linux во время выполнения с обменом переменными

У меня есть две независимые программы, написанные на 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();
}

Так что мне интересно, если это возможно, чтобы поймать переменную B во время выполнения программы2 и отправьте ее в программу1. Обратите внимание, что две программы — это два огромных проекта, которые невозможно объединить!

Или, может быть, какой-то интерфейс или обертка могут быть использованы (какой-то межпрограммный MPI_Send / Recv :)? Я также думал о вводе / выводе из файла. Я бы оценил любые идеи по этому поводу.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]