Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: Igors от Май 17, 2012, 04:43



Название: Распределение нагрузки
Отправлено: Igors от Май 17, 2012, 04:43
Добрый день

Есть такой параллельный код
Код
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) недостаточно. Как бум ускоряться?

Спасибо