120
H. Iwashita and M. Nakao
Table 4 Source code scales for the Himeno benchmark
MPI original
MPI non-blocking
PUT non-blocking
Subroutine LOC SOC Chars
LOC SOC chars
LOC SOC Chars
Jacobi
50
33
1546
50
32
1546
43
31
1314
Initcomm
65
39
1724
80
54
2380
19
19
421
Initmax
95
77
2336
115
85
2939
71
71
1584
Sendp
152
59
3724
299
91
7617
96
96
2435
Others
248
225
5872
250
227
5923
232
231
5276
Total
610
433
15,202
794
489
29,495
461
448
11,030
LOC: Number of lines of codes excluding comment and empty lines
SOC: Number of Fortran statements, which may span multiple lines
chars: Number of characters excluding those in comment lines
5 Related Work
The University of Rice has implemented coarray features with their own extension
called CAF2.0 [8]. CAF2.0 is a source-to-source compiler based on the ROSE
compiler. GASNet is used as its communication layer. Similarly to our RS and RA
methods, the Cray pointer is used to pass the data allocated in C to Fortran. Houston
University developed UH-CAF on the Open64-base OpenUH compiler [9]. UHCAF supports the coarray features defined in the Fortran 2008 standard. As the
communication layer, GASNet and ARMCI can be used selectively. OpenCoarrays
is an open-source software project [10]. OpenCoarrays is a library that can be
used with GNU Fortran (gfortran) V5.1 or later and supports the coarray features
specified in Fortran 2008 and a part of Fortran 2018. As the communication layer,
MPICH and GASNet can be used selectively. In the vendors, Cray and Intel fully
support and Fujitsu partially supports the coarray features specified in Fortran 2008.
In the latest Fortran standard, Fortran 2018, a subset of coarrays is referred to as
a team. It is similar to the executing images in the term of XMP, but does not affect
the parallel execution among images.
While non-blocking PUT communication is effective, non-blocking GET communication is difficult to put into practical use because the acquired data is used
immediately. Cray has the directive extension for prefetching a remote coarray
corresponding to the GET communication.
Coarray C++ is a coarray implementation in C++. The coarray features are
implemented with the template library, unlike XMP/C, which is based on the C
language.
H. Iwashita and M. Nakao
Table 4 Source code scales for the Himeno benchmark
MPI original
MPI non-blocking
PUT non-blocking
Subroutine LOC SOC Chars
LOC SOC chars
LOC SOC Chars
Jacobi
50
33
1546
50
32
1546
43
31
1314
Initcomm
65
39
1724
80
54
2380
19
19
421
Initmax
95
77
2336
115
85
2939
71
71
1584
Sendp
152
59
3724
299
91
7617
96
96
2435
Others
248
225
5872
250
227
5923
232
231
5276
Total
610
433
15,202
794
489
29,495
461
448
11,030
LOC: Number of lines of codes excluding comment and empty lines
SOC: Number of Fortran statements, which may span multiple lines
chars: Number of characters excluding those in comment lines
5 Related Work
The University of Rice has implemented coarray features with their own extension
called CAF2.0 [8]. CAF2.0 is a source-to-source compiler based on the ROSE
compiler. GASNet is used as its communication layer. Similarly to our RS and RA
methods, the Cray pointer is used to pass the data allocated in C to Fortran. Houston
University developed UH-CAF on the Open64-base OpenUH compiler [9]. UHCAF supports the coarray features defined in the Fortran 2008 standard. As the
communication layer, GASNet and ARMCI can be used selectively. OpenCoarrays
is an open-source software project [10]. OpenCoarrays is a library that can be
used with GNU Fortran (gfortran) V5.1 or later and supports the coarray features
specified in Fortran 2008 and a part of Fortran 2018. As the communication layer,
MPICH and GASNet can be used selectively. In the vendors, Cray and Intel fully
support and Fujitsu partially supports the coarray features specified in Fortran 2008.
In the latest Fortran standard, Fortran 2018, a subset of coarrays is referred to as
a team. It is similar to the executing images in the term of XMP, but does not affect
the parallel execution among images.
While non-blocking PUT communication is effective, non-blocking GET communication is difficult to put into practical use because the acquired data is used
immediately. Cray has the directive extension for prefetching a remote coarray
corresponding to the GET communication.
Coarray C++ is a coarray implementation in C++. The coarray features are
implemented with the template library, unlike XMP/C, which is based on the C
language.
