【发布时间】:2019-01-07 01:49:30
【问题描述】:
假设我有一个很大的输入文件。
假设这个文件有我想并行处理的项目。
std::vector<std::string> items(100000,"");
for(int i = 0; i < 1000000; i++)
items[i] = pop_item(file);
接下来,我想通过与 MPI 并行处理这些项目来加快处理速度:
std::vector<MyObj> processed_items(100000); // pseudo-code, i handle the memory mallocing
int size; rank;
MPI_INIT();
MPI_Comm_size(MPI_COMM_WORLD,&size);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
for(i = rank; i < 100000; i += size)
processed_items[i] = process_item(items[i]);
MPI_FINALIZE();
好的,很好用。
现在,我想在一个while循环中一遍又一遍地做:
while(!done){
done = fill_items(&items, file);
MPI_INIT();
...;
MPI_FINALIZE();
print_items(&processed_items);
}
但是,我因“错误:在调用 mpi finalize 后调用 mpi_init”而失败。
我在 MPI 中处理此问题的预期方式是什么?
【问题讨论】: