Добавление пункта сокращения OpenMP, чтобы зацикливаться на функцииC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Добавление пункта сокращения OpenMP, чтобы зацикливаться на функции

Сообщение Anonymous »

У меня есть функция, которая содержит открытую параллелизованную для цикла, которая вызывает обратный вызов на каждой итерации, аналогично этим: < /p>
template
void iterate(const Callback& callback, bool parallel) {
#pragma omp parallel for if(parallel)
for(int i = 0; i < 1000; ++i) {
callback(i);
}
}
< /code>
вызывающий абонент может контролировать, параллелен ли цикл с использованием параллельного аргумента < /code>.
Есть ли способ позволить вызывающему абоненту указать переменные, на которые следует выполнить, например, < /p>
int counter = 0;
#pragma omp ??? reduction(+ : counter)
iterate([&counter](int i) {
counter++;
}, true);
< /code>

, по -видимому, заключается в том, чтобы поместить #pragma omp parallel < /code> вне функции на сайте вызова и #pragma omp для < /code> внутри функции. Но это ограничивает то, как функция может использоваться, и кажется нестандартным.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... a-function
Ответить

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

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

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

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

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