Single-sided PGAS Communications Libraries
Overview of PGAS approaches David Henty, Alan Simpson (EPCC) Harvey Richardson, Bill Long (Cray)
Single-sided PGAS Communications Libraries Overview of PGAS - - PowerPoint PPT Presentation
Single-sided PGAS Communications Libraries Overview of PGAS approaches David Henty, Alan Simpson (EPCC) Harvey Richardson, Bill Long (Cray) Shared-memory directives and OpenMP memory threads 2 OpenMP: work distribution memory !$OMP
Overview of PGAS approaches David Henty, Alan Simpson (EPCC) Harvey Richardson, Bill Long (Cray)
memory
threads
2
memory
threads
!$OMP PARALLEL DO do i=1,32 a(i)=a(i)*2 end do
1-8 9-16 17-24 25-32
3
memory
threads
cpus process
4
Each thread has a means to refer to private objects
Thread, thread team
Threads map to user threads running on one SMP node Extensions to distributed memory not so successful
5
6
processes PROBLEM
memory cpu memory cpu memory cpu
7
process
memory cpu process 0 memory cpu MPI_Send(a,...,1,…) process 1 MPI_Recv(b,...,0,…)
8
9
memory cpu process 0 memory cpu shmem_put(a, b, 1, …) process 1
10
11
12
memory cpu process memory cpu memory cpu process process
13
memory cpu process memory cpu memory cpu process process
14
a = b[3]
Type checking Opportunity to optimize communication
and a good match for modern networks with RDMA
15
16
17
memory pe memory cpu memory pe memory pe memory pe
18
memory pe memory cpu memory pe memory pe memory pe
A(1:N)=SQRT(A(1:N))
A(N) - distributed
memory cpu thread memory cpu memory cpu thread thread
19
memory cpu thread memory cpu memory cpu thread thread
20
upc_forall(i=0;i<32;i++;affinity){ a[i]=a[i]*2; }
shared pointers to distributed data (block or cyclic) pointers to shared data local to a thread Synchronization
upc_forall() to distribute iterations of for() loop
Cray, HP, IBM Berkeley UPC (from LBL), GCC UPC
21