{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,2,21]],"date-time":"2025-02-21T21:54:44Z","timestamp":1740174884992,"version":"3.37.3"},"reference-count":19,"publisher":"Wiley","license":[{"start":{"date-parts":[[2015,1,1]],"date-time":"2015-01-01T00:00:00Z","timestamp":1420070400000},"content-version":"unspecified","delay-in-days":0,"URL":"http:\/\/creativecommons.org\/licenses\/by\/3.0\/"}],"funder":[{"DOI":"10.13039\/100006234","name":"Sandia National Laboratories","doi-asserted-by":"publisher","award":["DE-AC04-94-AL85000","DE-AC02-05CH11231","OCI-0960354"],"award-info":[{"award-number":["DE-AC04-94-AL85000","DE-AC02-05CH11231","OCI-0960354"]}],"id":[{"id":"10.13039\/100006234","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000015","name":"U.S. Department of Energy","doi-asserted-by":"publisher","award":["DE-AC04-94-AL85000","DE-AC02-05CH11231","OCI-0960354"],"award-info":[{"award-number":["DE-AC04-94-AL85000","DE-AC02-05CH11231","OCI-0960354"]}],"id":[{"id":"10.13039\/100000015","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["DE-AC04-94-AL85000","DE-AC02-05CH11231","OCI-0960354"],"award-info":[{"award-number":["DE-AC04-94-AL85000","DE-AC02-05CH11231","OCI-0960354"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Scientific Programming"],"published-print":{"date-parts":[[2015]]},"abstract":"<jats:p>This paper presents ideas for using coordinate-free numerics in modern Fortran to achieve code flexibility in the partial differential equation (PDE) domain. We also show how Fortran, over the last few decades, has changed to become a language well-suited for state-of-the-art software development. Fortran\u2019s new coarray distributed data structure, the language\u2019s class mechanism, and its side-effect-free, pure procedure capability provide the scaffolding on which we implement HPC software. These features empower compilers to organize parallel computations with efficient communication. We present some programming patterns that support asynchronous evaluation of expressions comprised of parallel operations on distributed data. We implemented these patterns using coarrays and the message passing interface (MPI). We compared the codes\u2019 complexity and performance. The MPI code is much more complex and depends on external libraries. The MPI code on Cray hardware using the Cray compiler is 1.5\u20132 times faster than the coarray code on the same hardware. The Intel compiler implements coarrays atop Intel\u2019s MPI library with the result apparently being 2\u20132.5 times slower than manually coded MPI despite exhibiting nearly linear scaling efficiency. As compilers mature and further improvements to coarrays comes in Fortran 2015, we expect this performance gap to narrow.<\/jats:p>","DOI":"10.1155\/2015\/942059","type":"journal-article","created":{"date-parts":[[2015,5,28]],"date-time":"2015-05-28T17:07:52Z","timestamp":1432832872000},"page":"1-14","source":"Crossref","is-referenced-by-count":5,"title":["High-Performance Design Patterns for Modern Fortran"],"prefix":"10.1155","volume":"2015","author":[{"given":"Magne","family":"Haveraaen","sequence":"first","affiliation":[{"name":"Department of Informatics, University of Bergen, 5020 Bergen, Norway"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Karla","family":"Morris","sequence":"additional","affiliation":[{"name":"Sandia National Laboratories, Livermore, CA 94550, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Damian","family":"Rouson","sequence":"additional","affiliation":[{"name":"Stanford University, Stanford, CA 94305, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Hari","family":"Radhakrishnan","sequence":"additional","affiliation":[{"name":"EXA High Performance Computing, 1087 Nicosia, Cyprus"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Clayton","family":"Carson","sequence":"additional","affiliation":[{"name":"Stanford University, Stanford, CA 94305, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"311","reference":[{"doi-asserted-by":"publisher","key":"11","DOI":"10.1504\/ijcse.2009.029159"},{"year":"2011","key":"15"},{"issue":"3","key":"12","first-page":"241","volume":"6","year":"1999","journal-title":"Nordic Journal of Computing"},{"issue":"4","key":"10","doi-asserted-by":"crossref","first-page":"211","DOI":"10.1155\/2000\/419840","volume":"8","year":"2000","journal-title":"Scientific Programming"},{"doi-asserted-by":"publisher","key":"17","DOI":"10.1145\/1322436.1322438"},{"volume-title":"A comprehensive set of tools for solvingpartial differential equations; Diffpack","year":"1997","first-page":"61","key":"2"},{"year":"1994","key":"8"},{"volume":"4","year":"2007","key":"9"},{"year":"2011","key":"18"},{"issue":"8","key":"4","doi-asserted-by":"crossref","first-page":"81","DOI":"10.1145\/135226.135231","volume":"35","year":"1992","journal-title":"Communications of the ACM"},{"year":"1997","key":"16"},{"key":"3","first-page":"171","volume-title":"A mathematical model illustrating the theory of turbulence","volume":"1","year":"1948"},{"volume":"4","year":"2009","series-title":"COE Research Monograph Series","key":"1"},{"year":"2006","key":"5"},{"volume":"s-2","year":"1968","key":"6"},{"doi-asserted-by":"publisher","key":"19","DOI":"10.1177\/1094342006064482"},{"volume-title":"Using PAPI for hardware performance monitoring on linux systems","year":"2001","key":"7"},{"doi-asserted-by":"publisher","key":"20","DOI":"10.1109\/52.43046"},{"year":"2002","key":"14"}],"container-title":["Scientific Programming"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/downloads.hindawi.com\/journals\/sp\/2015\/942059.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/downloads.hindawi.com\/journals\/sp\/2015\/942059.xml","content-type":"application\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/downloads.hindawi.com\/journals\/sp\/2015\/942059.pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2017,6,23]],"date-time":"2017-06-23T08:31:54Z","timestamp":1498206714000},"score":1,"resource":{"primary":{"URL":"http:\/\/www.hindawi.com\/journals\/sp\/2015\/942059\/"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2015]]},"references-count":19,"alternative-id":["942059","942059"],"URL":"https:\/\/doi.org\/10.1155\/2015\/942059","relation":{},"ISSN":["1058-9244","1875-919X"],"issn-type":[{"type":"print","value":"1058-9244"},{"type":"electronic","value":"1875-919X"}],"subject":[],"published":{"date-parts":[[2015]]}}}