#pragma omp параллельный для расписания (статический)

#c #openmp

#c #openmp

Вопрос:

 #pragma omp parallel for schedule(static)
for (int i = 0; i < 100; i  ) 
{ count--;}
  

Приведенный выше код подходит или нет?

Комментарии:

1. Является count атомарным типом?

Ответ №1:

В общем, код не в порядке. Возможны условия гонки. Вы можете использовать атомарное предложение omp.

 #pragma omp parallel for schedule(static)
for (int i = 0; i < 100; i  ) 
{ 
#pragma omp atomic update
    count--;
}
  

Вы можете взглянуть на спецификацию об атомарном https://www.openmp.org/spec-html/5.0/openmpsu95.html

Комментарии:

1. Можно было бы использовать atomic, но в этом случае это эффективно превращает последовательный код в параллельную программу. В любом случае, этот случай — плохое место для начала.

2. Для этого есть предложение о сокращении.