Parallel Programming Using the Global Arrays Toolkit: Now and into the Future

Tutorial to be held at the

IEEE International Parallel and Distributed Processing Symposium

Anchorage, Alaska

8-10pm, May 17th 2011

Abstract

This tutorial will provide an overview of the Global Arrays (GA) programming toolkit and describe its capabilities, performance, and the use of GA in high performance computing applications. The tutorial will review basic concepts in onesided communication and Global Address Space languages and will discuss basic setup and elementary communication using GA. More advanced topics, including global counters, non-blocking communication, and sparse data structures will also be discussed. If time permits, the tutorial will also present new/advanced capabilities and ongoing research activities.

GA was created to provide programmers with an interface that allows them to distribute data while maintaining the global index space and programming syntax similar to that in serial programs. The goal of GA is to free the programmer from the low-level management of communication and allow them to deal with their problems in the same index space in which they were originally formulated. At the same time, the compatibility of GA with MPI enables the programmer to take advantage of the existing MPI software when appropriate. The variety of existing GA applications attests to the attractiveness of using higher level abstractions to write parallel code. The goal of the tutorial is to provide participants with an overview of the core functionality in the GA toolkit that will allow them to immediately begin writing applications using the GA library. The target audience is programmers that are familiar with scalar programming but not parallel programming and parallel programmers that use message-passing libraries such as MPI, but are not familiar with shared memory and onesided styles of programming. The content level is approximately 40% beginner, 30% intermediate, and 30% advanced. Audience members are expected to be knowledgeable in at least one compiled HPC computer language, such as C, C++, Fortran, or Fortran 90.

The tutorial will be devoted to presenting an overview of GA and will consist of four sections. The first section will begin by providing an overview of basic concepts in parallel programming, including the ideas of scalability, latency, and message overhead and will then go on to discuss the GA programming model and the distinction between onesided and message-passing communication.

The last three sections will discuss the GA library itself in some detail. The first will review basic functionality of the GA library. The main features that will be emphasized are building GA using the autoconf build, initialization of the GA library, creating a global array, accessing data in a global array, identifying locally and remotely held data, and simple collective operations on arrays. These features will be further illustrated with sample code and code fragments that show how the GA library calls are employed in actual applications.

The last two sections will focus on more advanced features of the GA toolkit that can be exploited by users to avoid unnecessary data copies, hide latency, and exploit the memory hierarchy of NUMA architectures. Specific topics that will be discussed are direct access of locally held data, non-blocking onesided operations, cluster topology inquiries, and the use of processor groups. The final lecture will described advanced uses of the GA library. As time permits and depending on audience interest, a number of other topics may be addressed, including the use of ghost cells, sparse data manipulation, restricted arrays, locks and mutexes, and support for linear algebra operation. Time will also be set aside for current areas of research in Global Arrays, including fault tolerance and Global Pointer Arrays.

Links:
IPDPS 2011 Global Arrays tutorial slides: GA_IPDPS2011.pdf
Global Arrays Home: http://www.emsl.pnl.gov/docs/global/

Lead Organizer:
Bruce Palmer, bruce.palmer@pnl.gov Pacific Northwest National Laboratory

Further Presenters:
Manojkumar Krishan, manoj@pnl.gov Pacific Northwest National Laboratory
Abhinav Vishnu, vishnu@pnl.gov Pacific Northwest National Laboratory