Ошибка компиляторов Intel Fortran при параллелизации

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Обнаружил интересную ошибку компиляторов Intel Fortran 2023 года.

Исходный код:

program err

  implicit none

  integer :: s
  integer :: step, i

  step = 32

  do
    s = 0
    do concurrent (i=301:724:step)
      s = s + i
    end do
    print *, s
  end do

end program err

Такой параллельный цикл do concurrent, будучи скомпилирован в smp режиме (т.е. с ключом -fopenmp) даёт в компиляторе ifort случайные результаты, а в компиляторе ifx – нули.

В режиме последовательного выполнения программы всё работает правильно.

Для воспроизведения ошибки необходимы и достаточны следующие условия: Intel, do concurrent с шагом, заданным переменной, -fopenmp.

gfortran такой ошибкой не страдает, но он, впрочем, и не параллелит циклы do concurrent.

Будьте аккуратны.

Источник: https://habr.com/ru/articles/771316/


Интересные статьи

Интересные статьи

Как-то мне пришла в голову мысль о том, насколько же быстрее современные процессоры по сравнению с ранними экземплярами. Да, можно размышлять об этом эмпирически - зная тактовую частоту и особенности ...
Обнаружил секретный репозиторий на гитхабе JetBrains под названием Projector. Благодаря нему написал кусок кода в IntelliJ IDEA, запущенной на Android-планшете. Рассказываю, как это п...
Мы продолжаем рассказ о проектах и продуктах, неразрывно связанных с российским центром разработки Intel. И сегодня речь пойдет о проекте-ровеснике Intel в Нижнем Новгороде – он тоже ...
Эта статья посвящена тестированию возможности использования технологии Intel Processor Trace (Intel PT) для записи трассы в System Management Mode (SMM) режиме. Работа была выполнена в рамках S...
Некоторое время назад мой коллега опубликовал статью про обработку ошибок в Java/Kotlin. И мне стало интересно, а какие вообще в программировании существуют способы передачи ошибок. Если вам ...