Construções Fortran 95 como WHERE, FORALL e SPREAD geralmente resultam em código paralelo mais rápido?

Li o livro Fortran 95 de Metcalf, Reid e Cohen e Numerical Recipes em Fortran 90. Eles recomendam o uso de WHERE, FORALL e SPREAD entre outras coisas para evitar serializações desnecessárias do seu programa.

No entanto, me deparei comesta resposta que afirma que FORALL é bom em teoria, mas inútil na prática - você também pode escrever loops, pois eles também se paralelizam e explicitamente, usando o OpenMP (ou recursos automáticos de alguns compiladores, como a Intel).

Alguém pode verificar, por experiência, se eles geralmente encontraram essas construções para oferecer vantagens sobre loops explícitos e instruções if em termos de desempenho paralelo?

E existem outras características paralelas da linguagem que são boas em princípio, mas que não valem a pena na prática?

Compreendo que as respostas a essas perguntas dependam um pouco da implementação, por isso estou mais interessado em gfortran, CPUs Intel e paralelismo SMP.

questionAnswers(5)

yourAnswerToTheQuestion