¿Las construcciones de Fortran 95 como WHERE, FORALL y SPREAD generalmente dan como resultado un código paralelo más rápido?

He leído el libro Fortran 95 de Metcalf, Reid y Cohen, y Numerical Recipes en Fortran 90. Recomiendan usar WHERE, FORALL y SPREAD, entre otras cosas, para evitar la serialización innecesaria de su programa.

Sin embargo, me topé conesta respuesta que afirma que FORALL es bueno en teoría, pero no tiene sentido en la práctica: también podría escribir bucles ya que se paralelizan igual de bien y puede paralelizarlos explícitamente usando OpenMP (o características automáticas de algunos compiladores como Intel).

¿Alguien puede verificar por experiencia si generalmente han encontrado que estas construcciones ofrecen ventajas sobre los bucles explícitos y si las declaraciones en términos de rendimiento paralelo?

¿Y hay otras características paralelas del lenguaje que son buenas en principio pero que no valen la pena en la práctica?

Aprecio que las respuestas a estas preguntas dependan un poco de la implementación, por lo que estoy más interesado en gfortran, CPU de Intel y paralelismo SMP.

Respuestas a la pregunta(5)

Su respuesta a la pregunta