Fortran

14,000,000 Leading Edge Experts on the ideXlab platform

Scan Science and Technology

Contact Leading Edge Experts & Companies

Scan Science and Technology

Contact Leading Edge Experts & Companies

The Experts below are selected from a list of 60645 Experts worldwide ranked by ideXlab platform

Hans P Zima - One of the best experts on this subject based on the ideXlab platform.

  • the rise and fall of high performance Fortran an historical object lesson
    ACM SIGPLAN conference on History of Programming Languages, 2007
    Co-Authors: Ken Kennedy, Charles Koelbel, Hans P Zima
    Abstract:

    High Performance Fortran (HPF) is a high-level data-parallel programming system based on Fortran. The effort to standardize HPF began in 1991, at the Supercomputing Conference in Albuquerque, where a group of industry leaders asked Ken Kennedy to lead an effort to produce a common programming language for the emerging class of distributed-memory parallel computers. The proposed language would focus on data-parallel operations in a single thread of control, a strategy which was pioneered by some earlier commercial and research systems, including Thinking Machines' CM Fortran, Fortran D, and Vienna Fortran. The standardization group, called the High Performance Fortran Forum (HPFF), took a little over a year to produce a language definition that was published in January 1993 as a Rice technical report [50] and, later that same year, as an article in Scientific Programming [49]. The HPF project had created a great deal of excitement while it was underway and the release was initially well received in the community. However, over a period of several years, enthusiasm for the language waned in the United States, although it has continued to be used in Japan. This paper traces the origins of HPF through the programming languages on which it was based, leading up to the standardization effort. It reviews the motivation underlying technical decisions that led to the set of features incorporated into the original language and its two follow-ons: HPF 2 (extensions defined by a new series of HPFF meetings) and HPF/JA (the dialect that was used by Japanese manufacturers and runs on the Earth Simulator). A unique feature of this paper is its discussion and analysis of the technical and sociological mistakes made by both the language designers and the user community:, mistakes that led to the premature abandonment of the very promising approach employed in HPF. It concludes with some lessons for the future and an exploration of the influence of ideas from HPF on new languages emerging from the High Productivity Computing Systems program sponsored by DARPA.

  • a software architecture for multidisciplinary applications integrating task and data parallelism
    Joint International Conference on Vector and Parallel Processing: Parallel Processing, 1994
    Co-Authors: Barbara Chapman, Piyush Mehrotra, John Van Rosendale, Hans P Zima
    Abstract:

    Data parallel languages such as Vienna Fortran and HPF can be successfully applied to a wide range of numerical applications. However, many advanced scientific and engineering applications are of a multidisciplinary and heterogeneous nature and thus do not fit well into the data parallel paradigm. In this paper we present new Fortran 90 language extensions to fill this gap. Tasks can be spawned as asynchronous activities in a homogeneous or heterogeneous computing environment; they interact by sharing access to Shared Data Abstractions (SDAs). SDAs are an extension of Fortran 90 modules, representing a pool of common data, together with a set of methods for controlled access to these data and a mechanism for providing persistent storage. Our language supports the integration of data and task parallelism as well as nested task parallelism and thus can be used to express multidisciplinary applications in a natural and efficient way.

  • vienna Fortran a Fortran language extension for distributed memory multiprocessors
    Parallel Computing, 1992
    Co-Authors: Barbara Chapman, Piyush Mehrotra, Hans P Zima
    Abstract:

    Abstract Exploiting the full performance potential of distributed memory machines requires a careful distribution of data across the processors. Vienna Fortran is a language extension of Fortran which provides the user with a wide range of facilities for such mapping of data structures. However, programs in Vienna Fortran are written using global data references. Thus, the user has the advantages of a shared memory programming paradigm while explicitly controlling the placement of data. In this paper, we present the basic features of Vienna Fortran along with a set of examples illustrating the use of these features.

  • programming in vienna Fortran
    Scientific Programming, 1992
    Co-Authors: Barbara Chapman, Piyush Mehrotra, Hans P Zima
    Abstract:

    Exploiting the full performance potential of distributed memory machines requires a careful distribution of data across the processors. Vienna Fortran is a language extension of Fortran which provides the user with a wide range of facilities for such mapping of data structures. In contrast to current programming practice, programs in Vienna Fortran are written using global data references. Thus, the user has the advantages of a shared memory programming paradigm while explicitly controlling the data distribution. In this paper, we present the language features of Vienna Fortran for Fortran 77, together with examples illustrating the use of these features.

