166
H. Sakagami
special kind of machines to general convenient tools for computational scientists, a
high-level and easy-to-use portable parallel programming paradigm is mandatory.
XcalableMP (XMP) [1], which is proposed by the XcalableMP Specification
Working Group, is directive-based language extensions for Fortran and C to easily
describe parallelization in programs for distributed memory parallel computers. The
XMP/F compiler [2], which is provided as a reference XMP Fortran compiler, is
currently implemented as a source-to-source translator. It converts XMP Fortran
programs to standard MPI Fortran programs, which can be easily compiled by the
native Fortran compiler and executed on most of parallel computers.
XMP supports typical data/task parallelization methods with simple directives
under a “global-view” programming model, which is partially based on experiences
of High Performance Fortran [3, 4] and Fujitsu XPF (VPP FORTRAN) [5]. XMP
also supports PGAS (Partitioned Global Address Space) features like Coarray
Fortran [6] as a “local-view” programming model. In addition, combinations of
XMP and OpenMP directives are consistently maintained by the XMP/F compiler.
An essential design principle of XMP is “performance awareness,” which means
that all communications or synchronizations are taken by explicit directives or
Coarray statements and no implicit actions are taken.
First, we used XMP Fortran to parallelize the code using the global-view
programming model, and measured its performance on the K computer. We found
that programs converted by the XMP/F compiler prevent optimizations by the
native Fortran compiler and show lower performance than that of hand-coded
MPI programs, but finally almost the same performances are obtained by using
specific compiler options of the native Fortran compiler. Next we parallelized the
code using the local-view programming model, and also measured its performance
on the K computer. We found that translated programs prevent optimizations by
the native Fortran compiler and show lower performance than that of the globalview programming model programs. This degradation cannot be solved by simply
specifying native compiler options at this moment, and improvements of the XMP/F
compiler are expected.
2 Global-View Programming Model
IMPACT-3D is a three-dimensional Eulerian fluid code written in Fortran and
it performs compressible and inviscid fluid computation to simulate convergent
asymmetric flows related to laser fusion [7]. A Cartesian coordinate system is
employed and an explicit 5-point stencil in one direction is used in IMPACT-3D
with uniform grid spacing. So it is easy to parallelize the code with the ordinary
domain decomposition method. Communications between neighboring subdomains
are needed to exchange boundary data.
As the global-view programming model is a directive oriented approach, programs can be incrementally parallelized and different parallelization methods can
be easily tried. Although IMPACT-3D is actually parallelized by three different
H. Sakagami
special kind of machines to general convenient tools for computational scientists, a
high-level and easy-to-use portable parallel programming paradigm is mandatory.
XcalableMP (XMP) [1], which is proposed by the XcalableMP Specification
Working Group, is directive-based language extensions for Fortran and C to easily
describe parallelization in programs for distributed memory parallel computers. The
XMP/F compiler [2], which is provided as a reference XMP Fortran compiler, is
currently implemented as a source-to-source translator. It converts XMP Fortran
programs to standard MPI Fortran programs, which can be easily compiled by the
native Fortran compiler and executed on most of parallel computers.
XMP supports typical data/task parallelization methods with simple directives
under a “global-view” programming model, which is partially based on experiences
of High Performance Fortran [3, 4] and Fujitsu XPF (VPP FORTRAN) [5]. XMP
also supports PGAS (Partitioned Global Address Space) features like Coarray
Fortran [6] as a “local-view” programming model. In addition, combinations of
XMP and OpenMP directives are consistently maintained by the XMP/F compiler.
An essential design principle of XMP is “performance awareness,” which means
that all communications or synchronizations are taken by explicit directives or
Coarray statements and no implicit actions are taken.
First, we used XMP Fortran to parallelize the code using the global-view
programming model, and measured its performance on the K computer. We found
that programs converted by the XMP/F compiler prevent optimizations by the
native Fortran compiler and show lower performance than that of hand-coded
MPI programs, but finally almost the same performances are obtained by using
specific compiler options of the native Fortran compiler. Next we parallelized the
code using the local-view programming model, and also measured its performance
on the K computer. We found that translated programs prevent optimizations by
the native Fortran compiler and show lower performance than that of the globalview programming model programs. This degradation cannot be solved by simply
specifying native compiler options at this moment, and improvements of the XMP/F
compiler are expected.
2 Global-View Programming Model
IMPACT-3D is a three-dimensional Eulerian fluid code written in Fortran and
it performs compressible and inviscid fluid computation to simulate convergent
asymmetric flows related to laser fusion [7]. A Cartesian coordinate system is
employed and an explicit 5-point stencil in one direction is used in IMPACT-3D
with uniform grid spacing. So it is easy to parallelize the code with the ordinary
domain decomposition method. Communications between neighboring subdomains
are needed to exchange boundary data.
As the global-view programming model is a directive oriented approach, programs can be incrementally parallelized and different parallelization methods can
be easily tried. Although IMPACT-3D is actually parallelized by three different
