Я изучаю, как портировать мой код Fortran в OpenMP. Когда я читаю онлайн-руководство (см. здесь) я наткнулся на один вопрос.
Во-первых, со страницы 28 я знал, что значение редукционной переменной не определено с момента, когда первый поток достигает предложения, и до завершения операции.
Насколько я понимаю, утверждение подразумевает, что не имеет значения, инициализирую ли я редукционную переменную до того, как программа попадет в параллельную конструкцию, потому что она не определена до завершения операции. Однако пример кода на странице 27 того же учебника инициализирует переменную сокращения перед параллельной конструкцией.
Подскажите, пожалуйста, какое лечение правильное? Спасибо.
Ли
sum = 0.0
!$omp parallel default(none) shared(n,x) private(i)
do i = 1, n
sum = sum + x(i)
end do
!$omp end do
!$omp end parallel
print*, sum
sum
редукционной переменной в своем коде, она не является редукционной переменной OpenMP. В директивеparallel
нет пунктаreduction
. - person High Performance Mark   schedule 10.04.2014