我的应用程序涉及在串行时间执行中运行myfuns()
。它调用dothings(...)
,它有一个对象实例,有些传递给它。这个函数涉及一个循环,每个循环都进行广度优先搜索,这非常耗时。我已经使用OpenMP进行循环,它加速了一点点,不够好。我正在考虑使用MPI并行来获得更多的进程,但不确定如何以有效的方式使用它来嵌入深度嵌入到顺序代码中的这部分代码。
void dothings (object obji...) {
std::vector retvec;
for (i = 0; i < somenumber; i++) {
/* this function involves breadth first search using std:queue */
retval = compute(obji, i);
retvec.push_back(retval);
}
}
/* myfuns() gets called in a sequential manner */
void myfuns() {
dothings(objectInstance,...)
}