Parallel processing Fortran 90中控制和数据并行的特点?

Parallel processing Fortran 90中控制和数据并行的特点?,parallel-processing,fortran,programming-languages,fortran90,language-features,Parallel Processing,Fortran,Programming Languages,Fortran90,Language Features,在我的一篇大学论文中,我发现了一个问题“FORTRAN 90中的控制和数据并行特性?” 根据我的理解,Fortran 90中的内置数组操作是数据并行的一个例子,因为Fortran能够用简单的代码对数组元素执行加法、乘法等操作,如:c=a+b 但是fortran 90中的控制并行特性是什么?这个问题值8分,所以我想只有用于数据并行性的数组操作是不行的,肯定还有别的 请帮帮我 我不认为Fortran 90在语言中内置了任何控制并行性。(“控制并行”意味着两个完全不同的代码块可以并行运行。它通常被称为

在我的一篇大学论文中,我发现了一个问题“FORTRAN 90中的控制和数据并行特性?”

根据我的理解,Fortran 90中的内置数组操作是数据并行的一个例子,因为Fortran能够用简单的代码对数组元素执行加法、乘法等操作,如:c=a+b

但是fortran 90中的控制并行特性是什么?这个问题值8分,所以我想只有用于数据并行性的数组操作是不行的,肯定还有别的


请帮帮我

我不认为Fortran 90在语言中内置了任何控制并行性。(“控制并行”意味着两个完全不同的代码块可以并行运行。它通常被称为“任务并行”。)作为语言的一部分,更现代的Fortrans

从技术上讲,它也没有内置的数据并行性;它“仅仅”让希望实现数据并行性的编译器很容易发现它,程序员已经利用了数组和切片操作。但是,这对于更简单的编码和编译器更容易的分析都是有帮助的

我们显然不认为F90之前的版本,例如“标量”Fortran具有数据并行性。 用于超级计算机的Scalara Fortran编译器长期以来一直能够通过仔细分析循环来检测阵列级操作。显然,标量Fortran语言没有内置数据并行性,但超级计算机编译器发现并利用它(不像F90超级计算机编译器那样容易)

所以这里的教训是,实现数据并行性是特定编译器的特性,而不是语言

但要实现良好的数据并行性,还远远不够。您还需要能够谈论内存布局。这在Fortran 90中也不存在


Fortran有多种扩展提供了这两种功能,通常是pragmas或特殊注释,因此程序的其余部分看起来像香草Fortran,无论是标量还是F90。任务并行性通常通过许多编译器提供的OpenMP扩展提供。

可能是
WHERE
语句/构造?我会将数组分配、
WHERE
forall
计算在数据并行性功能中。我不知道他们所说的“控制并行性”是什么意思。我猜控制并行性可能与MIMD大致相同(甚至可能包括MISD),数据并行性与SIMD大致相同。如果您不熟悉这些源自Flynn的计算机体系结构分类法的首字母缩略词,请点击您最喜欢的搜索引擎寻求启示。我想,
elemental
过程可能是MIMD的一个例子。elemental过程是告诉Fortran编译器该过程可以应用于数组的一种方式“元素”可以安全地与其他过程并行。它本身支持但不支持数据并行。“更现代的Fortrans语言显然没有将此作为语言的一部分提供“??@IanH:如果不清楚的话,很抱歉。我了解F90标准,并与各种超级计算编译器合作过,但这已经有一段时间了。我不知道更现代的Fortrans(例如,2008年);在维基百科上浏览谷歌,没有证据表明更现代的Fortrans提供了这些附加功能。(如果你有这样的证据,请随意评论或添加你自己的答案)。并行执行模型是Fortran 2008的头条新闻。@IanH:很好。你能详细说明一下吗?“并行执行模型”是什么意思?为什么是语法?实现它对编译器有什么要求?编译器实际上做什么?请参阅。有许多实现。