Я прочитал книгу Fortran 95 от Metcalf, Reid and Cohen и Numerical Recipes в Fortran 90. Они рекомендуют использовать WHERE, FORALL и SPREAD среди прочего, чтобы избежать ненужной сериализации вашей программы.
Тем не менее, я наткнулся на этот ответ, в котором утверждается, что FORALL хорош в теории, но на практике бессмысленна - вы также можете писать циклы, поскольку они точно так же параллельны и вы можете явно их раскрыть с помощью OpenMP (или автоматических функций некоторых компиляторов, таких как Intel).
Может ли кто-нибудь проверить из опыта, нашли ли они, как эти конструкции, какие-либо преимущества перед явными циклами, и если утверждения в терминах параллельной производительности?
И есть ли какие-либо другие параллельные особенности языка, которые хороши в принципе, но не стоят на практике?
Я понимаю, что ответы на эти вопросы несколько зависят от реализации, поэтому меня больше всего интересуют gfortran, процессоры Intel и SMP parallelism.