Paul J Hinker - One of the best experts on this subject based on the ideXlab platform.

  • comparison of c and Fortran 90 for object oriented scientific programming
    Computer Physics Communications, 1997
    Co-Authors: John R Cary, Svetlana G Shasharina, Julian Cummings, John Reynders, Paul J Hinker
    Abstract:

    C++ and Fortran 90 are compared as object-oriented languages for use in scientific computing. C++ is a full-featured, object-oriented language that provides support for inheritance and polymorphism. Fortran 90 can mimic some object-oriented features through combinations of its TYPE and MODULE syntax elements, but it lacks inheritance and thus does not permit code reuse to the same extent as C++. Each language has other useful features unrelated to object-oriented programming, but the additional features of Fortran 90 can be included in C++ through the development of class libraries. In contrast, including the additional features of C++ in Fortran 90 would require further development of the Fortran 90 syntax. A critical feature missing in Fortran 90 is the template, which allows C++ programmers to build portable, reusable code and to dramatically improve the efficiency of the evaluation of complex expressions involving user-defined data types.

Robert W Numrich - One of the best experts on this subject based on the ideXlab platform.

  • Final Report Center for Programming Models for Scalable Parallel Computing: Co-Array Fortran Grant Number DE-FC02-01ER25505 M004 *
    2020
    Co-Authors: Robert W Numrich
    Abstract:

    Summary The major accomplishment of this project is the production of CafLib, an "object-oriented" parallel numerical library written in Co-Array Fortran. CafLib contains distributed objects such as block vectors and block matrices along with procedures, attached to each object, that perform basic linear algebra operations such as matrix multiplication, matrix transpose and LU decomposition. It also contains constructors and destructors for each object that hide the details of data decomposition from the programmer, and it contains collective operations that allow the programmer to calculate global reductions, such as global sums, global minima and global maxima, as well as vector and matrix norms of several kinds. CafLib is designed to be extensible in such a way that programmers can define distributed grid and field objects, based on vector and matrix objects from the library, for finite difference algorithms to solve partial differential equations. A very important extra benefit that resulted from the project is the inclusion of the co-array programming model in the next Fortran standard called Fortran 2008. It is the first parallel programming model ever included as a standard part of the language. Co-arrays will be a supported feature in all Fortran compilers, and the portability provided by standardization will encourage a large number of programmers to adopt it for new parallel application development. The combination of object-oriented programming in Fortran 2003 with co-arrays in Fortran 2008 provides a very powerful programming model for high-performance scientific computing. Additional benefits from the project, beyond the original goal, include a program to provide access to the co-array model through access to the Cray compiler as a resource for teaching and research. Several academics, for the first time, included the co-array model as a topic in their courses on parallel computing. A separate collaborative project with LANL and PNNL showed how to extend the co-array model to other languages in a small experimental version of Co-array Python. Another collaborative project defined a Fortran 95 interface to ARMCI to encourage Fortran programmers to use the one-sided communication model in anticipation of their conversion to the co-array model * rwn/papers/progressReports/pmodelsFinal.tex 1 later. A collaborative project with the Earth Sciences community at NASA Goddard and GFDL experimented with the co-array model within computational kernels related to their climate models, first using CafLib and then extending the co-array model to use design patterns. Future work will build on the design-pattern idea with a redesign of CafLib as a true object-oriented library using Fortran 2003 and as a parallel numerical library using Fortran 2008. 1 CafLib: A parallel numerical library for Co-Array Fortran The development of CafLib, a parallel numerical library to support Co-Array Fortran CafLib is written in Fortran 95 using object-oriented design principle

  • co arrays in the next Fortran standard
    ACM Sigplan Fortran Forum, 2005
    Co-Authors: Robert W Numrich, J K Reid
    Abstract:

    The WG5 committee, at its meeting in Delft, May 2005, decided to include co-arrays in the next Fortran Standard. A special issue of Fortran Forum in August 1998 explained the feature, but since many of the details of the version adopted by WG5 differ from the 1998 version, it seems appropriate to describe it afresh in a self-contained article.A Fortran program containing co-arrays is interpreted as if it were replicated a fixed number of times and all copies were executed asynchronously. Each copy has its own set of data objects and is called an image. The array syntax of Fortran is extended with additional trailing subscripts in square brackets to give a clear and straightforward representation of access to data on other images.References without square brackets are to local data, so code that can run independently is uncluttered. Only where there are square brackets, or where there is a procedure call and the procedure contains square brackets, is communication between images involved.The additional syntax requires support in the compiler, but it has been designed to be easy to implement and to give the compiler scope both to apply its optimizations within each image and to optimize the communication between images.The extension includes intrinsic procedures to synchronize images, to return the number of images, to return the index of the current image, and to perform collective actions.

  • parallel numerical algorithms based on tensor notation and co array Fortran syntax
    Parallel Computing, 2005
    Co-Authors: Robert W Numrich
    Abstract:

    Co-Array Fortran represents a correspondence between tensor notation and an extended Fortran array syntax. It uses normal Fortran array indices to point to data in local memory and adds co-array indices to point to data in remote memory. By writing algorithms according to the rules of tensor algebra, the programmer can transcribe a parallel algorithm directly into co-array syntax and can experiment with alternative communication patterns with full confidence that the algorithm is correct. Data communication is transparent in the notation itself and the syntax allows compilers to exploit low-latency hardware so that application codes scale well to large numbers of processors. Co-array syntax, combined with the object-oriented features of Fortran 90, is a powerful tool for designing and writing parallel algorithms. It raises the level of abstraction with little or no loss of performance.

  • co array python a parallel extension to the python language
    European Conference on Parallel Processing, 2004
    Co-Authors: Craig E Rasmussen, Matthew J Sottile, Jarek Nieplocha, Robert W Numrich, Eric Jones
    Abstract:

    A parallel extension to the Python language is introduced that is modeled after the Co-Array Fortran extensions to Fortran 95. A new Python module, CoArray, has been developed to provide co-array syntax that allows a Python programmer to address co-array data on a remote processor. An example of Jacobi iteration using the CoArray module is shown and corresponding performance results are presented.

  • co array Fortran for parallel programming
    ACM Sigplan Fortran Forum, 1998
    Co-Authors: Robert W Numrich, J K Reid
    Abstract:

    Co-Array Fortran, formerly known as F--, is a small extension of Fortran 95 for parallel processing. A Co-Array Fortran program is interpreted as if it were replicated a number of times and all copies were executed asynchronously. Each copy has its own set of data objects and is termed an image. The array syntax of Fortran 95 is extended with additional trailing subscripts in square brackets to give a clear and straightforward representation of any access to data that is spread across images.References without square brackets are to local data, so code that can run independently is uncluttered. Only where there are square brackets, or where there is a procedure call and the procedure contains square brackets, is communication between images involved.There are intrinsic procedures to synchronize images, return the number of images, and return the index of the current image.We introduce the extension; give examples to illustrate how clear, powerful, and flexible it can be; and provide a technical definition.

