2015-05-29 3 views
1

Я использую OpenMP как:OpenMP сокращение и номер нити управления

#pragma omp parallel for reduction(+:average_stroke_width) 
for(int i = 0; i < GB_name.size(); ++i) {...} 

Я знаю, что я могу использовать:

#pragma omp parallel for num_threads(thread) 
for(int index = 0; index < GB_name.size(); ++index){...} 

Как я могу контролировать количество потоков, когда я использую сокращение?

+0

Вы хотите сказать, сколько потоков участвует в процедуре сокращения? – a3mlord

ответ

0

Как я могу управлять номером нити при использовании сокращения?

Оба положения могут быть использованы togehter:

#pragma omp parallel for reduction(+:average_stroke_width) num_threads(thread) 
for(int i = 0; i < GB_name.size(); ++i) {...} 

Обратите внимание, что reduction включает в себя все темы, так что вы не можете иметь параллельную петлю с 8 потоков, а затем выполнить восстановление с использованием только 4 потоков. Сокращение объединяет локальные значения во всех потоках, и поэтому все они должны участвовать.

+0

Да, это работает! Спасибо огромное! –