Моя программа содержит цикл for(), который построчно обрабатывает некоторые необработанные данные изображения, которые я хочу распараллелить с помощью OpenMP следующим образом:
...
#if defined(_OPENMP)
int const threads = 8;
omp_set_num_threads( threads );
omp_set_dynamic( threads );
#endif
int line = 0;
#pragma omp parallel private( line )
{
// tell the compiler to parallelize the next for() loop using static
// scheduling (i.e. balance workload evenly among threads),
// while letting each thread process exactly one line in a single run
#pragma omp for schedule( static, 1 )
for( line = 0 ; line < max; ++line ) {
// some processing-heavy code in need of a buffer
}
} // end of parallel section
....
Вопрос в следующем:
Можно ли предоставить отдельный (предварительно выделенный) буфер (указатель) для каждого потока команды, выполняющей мой цикл, используя стандартную прагму/функцию OpenMP (таким образом устраняя необходимость выделения нового буфера для каждого цикла? )?
Заранее спасибо.
Бьорн