Takayuki Suzuki - One of the best experts on this subject based on the ideXlab platform.

  • optimizations of a gpu accelerated heat conduction equation by a programming of cuda Fortran from an analysis of a ptx file
    Computer Physics Communications, 2012
    Co-Authors: Shinichi Satake, Hajime Yoshimori, Takayuki Suzuki
    Abstract:

    The Fortran language has been commonly used for many kinds of scientific computation. In this paper, we focus on the solution of an unsteady heat conduction equation, which is one of the simplest problems for thermal dynamics. Recently, a GPU (graphics processing unit) has been enhanced with a Fortran programming language capability employing CUDA (compute unified device architecture), known as CUDA Fortran. We find that the speed performance of a system using an ordinary program coding of CUDA Fortran is lower than that of systems using a program coding of CUDA C. We also find that intermediate assembly files PTX (parallel thread execution) of the two languages are not coincident. Therefore, by comparing the PTX files from the two coding programs we could detect the bottleneck that causes the speed reduction. We propose three optimization techniques that can enable the calculated speeds using CUDA Fortran and CUDA C to be coincident. The optimizations can be performed by the Fortran language when improved by an analyzed PTX file. It is thus possible to improve the performance of CUDA Fortran by adding a correction to it, which happens to be at a programming language level.

John R Cary - One of the best experts on this subject based on the ideXlab platform.

  • comparison of c and Fortran 90 for object oriented scientific programming
    Computer Physics Communications, 1997
    Co-Authors: John R Cary, Svetlana G Shasharina, Julian Cummings, John Reynders, Paul J Hinker
    Abstract:

    C++ and Fortran 90 are compared as object-oriented languages for use in scientific computing. C++ is a full-featured, object-oriented language that provides support for inheritance and polymorphism. Fortran 90 can mimic some object-oriented features through combinations of its TYPE and MODULE syntax elements, but it lacks inheritance and thus does not permit code reuse to the same extent as C++. Each language has other useful features unrelated to object-oriented programming, but the additional features of Fortran 90 can be included in C++ through the development of class libraries. In contrast, including the additional features of C++ in Fortran 90 would require further development of the Fortran 90 syntax. A critical feature missing in Fortran 90 is the template, which allows C++ programmers to build portable, reusable code and to dramatically improve the efficiency of the evaluation of complex expressions involving user-defined data types.