我有這個parallel for
循環的OpenMP:加大對循環迭代數
struct p
{
int n;
double *l;
}
#pragma omp parallel for default(none) private(i) shared(p)
for (i = 0; i < p.n; ++i)
{
DoSomething(p, i);
}
現在,有可能是內部DoSomething()
,p.n
因爲新的元素添加到p.l
增加。我想以平行的方式處理這些元素。 OpenMP手冊指出parallel for
不能與列表一起使用,因此DoSomething()
將這些p.l
的新元素添加到按順序處理的另一個列表中,然後將其與p.l
連接。我不喜歡這個解決方法。任何人都知道一個更清潔的方式來做到這一點
您如何期望OpenMP在不知道會有多少人的情況下產生工作?沒有元素的元素應該如何工作?這是不可能的。 – bitmask 2012-08-13 07:50:50
當所有工作完成後,再次檢查條件,如果有新的元素產生,請啓動更多工作 – Patrik 2012-08-18 11:23:24