Добрый день
Есть такой параллельный код
C++ (Qt)
#pragma omp parallel for schedule dynamic(1)
for (int i = 0; i < data.size(); ++i) {
KDTree tree;
tree.Init(data[i]); // строим дерево
DoCalc1(data[i]); // этот вызов дерево не использует
DoCalc2(data[i], tree); // а этот использует и должен вызываться после DoCalc1
}
Это работает, но увы, частенько случается что половина (или больше) всех расчетов приходятся всего на 1-2 data[ i ], а остальные нитки быстро сделали свои дела и ждут. Перераспределение до упора (schedule dynamic) недостаточно. Как бум ускоряться?
Спасибо