Есть ли способ выразить зависимость от первой итерации параллелизированной петли?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Есть ли способ выразить зависимость от первой итерации параллелизированной петли?

Сообщение Anonymous »

Моя программа должна выполнить некоторые тяжелые вычисления во всех виджетах в Box . Расчеты повторяются заметное количество раз обработки множественными вариациями < /em> каждого виджета. Вариация: < /li>
< /ol>

Код: Выделить всё

#pragma omp parallel for schedule(dynamic)
for (int i = 0; i < box.size(); i++) {
process(base[i]);
}
< /code>

 Обработка всех последующих вариантов каждого виджета: < /li>
< /ol>
/* Older OpenMP didn's support nested loops */
#pragma omp parallel for schedule(dynamic)
for (long l = 0; l < box.size() * nVariations; l++) {
int i = l % box.size();
int variation = l / box.size();
process(widgets[i][variation]);
}
Это работает, но является неоптимальным, потому что второй цикл не начинается до тех пор, пока первый не будет завершен, что означает, что ядра обработки недостаточно используются, в то время как последние виджеты все еще проходят через первый цикл. Один, так что каждый виджет может (в зависимости от процессора) продолжать обрабатывать, как только его базовый вариация будет рассчитываться, но не раньше?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... rallelized
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»