Co-array Fortran for Full and Sparse Matrices

  • Authors:
  • John Reid

  • Affiliations:
  • -

  • Venue:
  • PARA '02 Proceedings of the 6th International Conference on Applied Parallel Computing Advanced Scientific Computing
  • Year:
  • 2002

Quantified Score

Hi-index 0.00

Visualization

Abstract

Co-array Fortran (Numrich and Reid 1998), abbreviated to CAF, is an extension of Fortran 90/95 for parallel programming that has been designed to be easy both for the compiler writer to implement and for the programmer to write and understand. It offers the prospect of clear and efficient parallel programming on homogeneous parallel systems.Each processor has an identical copy of the program and has its own data objects.Each co-array is evenly spread over all the processors with each processor having a part of exactly the same shape. The language is carefully designed so that implementations will usually use the same address on each processor for the processor's part of the co-array. Subscripts in round brackets are used in the usual way to address the local part and subscripts in square brackets are used to address parts on other processors.References without square brackets are to local data, so code that can run independently is uncluttered. Only where there is are square brackets, or a procedure call to code that involves square brackets, is there communication between processors.There are intrinsic procedures to synchronize processors, return the number of processors, and return the index of the current processor.A subset of Co-Array Fortran is available on the T3E and the aim of this talk is to explain how it can be used effectively for computations on both full and sparse matrices. In particular, we show how the LINPACK benchmark can be written in this language and compare its performance with that of ScaLAPACK (Blackford et al. 1997), paying particular attention to the solution of a single set of equations. For sparse systems, we consider the use of CAF for frontal and multifrontal methods.