Я прочитал книгу Фортрана-95 Меткалфа, Рейда и Коэна и Численные рецепты на Фортране-90. Они рекомендуют использовать WHERE, FORALL и SPREAD, чтобы избежать ненужной сериализации вашей программы.
Тем не менее, я наткнулся на этот ответ , в котором утверждается, что FORALL хорош в теории, но на практике бессмысленен - вы могли бы также написать циклы, поскольку они распараллеливаются так же хорошо, и вы можете явно распараллелить их, используя OpenMP (или автоматическийфункциями некоторых компиляторов, таких как Intel).
Может ли кто-нибудь из своего опыта проверить, нашли ли они, как правило, эти конструкции, предлагающие какие-либо преимущества по сравнению с явными циклами и операторами if с точки зрения параллельной производительности?
ИСуществуют ли какие-либо другие параллельные функции языка, которые хороши в принципе, но не стоят его на практике?
Я ценю, что ответы на эти вопросы в некоторой степени зависят от реализации, поэтому меня больше всего интересует gfortran, IntelСПараллелизм ПУ и СМП.