Programming paradigms using PGAS-based languages
Marc Tajchman CEA - DEN/DM2S/SFME/LGLS
Monday, June 9th 2011
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages
Programming paradigms using PGAS-based languages Marc Tajchman CEA - - PowerPoint PPT Presentation
Programming paradigms using PGAS-based languages Marc Tajchman CEA - DEN/DM2S/SFME/LGLS Monday, June 9th 2011 CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages Outline General considerations PGAS definition
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages
◮ execution contexts, with separated memory spaces,
◮ threads running inside an execution context.
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 1/39
◮ direct access from one context to data managed by
◮ higher-level operations on distributed data structures, e.g.
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 2/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages
Private memory space Processes Direct access to local memory Message exchanges ... P0 P1 Pn−1 T0 T1 Tn−1 ... Shared memory Threads Direct access
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 3/39
◮ One or more threads in each process. ◮ A thread has direct access to the private memory owned
◮ Inter-processes data communications handled by
Direct access to local memory T1,0 T2,0 T3,0 T1,1 T2,1 P0 P1 Private (and local) memory
send/receive Message Ti,j: thread in Pi Pi: process
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 4/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages
C0 Private (local) memory of C0 Shared (local) memory of C0 T1,0 T2,0 T3,0 C1 Private (local) memory of C1 Shared (local) memory of C1 T1,1 T2,1 Global addressing Ti,j: thread in Ci Ci: context Local access to the context private memory Local access to the shared memory Distant access to the shared memory
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 5/39
◮ of RDMA-type (remote direct memory access), ◮ handled by one-sided communication functions (like
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 6/39
◮ shared memory location, on a different context, ◮ shared memory location, on the same context, ◮ private memory location, on the same context.
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 7/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages
◮ UPC (Unified Parallel C), a superset of C ◮ CAF (Co-Array Fortran), syntax based on fortran 95 ◮ Titanium , a superset of java ◮ X10, syntax based on java ◮ Chapel, new language (various influences) ◮ XcalableMP, set of pragma’s added to C/C++/fortran
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 8/39
◮ MPI (proposed by most implementations) ◮ GASNet (proposed by most implementations)
◮ OpenSHMEM
◮ GPI
◮ ...
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 9/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages
◮ a parallel execution model of SPMD type, ◮ distributed data structures with a global addressing
◮ operators on these structures, with affinity control, ◮ copy operators between private, local shared, and distant
◮ 2 levels of memory coherence checking (strict for
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 10/39
◮ Berkeley UPC (v 2.12.2, may 2011),
◮ GCC/UPC (v 4.5.1.2, october 2010),
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 11/39
T0 v1[0] v1[n] v1[2n] i T1 v1[1] v1[n+1] ... i Tn−1 v1[n-1] v1[2n-1] v1[N-1] i ... shared memory “Distributed” Local memory
T0 v1[0] ... v1[999] i T1 v1[1000] ... v1[1999] i Tn−1 v1[N-1000] ... v1[N-1] i v1[N-1000] ... shared memory “Distributed” Local memory
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 12/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 13/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 14/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 15/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 16/39
◮ shared memories of 2 different processes: upc memcpy, ◮ private memory of one process, and shared memory of the
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 17/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 18/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 19/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages
◮ an explicit parallel execution model of SPMD-type,
◮ distributed arrays (co-array) with transparent access to
◮ the extension of fortran matrix operations to co-array’s, ◮ etc.
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 20/39
◮ Some commercial compilers provides partial versions of
◮ The only (as far as I know) open-source Co-Array fortran
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 21/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 22/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages
◮ a specific execution model:
◮ tasks parallelism
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 23/39
◮ data parallelism
◮ low-level operators:
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 24/39
◮ a region (set of points or valid indexes):
◮ a distribution (partition scheme between places)
◮ the array itself:
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 25/39
Place 0 Place 1 Place n − 1
Place 0 Place 1 Place n − 1
Local activity Distant activity
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 26/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 27/39
◮ try to launch as many local activities as possible (vs. distant
◮ try to put as many barriers between colocalized activities
◮ activities are light threads but their creation take some
◮ if you know that a region is cartesian, specify it explicitely
◮ ...
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 28/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 29/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 30/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 31/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 32/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 33/39
iteration variation shift total −> 96.1 −> 73.0 −> 72.9 −> 242.1 6.6 8.8 0.8 16.1 4.9 0.7 0.6 6.2 1.1 0.7 0.6 2.4 iteration variation shift total V4: V3 + block copy + virtual columns V3: multi−level task parallelism V2: task parallelism V1: sequential computation −> 188.6 −> 137.8 −> 135.8 −> 462.2 7.2 49.4 2.9 59.6 7.0 3.0 2.9 12.9 3.9 3.1 3.0 10.0
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 34/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages
◮ a similar execution model as X10 (a unique thread starts in
◮ distributed data structures ◮ tasks parallelism
◮ simple language to learn
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 35/39
◮ a domain (set of valid indexes), ◮ a distribution (partition of a domain between locales), ◮ the array itself on this distribution.
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 36/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 37/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages
◮ defining a region (#pragma xmp template), ◮ a partition on contexts (#pragma xmp distribute), ◮ data array alignment (#pragma xmp align)
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 38/39
CEA-EDF-Inria School - 9/6/2011 Programming paradigms using PGAS-based languages 39/39