我有一个用c ++编写的淡化代码。它的作用是计算数组w,t和程序运行所花费的总时间。我已经在代码下面包含了输出内容的照片。平均时间是t阵列的平均值。
我想使用OpenMPI并行化代码。我已经开始初始化并获取proc ID和proc数量。我已经在线搜索并观看了youtube vids来学习命令,但我无法获得有关实现for循环的任何信息。我假设平均时间和经过的时间我会使用MPI发送和接收?但是对于forloop我假设处理器应该单独运行迭代并以某种方式在最后收集它?
已经坚持了一段时间......帮助
// number of iterations. Change accordingly
int iteration = 10;
// Record start time
auto start = std::chrono::high_resolution_clock::now();
// Toughness array
double w[iteration];
// Time array;
double time[iteration];
//time interval
double delta_t = 1e-6;
int main() {
// Call MPI initialization
MPI_Init(NULL, NULL);
// Get my processor ID and number of processor
int myProcID;
int numProcs;
MPI_Comm_rank(MPI_COMM_WORLD, &myProcID);
MPI_Comm_size(MPI_COMM_WORLD, &numProcs);
for (int i = 0; i < iteration; i++){
...
if (...){
w[i] = ...
time[i] = ...
t = ...
}
t = t + delta_t;
}
cout << setprecision(13)<< time_sum/iteration <<endl;
cout << setw(20) << left << "Time"<< setw(10) << left << "Toughness" <<endl;
for(int i=0; i<10 ; i++){
cout<< setw(20) << left <<setprecision(13)<<time[i]<< setw(10) << left <<setprecision(13)<<w[i]<<endl;
}
auto finish = std::chrono::high_resolution_clock::now();
std::chrono::duration<double> elapsed = finish - start;
std::cout << "Elapsed time: " << elapsed.count() << " s\n";
}