Fortran 2008 coarrays

A. Shterenlikht, L. Margetts, L. Cebamanos, D. Henty
{"title":"Fortran 2008 coarrays","authors":"A. Shterenlikht, L. Margetts, L. Cebamanos, D. Henty","doi":"10.1145/2754942.2754944","DOIUrl":null,"url":null,"abstract":"Coarrays are a Fortran 2008 standard feature intended for SIMD type parallel programming. The runtime environment starts a number of identical executable images of the coarray program, on multiple processors, which could be actual physical processors or threads. Each image has a unique number and its private address space. Ordinary variables are private to an image. Coarray variables are available for read/write access from any other image. Coarray communications are of \"single sided\" type, i.e. a remote call from imageA to image B does not need to be accompanied by a corresponding call in image B. This feature makes coarray programming a lot simpler than MPI. The standard provides synchronisation intrinsics to help avoid race conditions or deadlocks. Any ordinary variable can be made into a coarray - scalars, arrays, intrinsic or derived data types, pointers, allocatables are all allowed. Coarrays can be declared in, and passed to, procedures. Coarrays are thus very flexible and can be used for a number of purposes. For example a collection of coarrays from all or some images can be thought of as a large single array. This is precisely the inverse of the model partitioning logic, typical in MPI programs. A coarray program can exploit functional parallelism too, by delegating dis- tinct tasks to separate images or teams of images. Coarray collectives are expected to become a part of the next version of the Fortran standard. A major unresolved problem of coarray programming is the lack of standard parallel I/O facility in Fortran. In this paper several simple complete coarray programs are shown and compared to alternative parallel technologies - OpenMP, MPI and Fortran 2008 intrinsic \"do concurrent\". Inter image communication patterns and data transfer are illustrated. An example of a materials microstructure simulation coarray program scaled up to 32k cores is shown. Problems with coarray I/O at this scale are highlighted and addressed with the use of MPI-I/O. A hybrid MPI/coarray programming is discussed and illustrated with a finite element/cellular automata (CAFÃ ) multi-scale model. The paper completes with a description of the new coarray language features, expected in the 2015 Fortran standard, and with a brief list of coarray resources","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"85 1 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2015-04-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"25","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"ACM SIGPLAN Fortran Forum","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2754942.2754944","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 25

Abstract

Coarrays are a Fortran 2008 standard feature intended for SIMD type parallel programming. The runtime environment starts a number of identical executable images of the coarray program, on multiple processors, which could be actual physical processors or threads. Each image has a unique number and its private address space. Ordinary variables are private to an image. Coarray variables are available for read/write access from any other image. Coarray communications are of "single sided" type, i.e. a remote call from imageA to image B does not need to be accompanied by a corresponding call in image B. This feature makes coarray programming a lot simpler than MPI. The standard provides synchronisation intrinsics to help avoid race conditions or deadlocks. Any ordinary variable can be made into a coarray - scalars, arrays, intrinsic or derived data types, pointers, allocatables are all allowed. Coarrays can be declared in, and passed to, procedures. Coarrays are thus very flexible and can be used for a number of purposes. For example a collection of coarrays from all or some images can be thought of as a large single array. This is precisely the inverse of the model partitioning logic, typical in MPI programs. A coarray program can exploit functional parallelism too, by delegating dis- tinct tasks to separate images or teams of images. Coarray collectives are expected to become a part of the next version of the Fortran standard. A major unresolved problem of coarray programming is the lack of standard parallel I/O facility in Fortran. In this paper several simple complete coarray programs are shown and compared to alternative parallel technologies - OpenMP, MPI and Fortran 2008 intrinsic "do concurrent". Inter image communication patterns and data transfer are illustrated. An example of a materials microstructure simulation coarray program scaled up to 32k cores is shown. Problems with coarray I/O at this scale are highlighted and addressed with the use of MPI-I/O. A hybrid MPI/coarray programming is discussed and illustrated with a finite element/cellular automata (CAFÃ ) multi-scale model. The paper completes with a description of the new coarray language features, expected in the 2015 Fortran standard, and with a brief list of coarray resources
2008年
数组是用于SIMD类型并行编程的Fortran 2008标准特性。运行时环境在多个处理器上启动coarray程序的许多相同的可执行映像,这些处理器可以是实际的物理处理器或线程。每个映像都有一个唯一的编号和它的私有地址空间。普通变量对于映像来说是私有的。Coarray变量可用于从任何其他映像进行读/写访问。Coarray通信是“单面”类型,即从imaga到图像B的远程调用不需要伴随着图像B中的相应调用。这个特性使得Coarray编程比MPI简单得多。该标准提供了同步特性来帮助避免竞争条件或死锁。任何普通变量都可以被做成一个数组——标量、数组、固有或派生数据类型、指针、可分配对象都是允许的。数组可以在过程中声明并传递给过程。因此,阵列是非常灵活的,可以用于许多目的。例如,来自所有或部分图像的数组集合可以被认为是一个大的单个数组。这与MPI程序中典型的模型划分逻辑恰恰相反。通过将不同的任务分配给不同的图像或图像组,coarray程序也可以利用功能并行性。Coarray集合有望成为下一版本Fortran标准的一部分。队列编程的一个主要未解决的问题是在Fortran中缺乏标准的并行I/O设施。本文给出了几个简单的完整的队列程序,并与其他并行技术——OpenMP、MPI和Fortran 2008内在的“并行”进行了比较。说明了图像间通信模式和数据传输。给出了一个材料微结构模拟共阵程序的实例,该程序可扩展到32k核。本文强调了这种规模的队列I/O的问题,并通过使用MPI-I/O解决了这些问题。讨论了一种混合MPI/同轴阵列规划,并用有限元/元胞自动机(CAFÃ)多尺度模型进行了说明。本文最后描述了新的coarray语言特性,预计将在2015年Fortran标准中实现,并提供了coarray资源的简要列表
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信