Pull to refresh

Comments 2

Обеспечивается ли атомарность записи? Например, если выполнить код для четырех image'ей:
integer, codimension[*] :: fact
do x = 1, 1000
    fact[1] = fact[1] + 1
end do


Будет ли в результате fact[1] = 4000? Или же это будет случайное число меньше 4000, зависящее от приоритетов потоков?
Спасибо за отличный вопрос! Нет, результат будет рандомный, атомарности нет. Кстати, приоритетов потоков тоже нет. Здесь речь о MPI процессах — копиях приложения. Для получения 4000, придётся самому вводить критическую секцию (тоже часть Coarray), примерно так:

critical
    do x = 1, 1000
      fact[1] = fact[1] + 1
    end do
end critical
sync all
Sign up to leave a comment.