Search NASA⌕ Search

Engineering topics

Rasmussen, Craig E

Publications and source records attributed to Rasmussen, Craig E.

Interop technical report: additional constants for table 15.2

The Fortran sub-committee of the MPI-3 Forum would like to define the MPI Fortran interface with explicit interfaces. To ease the implementation of portable MPI libraries, it would be helpful if this interface can be defined as BIND (C). With BIND (C), the MPI library can be implemented portably across different Fortran compilers. For backward-compatibility reasons, it is essential to guarantee that existing MPI programs still run with MPI libraries based on the new Fortran 2003 compatible MPI interface specification. To achieve this goal, all existing intrinsic (with default kind parameter) and derived Fortran types should be usable as actual arguments in routines defined with BIND (C), Unfortunately, intrinsic Fortran types with default kind parameter may not be interoperable.

97 MATHEMATICS AND COMPUTING↗

Copy to contiguous example using C descriptor

In N1838-2 there is an example of how to use the CFI-cdesc-t type in a C implementation of a BIND (C) interface. This paper provides another example of using the CFI-cdesc-t type in C. This new example provides code to copy an array (possibly noncontiguous) into a contiguous buffer.

97 MATHEMATICS AND COMPUTING↗

Exploiting first-class arrays in Fortran for accelerator programming

Emerging architectures for high performance computing often are well suited to a data parallel programming model. This paper presents a simple programming methodology based on existing languages and compiler tools that allows programmers to take advantage of these systems. We will work with the array features of Fortran 90 to show how this infrequently exploited, standardized language feature is easily transformed to lower level accelerator code. Our transformations are based on a mapping from Fortran 90 to C++ code with OpenCL extensions. The sheer complexity of programming for clusters of many or multi-core processors with tens of millions threads of execution make the simplicity of the data parallel model attractive. Furthermore, the increasing complexity of todays applications (especially when convolved with the increasing complexity of the hardware) and the need for portability across hardware architectures make a higher-level and simpler programming model like data parallel attractive. The goal of this work has been to exploit source-to-source transformations that allow programmers to develop and maintain programs at a high-level of abstraction, without coding to a specific hardware architecture. Furthermore these transformations allow multiple hardware architectures to be targeted without changing the high-level source. It also removes the necessity for application programmers to understand details of the accelerator architecture or to know OpenCL.

43 PARTICLE ACCELERATORS↗