(j3.2006) 3 levels of parallelism?

Clune, Thomas L. GSFC-6101 thomas.l.clune
Wed Jul 5 09:02:12 EDT 2017


Coarrays and DO CONCURRENT are major advances for parallel programming in Fortran.    However, as we look down the road, I think it is important for us to consider some of the insights that have come from the HPC community.   In particular, there is fairly clear consensus that it is important in user code to explicitly manage _3_ different levels of parallelism.    This is more explicit in the cases like GPU?s but even Intel Phi and conventional processors have shown the importance of carefully coding at each of 3 levels.   Roughly speaking, these levels correspond to (1) coarse-grained message passing (inter-node),  (2) threading (within-node), and (3) vectorization.     But this correspondence is only suggestive - the actual breakdown in GPU?s is somewhat different.

In Garching various statements were made that Coarrays are good for both (1) and (2).   Likewise statements were made that DO CONCURRENT is good for (2) and (3).    And I?m not arguing for or against this. But it would behoove us to be certain that we really can _effectively_ address all 3 levels of parallelism with the standard as is.    Otherwise, to ensure that Fortran retains its focus on HPC, we should be looking for a suitable extension that enables explicit control at all 3 levels in an architecture independent manner.    Maybe it is obvious to others in the committee, in which case I?ll be happy to sit back and absorb wisdom.

Cheers,

- Tom




More information about the J3 mailing list