有什么办法可以使用openmP将循环与可能在每次迭代中添加更多元素的列表并行化?据我了解,openmP可以通过将每个线程的范围分成多个块来并行化for循环,但是在这种情况下,范围会改变,对于一种情况,循环可能有10次迭代,而对于另外100次,则是列出我通常会有大约10-20个元素。
这是我要并行化的示例(请注意,将事物插入到vectorOfResults中的顺序无关紧要)
while(!list.empty()) {
vectorOfResults.push_back(performExpensiveFunction());
if (conditions) {
add new elements to the list;
}
}
我一直在考虑在while循环内执行类似的操作,使用列表中当前“批处理”元素的for循环(将它们复制到临时列表中),然后下一次while迭代将使用新添加的元素,但是我在考虑是否有一种方法可以使用其他openmp构造。 (我现在只介绍一下openmp)。
感谢您的帮助。