der RWTH Aachen Konfiguration und parallele Programmierung Dieter an Mey

Größe: px
Ab Seite anzeigen:

Download "der RWTH Aachen Konfiguration und parallele Programmierung Dieter an Mey"

Transkript

1 Der Sun Fire SMP-Cluster der RWTH Aachen Konfiguration und parallele Programmierung Dieter an Mey

2 Inhalt Das Sun Fire SMP-Cluster der RWTH Aachen Aktuelle Konfiguration und Rechnerarchitektur Parallelisierung mit OpenMP und MPI an einem Beispiel MPI OpenMP Hybrid Zusammenfassung

3 Hochleistungsrechnen an der RWTH im Zeitraffer /8 Sprachen Fortran77 C Fortran90/95 C++ Fortran C/C++ Java??? Parallelisierung Vektorisierung MPI MPI2 OpenMP OpenMP autopar (nested) hybrid Hardware CDC Cyber 175 CDC Cyber 205 (Bochum) IBM3090 Fujitsu VP/VPP HP V(SMP) Workstations Sun Fire (US III/IV) PCs Opteron Betriebssystem NOS, VSOS VM/CMS VSP Unix AIX, HPUX, IRIX, UXPM, Solaris, Linux Solaris Linux Fedora, RedHat, Solaris Linux SuSE, Debian, Windows?

4 HPC-Resources at Aachen University History peak performance [GFlop/s] memory [GByte] Cyber Cyber (Bochum) IBM 3090 VF 1990 SNI S-600/ SNI VPP300/ SunFire Cluster June 2001 SunFire Cluster April 2002 SunFire + Opteron Sept 2004

5 HPC-Resources at Aachen University History peak performance [GFlop/s] memory [GByte] Cyber Cyber (Bochum) IBM 3090 VF 1990 SNI S-600/ SNI VPP300/ SunFire Cluster June 2001 SunFire Cluster April 2002 SunFire + Opteron Sept 2004

6 Sun Fire SMP Cluster at the RWTH Aachen University 4630 GF 3584 GB Sun Fire Link Gigabit Ethernet Model SF E25K SF E6900 SF E6900 SF E2900 SF V40z Nodes essors 72 US IV 24 US IV 24 US IV 12 US IV 4 Opteron. cores Clock cycle 1050 MHz 1200 MHz 1200 MHz 1200 MHz 2200 MHz Peak Perf GF GF GF 57.6 GF 17.6 GF 288 GB 96 GB 96 GB 48 GB 8 GB

7 Sun Fire SMP Cluster at the RWTH Aachen University 4630 GF 3584 GB Sun Fire Link Gigabit Ethernet Model SF E25K SF E6900 SF E6900 SF E2900 SF V40z Nodes essors 72 US IV 24 US IV 24 US IV 12 US IV 4 Opteron. cores Clock cycle 1050 MHz 1200 MHz 1200 MHz 1200 MHz 2200 MHz Peak Perf GF GF GF 57.6 GF 17.6 GF 288 GB 96 GB 96 GB 48 GB 8 GB

8 Sun Fire SMP Cluster - Networks Latency Total bandwidth between 2 nodes Gigabit Ethernet all nodes µs ~100 MB/s Sun Fire Link Gigabit Ethernet Sun Fire Link 4 x SF E25K 8 x SF E x SF E6900 ~4 µs ~ 2 GB/s

9 Sun Fire SMP Cluster at the RWTH Aachen University 4630 GF 3584 GB Sun Fire Link Gigabit Ethernet Model SF E25K SF E6900 SF E6900 SF E2900 SF V40z Nodes essors 72 US IV 24 US IV 24 US IV 12 US IV 4 Opteron. cores Clock cycle 1050 MHz 1200 MHz 1200 MHz 1200 MHz 2200 MHz Peak Perf GF GF GF 57.6 GF 17.6 GF 288 GB 96 GB 96 GB 48 GB 8 GB

10 Sun Fire SMP Cluster Sun Fire E2900 Crossbar Crossbar (interleaved) (interleaved) (interleaved) SF E nodes 3 processor boards 4 UltraSPARC IV 1200 MHz processors per board local memory on board memory latency ns Crossbar / Bus Crossbar / Bus Crossbar / Bus

11 Sun Fire SMP Cluster at the RWTH Aachen University 4630 GF 3584 GB Sun Fire Link Gigabit Ethernet Model SF E25K SF E6900 SF E6900 SF E2900 SF V40z Nodes essors 72 US IV 24 US IV 24 US IV 12 US IV 4 Opteron. cores Clock cycle 1050 MHz 1200 MHz 1200 MHz 1200 MHz 2200 MHz Peak Perf GF GF GF 57.6 GF 17.6 GF 288 GB 96 GB 96 GB 48 GB 8 GB

12 Sun Fire SMP Cluster Sun Fire E6900 Sun Fire Link SF E nodes 6 processor boards 4 UltraSPARC IV 1200 MHz processors per board local memory on board memory latency ns Crossbar Crossbar (interleaved) (interleaved) (interleaved) (interleaved) (interleaved) Crossbar (interleaved) / Bus Crossbar (interleaved) / Bus Crossbar / Bus Crossbar / Bus Crossbar / Bus Crossbar / Bus Crossbar

13 Sun Fire SMP Cluster at the RWTH Aachen University 4630 GF 3584 GB Sun Fire Link Gigabit Ethernet Model SF E25K SF E6900 SF E6900 SF E2900 SF V40z Nodes essors 72 US IV 24 US IV 24 US IV 12 US IV 4 Opteron. cores Clock cycle 1050 MHz 1200 MHz 1200 MHz 1200 MHz 2200 MHz Peak Perf GF GF GF 57.6 GF 17.6 GF 288 GB 96 GB 96 GB 48 GB 8 GB

14 Sun Fire SMP Cluster Sun Fire E25K (interleaved) (interleaved) (interleaved) (interleaved) Crossbar (interleaved) Crossbar / Bus (interleaved) Crossbar / Bus (interleaved) Crossbar (interleaved) / Bus Crossbar (interleaved) / Bus Crossbar (interleaved) / Bus Crossbar (interleaved) / Bus Sun Fire Link Crossbar (interleaved) Crossbar / Bus (interleaved) Crossbar / Bus (interleaved) / Crossbar Bus (interleaved) / SF E25K Crossbar Bus (interleaved) / Crossbar Bus (interleaved) / Crossbar Bus (interleaved) 4 nodes Crossbar (interleaved) Crossbar / Bus (interleaved) 18 processor boards Crossbar / Bus (interleaved) Crossbar / Bus 4 UltraSPARC IV 1050 MHz Crossbar / Bus Crossbar / Bus processors per board Crossbar / Bus local memory on board memory latency 250 ns local memory latency 500 ns remote Crossbar Crossbar

15 Sun Fire SMP Cluster at the RWTH Aachen University 4630 GF 3584 GB Sun Fire Link Gigabit Ethernet Model SF E25K SF E6900 SF E6900 SF E2900 SF V40z Nodes essors 72 US IV 24 US IV 24 US IV 12 US IV 4 Opteron. cores Clock cycle 1050 MHz 1200 MHz 1200 MHz 1200 MHz 2200 MHz Peak Perf GF GF GF 57.6 GF 17.6 GF 288 GB 96 GB 96 GB 48 GB 8 GB

16 Sun Fire SMP Cluster Sun Fire V40z Gigabit Ethernet coherent HyperTransport links SF V40z 64 nodes 4 AMD Opteron 2200 MHz processors local memory attached to each processor memory latency ~36 ns local memory latency ns remote

17 Uni essor Board of SF E25K and SF E6900 Crossbar Crossbar / Bus Bus (interleaved) Crossbar / Bus

18 UltraSPARC III (before( before) versus UltraSPARC IV (since( Sept 2004) ~ ns ~1GB/s ~ ns ~1GB/s L2-8 MB L2-8 MB L2-8 MB 900 MHz ~24 ns ~2-4 GB/s 1050/1200 MHz 1 Add + 1 Mult per cycle ~24 ns ~2-4 GB/s L1-64KB I- 32KB prefetch cache 2 KB write cache 2KB address cache (TLB) L1-64KB I- 32KB prefetch cache 2 KB write cache 2KB address cache (TLB) essor core L1-64KB I- 32KB prefetch cache 2 KB write cache 2KB address cache (TLB) essor core

19 Sun Fire V40z ~36 ns ~3 GB/s ~44-57 ns ~2-3 GB/s coherent HyperTransport links

20 Opteron 848 essor L2 1MB L1 64 KB Instr. 64 KB address cache (TLB) coherent HyperTransport links 2200 MHz 1 Add + 1 Mult per cycle

21 Inhalt Das Sun Fire SMP-Cluster der RWTH Aachen Aktuelle Konfiguration und Rechnerarchitektur Parallelisierung mit OpenMP und MPI an einem Beispiel MPI OpenMP Hybrid Zusammenfassung

22 Mehrprozessorsystem mit verteiltem Speicher (Distributed ) Parallelisierung durch Message Passing mit MPI External network MPI- MPI- MPI-

23 Mehrprozessorsystem mit gemeinsamem Speicher (Shared ) - Uniform Access (UMA) Message Passing ist auch auf Shared--Rechnern möglich (interleaved) MPI- MPI- Crossbar / Bus MPI-

24 Cluster von Mehrprozessorsystem mit gemeinsamem Speicher (SMP( SMP-Cluster) Message Passing funktioniert daher auch auf SMP-Clustern External network (interleaved) MPI- MPI- Crossbar / Bus MPI- (interleaved) MPI- MPI- Crossbar / Bus MPI-

25 Mehrprozessorsystem mit gemeinsamem Speicher (Shared ) - Uniform Access (UMA) Auf Shared--Rechnern kann alternativ OpenMP eingesetzt und auch automatisch parallelisiert werden OpenMP- (interleaved) Crossbar / Bus -Thread -Thread -Thread

26 Cluster von Mehrprozessorsystem mit gemeinsamem Speicher (SMP( SMP-Cluster) Message Passing kann mit OpenMP (und automatischer Parallelisierung) kombiniert werden External network (interleaved) (interleaved) Crossbar / Bus Crossbar / Bus

27 Sun Fire SMP Cluster Operating Systems Sun Fire Link Gigabit Ethernet Model SF E25K SF E6900 SF E6900 SF E2900 SF V40z Nodes essors 72 US IV 24 US IV 24 US IV 12 US IV 4 Opteron Operating System Solaris 9 Solaris 10 Fedora Linux Windows 2003

28 Sun Fire SMP Cluster Operating Systems Sun Fire Link Gigabit Ethernet Model SF E25K SF E6900 SF E6900 SF E2900 SF V40z Nodes essors 72 US IV 24 US IV 24 US IV 12 US IV 4 Opteron Operating System Solaris 9 Solaris 10 Fedora Linux Windows 2003 in Vorbereitung

29 Compiler / Library Debugging Analysis / Tuning Serial Sun Studio F95/C/C++ 1,2 Intel F95/C++ 3,4 MS Visual Studio C++ 4 GNU C/C++ 1,2,3,4 PGI F77/F90/C/C++ 3 most important tools (bold) less important tools (regular) installation/test planed (italic) Etnus TotalView 1,3 Sun IDE 1,2,(3) Sun dbx 1,2 GNU gdb 3,4 GNU ddd 3 PGI pgdbg 3 Intel idb 3 MS Visual Studio 4 Allinea DDT 1,3 Sun Perform. Analyzer 1,2 Sun gprof 1,2 GNU gprof 3,4 PGI pgprof 3 Intel VTune 3,4 1. SPARC-Solaris 2. Opteron-Solaris 3. Opteron-Linux 4. Opteron-Windows OpenMP Autopar Sun Studio F95/C/C++ 1,2 Intel Guide F77/F90/C/C++ 1 MS Visual Studio C++ 4 PGI F77/F90/C/C++ 3 Intel F95/C++ 3,4 Etnus TotalView 1,3 Sun IDE 1,2 Sun dbx 1,2 Intel Assure 1 Intel Thread Checker 3,4 (Allinea DDT 1,3 ) Sun Perform. Analyzer 1,2 Intel GuideView 1 Intel Thread Profiler 3,4 MPI Sun MPI 1 mpich 1,2,3,4 mpich2 1,2,3,4 Windows HPC 4 Etnus TotalView 1,3 Sun Prism 1 Allinea DDT 1,3 Windows HPC 4 Intel Trace Collector and Analyzer (Vampir) 1,3 Sun Perform. Analyzer 1 Sun mpprof 1 GNU jumpshot 1,2,3,4

30 Compiler / Library Debugging Analysis / Tuning Serial Sun Studio F95/C/C++ 1,2 Intel F95/C++ 3,4 MS Visual Studio C++ 4 GNU C/C++ 1,2,3,4 PGI F77/F90/C/C++ 3 most important tools (bold) less important tools (regular) installation/test planed (italic) Etnus TotalView 1,3 Sun IDE 1,2,(3) Sun dbx 1,2 GNU gdb 3,4 GNU ddd 3 PGI pgdbg 3 Intel idb 3 MS Visual Studio 4 Allinea DDT 1,3 Sun Perform. Analyzer 1,2 Sun gprof 1,2 GNU gprof 3,4 PGI pgprof 3 Intel VTune 3,4 1. SPARC-Solaris 2. Opteron-Solaris 3. Opteron-Linux 4. Opteron-Windows OpenMP Autopar Sun Studio F95/C/C++ 1,2 Intel Guide F77/F90/C/C++ 1 MS Visual Studio C++ 4 PGI F77/F90/C/C++ 3 Intel F95/C++ 3,4 Etnus TotalView 1,3 Sun IDE 1,2 Sun dbx 1,2 Intel Assure 1 Intel Thread Checker 3,4 Sun Perform. Analyzer 1,2 Intel GuideView 1 Intel Thread Profiler 3,4 MPI Sun MPI 1 mpich 1,2,3,4 mpich2 1,2,3,4 Windows HPC 4 Etnus TotalView 1,3 Sun Prism 1 Allinea DDT 1,3 Windows HPC 4 Intel Trace Collector and Analyzer (Vampir) 1,3 Sun Perform. Analyzer 1 Sun mpprof 1 GNU jumpshot 1,2,3,4

31 Compiler / Library Debugging Analysis / Tuning Serial Sun Studio F95/C/C++ 1,2 Intel F95/C++ 3,4 MS Visual Studio C++ 4 GNU C/C++ 1,2,3,4 PGI F77/F90/C/C++ 3 most important tools (bold) less important tools (regular) installation/test planed (italic) Etnus TotalView 1,3 Sun IDE 1,2,(3) Sun dbx 1,2 GNU gdb 3,4 GNU ddd 3 PGI pgdbg 3 Intel idb 3 MS Visual Studio 4 Allinea DDT 1,3 Sun Perform. Analyzer 1,2 Sun gprof 1,2 GNU gprof 3,4 PGI pgprof 3 Intel VTune 3,4 1. SPARC-Solaris 2. Opteron-Solaris 3. Opteron-Linux 4. Opteron-Windows OpenMP Autopar Sun Studio F95/C/C++ 1,2 Intel Guide F77/F90/C/C++ 1 MS Visual Studio C++ 4 PGI F77/F90/C/C++ 3 Intel F95/C++ 3,4 Etnus TotalView 1,3 Sun IDE 1,2 Sun dbx 1,2 Intel Assure 1 Intel Thread Checker 3,4 (Allinea DDT 1,3 ) Sun Perform. Analyzer 1,2 Intel GuideView 1 Intel Thread Profiler 3,4 MPI Sun MPI 1 mpich 1,2,3,4 mpich2 1,2,3,4 Windows HPC 4 Etnus TotalView 1,3 Sun Prism 1 Allinea DDT 1,3 Windows HPC 4 Intel Trace Collector and Analyzer (Vampir) 1,3 Sun Perform. Analyzer 1 Sun mpprof 1 GNU jumpshot 1,2,3,4

32 Compiler / Library Debugging Analysis / Tuning Serial Sun Studio F95/C/C++ 1,2 Intel F95/C++ 3,4 MS Visual Studio C++ 4 GNU C/C++ 1,2,3,4 PGI F77/F90/C/C++ 3 most important tools (bold) less important tools (regular) installation/test planed (italic) Etnus TotalView 1,3 Sun IDE 1,2,(3) Sun dbx 1,2 GNU gdb 3,4 GNU ddd 3 PGI pgdbg 3 Intel idb 3 MS Visual Studio 4 Allinea DDT 1,3 Sun Perform. Analyzer 1,2 Sun gprof 1,2 GNU gprof 3,4 PGI pgprof 3 Intel VTune 3,4 1. SPARC-Solaris 2. Opteron-Solaris 3. Opteron-Linux 4. Opteron-Windows OpenMP Autopar Sun Studio F95/C/C++ 1,2 Intel Guide F77/F90/C/C++ 1 MS Visual Studio C++ 4 PGI F77/F90/C/C++ 3 Intel F95/C++ 3,4 Etnus TotalView 1,3 Sun IDE 1,2 Sun dbx 1,2 Intel Assure 1 Intel Thread Checker 3,4 (Allinea DDT 1,3 ) Sun Perform. Analyzer 1,2 Intel GuideView 1 Intel Thread Profiler 3,4 MPI Sun MPI 1 mpich 1,2,3,4 mpich2 1,2,3,4 Windows HPC 4 Etnus TotalView 1,3 Sun Prism 1 Allinea DDT 1,3 Windows HPC 4 Intel Trace Collector and Analyzer (Vampir) 1,3 Sun Perform. Analyzer 1 Sun mpprof 1 GNU jumpshot 1,2,3,4

33 Compiler / Library Debugging Analysis / Tuning Serial Sun Studio F95/C/C++ 1,2 Intel F95/C++ 3,4 MS Visual Studio C++ 4 GNU C/C++ 1,2,3,4 PGI F77/F90/C/C++ 3 most important tools (bold) less important tools (regular) installation/test planed (italic) Etnus TotalView 1,3 Sun IDE 1,2,(3) Sun dbx 1,2 GNU gdb 3,4 GNU ddd 3 PGI pgdbg 3 Intel idb 3 MS Visual Studio 4 Allinea DDT 1,3 Sun Perform. Analyzer 1,2 Sun gprof 1,2 GNU gprof 3,4 PGI pgprof 3 Intel VTune 3,4 1. SPARC-Solaris 2. Opteron-Solaris 3. Opteron-Linux 4. Opteron-Windows OpenMP Autopar Sun Studio F95/C/C++ 1,2 Intel Guide F77/F90/C/C++ 1 MS Visual Studio C++ 4 PGI F77/F90/C/C++ 3 Intel F95/C++ 3,4 Etnus TotalView 1,3 Sun IDE 1,2 Sun dbx 1,2 Intel Assure 1 Intel Thread Checker 3,4 (Allinea DDT 1,3 ) Sun Perform. Analyzer 1,2 Intel GuideView 1 Intel Thread Profiler 3,4 MPI Sun MPI 1 mpich 1,2,3,4 mpich2 1,2,3,4 Windows HPC 4 Etnus TotalView 1,3 Sun Prism 1 Allinea DDT 1,3 Windows HPC 4 Intel Trace Collector and Analyzer (Vampir) 1,3 Sun Perform. Analyzer 1 Sun mpprof 1 GNU jumpshot 1,2,3,4

34

35

36

37

38 Beispiel: Numerische Integration Die Kreiszahl π kann berechnet werden als Integral: 1 π = f(x)dx, mit f(x) = 4 /(1 + x 2 ) 0 Dieses Integral kann numerisch mit einer Quadraturformel (Mittelpunktsregel) angenähert werden: n π 1/n f(x i ), mit x i = (i-½)/ n für i=1,...,n i=1

39 Serielles Fortran90-Programm! statement function f(a) = 4.d0 / (1.d0+a*a)! read *, n h = 1.0d0 / n sum = 0.0d0 do i = 1, n x = h * ( i ) sum = sum + func(x) end do pi = h * sum üblicherweise rechenintensiv!

40 MPI - Geschichte 1994: MPI Version 1.0 (1995 Version 1.1,1997 Version 1.2) Standard für f r die Message-Passing Passing-ProgrammierungProgrammierung insbes. auf Maschinen mit verteiltem Hauptspeicher Programmierschnittstelle für f r C und Fortran77 inzwischen auf allen Parallelrechnern verfügbar mächtig und komplex: weit über 100 Befehle einfach: häufig h genügen Befehle hat im techn.-wiss wiss.. Rechnen PVM abgelöst keine dynamische Generierung von Tasks 1997: MPI Version 2.0 (wesentliche Erweiterungen zu MPI-1) Einseitige Kommunikation MPI-IO IO dynamische Generierung von Tasks Unterstützung tzung von Fortran90 und C++ mpich2 (beta( beta), Sun MPI MPI

41 MPI-Programm Programm 1. Version in Fortran90 program main include 'mpif.h'...! statement function f(a) = 4.d0 / (1.d0+a*a)! Initialisierung der MPI-Umgebung call MPI_INIT( ierr ) call MPI_COMM_RANK( MPI_COMM_WORLD, myid, ierr ) call MPI_COMM_SIZE( MPI_COMM_WORLD, ntasks, ierr )...! Verlassen der MPI-Umgebung call MPI_FINALIZE(ierr) end program main send receive essor Network essor

42 ! Point-to-point communication if ( myid == 0 ) then! nur der Master read *, n do islave = 1, ntasks-1 call MPI_Send(n,1,MPI_INTEGER,islave,...) end do else! alle Slaves call MPI_Recv(n,1,MPI_INTEGER,master,...) end if MPI-Programm Programm 1. Version (Fortsg( Fortsg.) h = 1 / n sum = 0.0 Arbeitsteilung do i = myid+1, n, ntasks x = h * ( i -0.5 ) sum = sum + f(x) end do mypi = h * sum if ( myid /= 0 ) then! Slaves call MPI_Send(mypi,1,MPI_DOUBLE_PRECISION,master,...) else! Master pi = mypi do islave = 1, ntasks-1 call MPI_Recv(mypi,1,MPI_DOUBLE_PRECISION,islave,...) pi = pi + mypi end do print *, pi endif

43 MPI-Programm Programm 2. Version in Fortran90! Collective communication if ( myid == 0 ) then! nur der Master read *, n end if call MPI_BCAST(n,1,MPI_INTEGER,master,...) h = 1.0d0 / n sum = 0.0d0 do i = myid+1, n, numprocs x = h * ( i -0.5 ) sum = sum + f(x) end do mypi = h * sum call MPI_REDUCE(mypi,pi,1,MPI_DOUBLE_PRECISION,MPI_SUM,master,...) if (myid == 0) then print *, pi endif

44 MPI-Programm Programm 2. Version in C #include "mpi.h"... MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); if (myid==0){scanf("%d",&n);} MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); h = 1.0 / (double) n; sum = 0.0; for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double)i - 0.5); sum += f(x); } mypi = h * sum; MPI_Reduce(&mypi,&pi,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD); if (myid == 0) { printf( %f\n", pi); } MPI_Finalize();

45 One-sided Communication (Fortran) if ( myrank.eq. master ) then read (*,*) n allocate ( fi(n) ) call MPI_Win_create ( fi, 8*n, 8, 0, MPI_COMM_WORLD, win, ierr ) else call MPI_Win_create ( fi, 0, 8, 0, MPI_COMM_WORLD, win, ierr ) end if call MPI_Bcast ( n, 1, MPI_INTEGER, master, MPI_COMM_WORLD, ierr ) h = 1.0d0/dble(n) call MPI_Win_fence ( 0, win, ierr ) do i = myrank+1, n, nprocs! simple approach of work sharing x = h * (dble(i) - 0.5d0) fh = f(x) call MPI_Put ( fh, 1, MPI_DOUBLE_PRECISION, master, i-1, 1, & MPI_DOUBLE_PRECISION, win, ierr) end do call MPI_Win_fence ( assert, win, ierr ) if ( myrank.eq. 0 ) then pi = h * sum(fi) print *, pi deallocate ( fi ) end if call MPI Win free ( win, ierr )

46 Visualizing the MPI Performance Vampir(trace) ) / Intel Trace Collector + Analyzer Global Timeline Gobal Activity Chart

47 OpenMP - Geschichte 1997: OpenMP Version 1.0 für Fortran Standard für f r die Shared- -Programmierung inzwischen für f r alle namhaften SMP-Rechner verfügbar wird im techn.-wiss wiss.. Rechnen die proprietären ren Direktiven und die unmittelbare Verwendung der pthreads ablösen 1998:OpenMP Version 1.0 für C und C : OpenMP Version 2.0 für Fortran Unterstützung tzung des Fortran90-Modulen Modulen-Konzeptes

48 Serielles Fortran90-Programm! statement function f(a) = 4.d0 / (1.d0+a*a)! read *, n h = 1.0d0 / n sum = 0.0d0 do i = 1, n x = h * ( i ) sum = sum + func(x) end do pi = h * sum

49 OpenMP-Programm Programm 1. Version in Fortran90! statement function f(a) = 4.d0 / (1.d0+a*a)! read *, n sum = 0.0d0!$omp parallel!$omp do private(i,x) do i = 1,n x = h * ( i )!$omp critical sum = sum + f(x)!$omp end critical end do!$omp end do!$omp end parallel Default: pi = h * sum private shared essor private i, x n, h, sum i, x i=1,2,,n/2 schedule(static) i=1,2,7,13,n Alternative (z.b.): schedule(dynamic) essor i=n/2+1,,n i=3,4,,n-1

50 OpenMP-Programm Programm 2. Version in Fortran90! statement function f(a) = 4.d0 / (1.d0+a*a) real, allocatable, dimension(:) :: fx read *, n allocate (fx(n)) h = 1.0d0 / n sum = 0.0d0!$omp parallel private(i,x) shared(h,fx)!$omp do do i = 1,n x = h * ( i ) fx(i) = f(x) end do!$omp end do!$omp end parallel do i = 1,n sum = sum + fx(i) end do pi = h * sum deallocate (fx) private shared essor private i, x n, h, fx i, x essor

51 OpenMP-Programm Programm 3. Version in Fortran90! statement function f(a) = 4.d0 / (1.d0+a*a)! read *, n h = 1.0d0 / n sum = 0.0d0!$omp parallel private(i,x,sum_local) sum_local = 0.0d0!$omp do do i = 1,n x = h * ( i ) sum_local = sum_local + f(x) end do!$omp end do!$omp critical sum = sum + sum_local!$omp end critical!$omp end parallel pi = h * sum Master Thread serial region parallel region serial region Slave Threads Slave Threads Slave Threads

52 OpenMP-Programm Programm 3. Version in Fortran90! statement function f(a) = 4.d0 / (1.d0+a*a)! read *, n h = 1.0d0 / n sum = 0.0d0!$omp parallel private(i,x,sum_local) sum_local = 0.0d0!$omp do do i = 1,n x = h * ( i ) sum_local = sum_local + f(x) end do!$omp end do!$omp critical sum = sum + sum_local!$omp end critical!$omp end parallel pi = h * sum redundant work- sharing Master Thread redundant serial region parallel region serial region Slave Threads Slave Threads Slave Threads

53 OpenMP-Programm Programm 3. Version in Fortran90! statement function f(a) = 4.d0 / (1.d0+a*a)! read *, n private shared h = 1.0d0 / n i, x, n, h, sum sum = 0.0d0 sum_local!$omp parallel private(i,x,sum_local) sum_local = 0.0d0!$omp do do i = 1,n x = h * ( i ) sum_local = sum_local + f(x) essor end do!$omp end do!$omp critical sum = sum + sum_local!$omp end critical!$omp end parallel pi = h * sum private i, x, sum_local essor

54 OpenMP-Programm Programm 4. Version in Fortran90 (Auszug)! statement function f (a) = 4.d0 / (1.d0+a*a)! read *, n h = 1.0d0 / n sum = 0.0d0!$omp parallel private(i,x)!$omp do reduction(+:sum) do i = 1,n x = h * ( i ) sum = sum + f(x) end do!$omp end do!$omp end parallel pi = h * sum private shared i, x, (sum) essor n, h, sum private i, x, (sum) essor

55 OpenMP-Programm Programm 4. Version in Fortran90 (Auszug)! statement function f (a) = 4.d0 / (1.d0+a*a)! read *, n h = 1.0d0 / n sum = 0.0d0!$omp parallel do private(i,x) reduction(+:sum) do i = 1,n x = h * ( i ) sum = sum + f(x) end do!$omp end parallel do pi = h * sum

56 Automatische Parallelisierung! statement function f(a) = 4.d0 / (1.d0+a*a)! read *, n h = 1.0d0 / n sum = 0.0d0 do i = 1, n x = h * ( i ) sum = sum + f(x) end do pi = h * sum Da die Statement-Function f(a) einfach ist: f90 -fast -xarch=v8plusb -xautopar -xreduction -xloopinfo serial_pi.f90 "serial_pi.f90", line xx: PARALLELIZED, reduction, and serial version generated

57 Visualizing the Behavior of an OpenMP program GuideView (KAI) / Intel Thread Visualizer

58 Fehlersuche mit Assure (Fortran) Intel Thread Checker

59 Hybrid-Programm in Fortran90 call MPI_INIT( ierr ) call MPI_COMM_RANK( MPI_COMM_WORLD, myid, ierr ) call MPI_COMM_SIZE( MPI_COMM_WORLD, numprocs, ierr ) if ( myid.eq. 0 ) read *, n call MPI_BCAST(n,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierr) h = 1.0d0 / n sum = 0.0d0!$omp parallel do reduction(+:sum) private(i,x) do i = myid+1, n, numprocs x = h * ( i ) sum = sum + f(x) end do mypi = h * sum call MPI_REDUCE(mypi,pi,1,MPI_DOUBLE_PRECISION,MPI_SUM,0,...) if (myid.eq. 0) print *, pi call MPI_FINALIZE(ierr)

60 Beispiel: Adaptive Numerische Integration Die Kreiszahl π kann berechnet werden als Integral: 1 π = f(x)dx, mit f(x) = 4 /(1 + x 2 ) 0

61 Beispiel: Adaptive Numerische Integration Die Kreiszahl π kann berechnet werden als Integral: 1 π = f(x)dx, mit f(x) = 4 /(1 + x2) 0

62 Beispiel: Adaptive Numerische Integration Die Kreiszahl π kann berechnet werden als Integral: 1 π = f(x)dx, mit f(x) = 4 /(1 + x2) 0

63 Rekursive Fortran90-Funktion Funktion zur adaptiven Integration recursive function integral (f, a, b, tolerance) & result(integral_result) h = b - a mid = (a + b) / 2 one_trapezoid_area = h * (f(a) + f(b)) / 2 two_trapezoid_area = h/2 * (f(a) + f(mid)) / 2 + & h/2 * (f(mid) + f(b)) / 2 if (abs(one_trapezoid_area - two_trapezoid_area) < & 3 * tolerance) then integral_result = two_trapezoid_area else left_area = integral (f, a, mid, tolerance / 2) right_area = integral (f, mid, b, tolerance / 2) integral_result = left_area + right_area end if end function integral

64 Tuning: Weniger Funktionsaufrufe (kein schlechtes Programm parallelisieren!) recursive function integral (f, a, fa, b, fb, tolerance) & result (integral_result)... h = b - a mid = (a + b) / 2 fmid = f(mid) one_trapezoid_area = h * (fa + fb) / 2 two_trapezoid_area = h/2 * (fa + fmid) / 2 + & h/2 * (fmid + fb) / 2 if (abs(one_trapezoid_area - two_trapezoid_area) < & 3 * tolerance) then integral_result = two_trapezoid_area else left_area = integral (f, a, fa, mid, fmid, tolerance / 2) right_area = integral (f, mid, fmid, b, fb, tolerance / 2) integral_result = left_area + right_area end if end function integral

65 Serielle Implementation mit Stack (das serielle Programm für f r die Parallelisierung vorbereiten!) function integral (f, ah, bh, tolerance) result (integral_result) call new_stack ( stack ) call push ( stack, ah, f(ah), bh, f(bh), tolerance ) integral_result = 0.0 do if ( empty_stack ( stack ) ) exit call pop ( stack, a, fa, b, fb, tolerance ) h = b - a mid = (a + b) / 2 fmid = f(mid) one_trapezoid_area = h * (fa + fb) / 2 two_trapezoid_area = h/2 * (fa + fmid) / 2 + & h/2 * (fmid + fb) / 2 if (abs(one_trapezoid_area - two_trapezoid_area) & < 3 * tolerance) then integral_result = integral_result + two_trapezoid_area else call push ( stack, a, fa, mid, fmid, tolerance / 2 ) call push ( stack, mid, fmid, b, fb, tolerance / 2 ) end if end do end function integral

66 function integral (f, ah, bh, tolerance) result (integral_result) call new_stack ( stack ) call push ( stack, ah, f(ah), bh, f(bh), tolerance ) integral_result = 0.0; busy_cnt = 0; ready =.false.!$omp parallel default(none) shared(stack, integral_result,busy_cnt) &!$omp private(a,fa,b,fb,tolerance,h,mid,fmid,one_trapezoid_area,two_trapezoid_area)&!$omp private(idle,ready,private_result) idle=.true.; private_result = 0.0; do!$omp critical (stack) if ( empty_stack ( stack ) ) then if (.not. idle ) then idle=.true.; busy_cnt = busy_cnt - 1 end if if ( busy_cnt.eq. 0 ) ready =.true. else call pop ( stack, a, fa, b, fb, tolerance ) if ( idle ) then idle =.false. ; busy_cnt = busy_cnt + 1 end if end if!$omp end critical (stack) if ( idle ) then if ( ready ) exit cycle end if h = b a; mid = (a + b) / 2; fmid = f(mid) one_trapezoid_area = h * (fa + fb) / 2 two_trapezoid_area = h/2 * (fa + fmid) / 2 + h/2 * (fmid + fb) / 2 if (abs(one_trapezoid_area - two_trapezoid_area) < 3 * tolerance) then private_result = private_result + two_trapezoid_area else!$omp critical (stack) call push ( stack, a, fa, mid, fmid, tolerance / 2 ) call push ( stack, mid, fmid, b, fb, tolerance / 2 )!$omp end critical (stack) end if end do!$omp critical (result) integral_result = integral_result + private_result!$omp end critical (result)!$omp end parallel end function integral Erste OpenMP Version Der Zugriff auf den Stack muss in kritischen Regionen geschützt werden

67 function integral (f, ah, bh, tolerance) result (integral_result) call new_stack ( stack ) call push ( stack, ah, f(ah), bh, f(bh), tolerance ) integral_result = 0.0; busy_cnt = 0; ready =.false.!$omp parallel default(none) shared(stack,,busy_cnt) &!$omp private(a,fa,b,fb,tolerance,h,mid,fmid,one_trapezoid_area,two_trapezoid_area)&!$omp private(idle,ready idle=.true. do!$omp critical (stack) if ( empty_stack ( stack ) ) then if (.not. idle ) then idle=.true.; busy_cnt = busy_cnt - 1 end if if ( busy_cnt.eq. 0 ) ready =.true. else call pop ( stack, a, fa, b, fb, tolerance ) ) reduction(+:integral_result) if ( idle ) then idle =.false. ; busy_cnt = busy_cnt + 1 end if end if!$omp end critical (stack) if ( idle ) then if ( ready ) exit cycle end if h = b a; mid = (a + b) / 2; fmid = f(mid) one_trapezoid_area = h * (fa + fb) / 2 two_trapezoid_area = h/2 * (fa + fmid) / 2 + h/2 * (fmid + fb) / 2 if (abs(one_trapezoid_area - two_trapezoid_area) < 3 * tolerance) then integral_result = integral_result + two_trapezoid_area else!$omp critical (stack) call push ( stack, a, fa, mid, fmid, tolerance / 2 ) call push ( stack, mid, fmid, b, fb, tolerance / 2 )!$omp end critical (stack) end if end do Zweite OpenMP Version reduction Klausel!$omp end parallel end function integral

68 Nested Parallelism (Neu in Sun Studio 10) recursive function integral (f, a, fa, b, fb, tolerance) & result (integral_result)... h = b - a mid = (a + b) /2 fmid = f(mid) one_trapezoid_area = h * (fa + fb) / 2 two_trapezoid_area = h/2 * (fa + fmid) / 2 + & h/2 * (fmid + fb) / 2 export OMP_NESTED=true export SUNW_MP_MAX_POOL_THREADS=23 export SUNW_MP_MAX_NESTED_LEVELS=8 if (abs(one_trapezoid_area - two_trapezoid_area) & < 3 * tolerance) then integral_result = two_trapezoid_area else!$omp parallel sections!$omp section left_area = integral (f, a, fa, mid, fmid, tolerance / 2)!$omp section right_area = integral (f, mid, fmid, b, fb, tolerance / 2)!$omp end parallel sections integral_result = left_area + right_area end if end function integral

69 Adaptive Integration mit MPI program integrate call MPI_INIT( ierror ) call MPI_COMM_RANK(, myid, ierror ) if ( myid == 0 ) then call master else call slave end if call MPI_FINALIZE(ierror) end program integrate! Der Master verwaltet den Stack subroutine master x_min = 0.0 x_max = 1.0 answer = integral (f, x_min, x_max, ) print *, answer end subroutine master

70 ! Die Slaves berechnen die Integrale subroutine slave private_result = 0.0 Adaptiven Integration mit MPI do! wait for work call MPI_Send(v,0,MPI_REAL,master,waitforworktag, ) program integrate call MPI_Recv(v,5,MPI_REAL,master,MPI_ANY_TAG,,status ) select case (status(mpi_tag)) call MPI_INIT( ierror case(readytag) ) call MPI_COMM_RANK( exit, myid, ierror ) if ( myid == 0 ) case(poptag) then call master else call slave h = b - a end if call MPI_FINALIZE(ierror) a = v(1); fa=v(2); b=v(3); fb=v(4); tolerance=v(5) end select mid = (a + b) /2 fmid = f(mid) end program integrate one_trapezoid_area = h * (fa + fb) / 2.0 two_trapezoid_area = h/2 * (fa+fmid)/2 + h/2 * (fmid+fb)/2! Der Master verwaltet den if Stack (abs(one_trapezoid_area-two_trapezoid_area)<3*tolerance)& subroutine master then private_result = private_result + two_trapezoid_area x_min = 0.0 else v(1)=a; v(2)=fa; v(3)=mid; v(4)=fmid; v(5)=tolerance/2 x_max = 1.0 call MPI_Send(v,5,MPI_REAL,master,pushtag, ) answer = integral (f, v(1)=mid; x_min, v(2)=fmid; x_max, ) v(3)=b; v(4)=fb; v(5)=tolerance/2 print *, answer call MPI_Send(v,5,MPI_REAL,master,pushtag, ) end subroutine master end if end do call MPI_Reduce (private_result,integral_result,1, ) end subroutine slave

71 function integral (f, ah, bh, tolh) result (integral_result)!master verwaltet Stack call new_stack ( stack ) call push ( stack,ah,f(ah),bh,f(bh),tolh ) integral_result=0.0; private_result=0.0 Adaptiven Integration mit MPI call MPI_COMM_SIZE( MPI_COMM_WORLD, numprocs, ierror ) allocate(slave_status(numprocs-1)) busycount=numprocs-1; slave_status=idle do call MPI_Recv(v,5,MPI_REAL,MPI_ANY_SOURCE,MPI_ANY_TAG,, status, ) select case (status(mpi_tag)) case(waitforworktag)! Slave wartet auf Arbeit busycount=busycount - 1 if ( empty_stack(stack) ) then! Nichts da slave_status(status(mpi_source)) = idle if ( busycount.eq. 0 ) exit else! Intervall schicken call popv(stack,v) call MPI_Send(v,5,MPI_REAL,status(MPI_SOURCE),poptag, ) slave_status(status(mpi_source))=busy; busycount=busycount+1 cycle end if case(pushtag)! Slave schickt neues Intervall if ( busycount < numprocs-1 ) then! Falls möglich, weiterleiten do iproc = 1, numprocs-1 if (slave_status(iproc) == idle ) then call MPI_Send(v,5,MPI_REAL,iproc,poptag, ) busycount=busycount+1; slave_status(iproc)=busy; exit end if end do else! Sonst cachen call pushv(stack,v) end if cycle end select end do do iproc = 1, numprocs-1! Feierabend! call MPI_Send(v,0,MPI_REAL,iproc,readytag, ) end do call MPI_Reduce(private_result,integral_result,1,MPI_REAL,MPI_SUM,root, ) end function integral

72 Adaptive Integration mit MPI und OpenMP (hybrid) program integrate call MPI_INIT( ierror ) call MPI_COMM_RANK(, myid, ierror ) if ( myid == 0 ) then call master else call slave end if call MPI_FINALIZE(ierror) end program integrate subroutine master x_min = 0.0 x_max = 1.0 answer = integral (f, x_min, x_max, ) print *, answer end subroutine master

73 Adaptive Integration mit MPI und OpenMP (hybrid) program integrate call MPI_INIT( ierror ) call MPI_COMM_RANK(,myid,ierror) if ( myid == 0 ) then call master else call slave end if call MPI_FINALIZE(ierror) end program integrate! Der Master lässt nur rechnen subroutine master x_min = 0.0 x_max = 1.0 answer=integral(f,0.0,1.0, ) print *, answer end subroutine master subroutine slave! führt nur die Funktionsauswertungen durch... do call MPI_Recv(a,1,MPI_REAL, & master,mpi_any_tag,,status, ) select case (status(mpi_tag)) case(readytag) exit! done case (argtag) fa = f(a) mymaster = status(mpi_tag) call MPI_Send(fa,1,MPI_REAL,& master,functag, ) end select end do end subroutine slave

74 function integral (f, ah, bh, tolerance) result (integral_result) call new_stack ( stack ) call push ( stack, ah, f(ah), bh, f(bh), tolerance ) integral_result = 0.0; busy_cnt = 0; ready =.false. call MPI_Comm_size( MPI_COMM_WORLD, numprocs, ierror )!$omp parallel default(none) shared(stack,busy_cnt,readytag) &!$omp private(a,fa,b,fb,tolerance,h,mid,fmid,one_trapezoid_area,two_trapezoid_area)&!$omp private(idle,ready,myworker, ) reduction(+:integral_result) num_threads(numprocs-1) idle=.true. myworker = omp_get_thread_num() + 1 do!$omp critical (stack) if ( empty_stack ( stack ) ) then... else call pop ( stack, a, fa, b, fb, tolerance )... end if!$omp end critical (stack) if ( idle ) then if ( ready ) then MPI proc 0 master Thread 0 Thread 1 Thread 2 MPI proc 1 worker 1 Thread 0 MPI proc 2 worker 2 Thread 0 call MPI_Send(mid,0,MPI_REAL,myworker,readytag, ); exit end if cycle end if h = b a; mid = (a + b) / 2;! fmid = f(mid) Funktionsauswertung wird dem Worker überlassen call MPI_Send(mid,1,MPI_REAL,myworker,argtag, ) call MPI_Recv(fmid,1,MPI_REAL,myworker,functag, ) one_trapezoid_area = h * (fa + fb) / 2 two_trapezoid_area = h/2 * (fa + fmid) / 2 + h/2 * (fmid + fb) / 2 if (abs(one_trapezoid_area - two_trapezoid_area) < 3 * tolerance) then integral_result = integral_result + two_trapezoid_area else!$omp critical (stack) call push ( stack, a, fa, mid, fmid, tolerance / 2 ) call push ( stack, mid, fmid, b, fb, tolerance / 2 )!$omp end critical (stack) end if end do!$omp end parallel end function integral MPI proc 3 worker 3 Thread 0

75 Inhalt Das Sun Fire SMP-Cluster der RWTH Aachen Aktuelle Konfiguration und Rechnerarchitektur Parallelisierung mit OpenMP und MPI an einem Beispiel MPI OpenMP Hybrid Zusammenfassung

76 Zusammenfassung 1 Das Sun Fire SMP-Cluster besteht seit September 2004 aus 28 Knoten (E25K,E6900,E2900) mit je 12 72UltraSPARCIVdual core Prozessoren (1050,1200 MHz) und GB Hauptspeicher unter Solaris 64 Knoten (V40z) mit je 4 Opteron 848 Prozessoren (2200 MHz) und 8 GB Speicher unter Linux (Produktion) / Solaris (Test) / Windows (Vorbereitung)

77 Zusammenfassung 2 Parallelisierung ist ein Muss für HPC Message Passing mit MPI auf allen Parallelrechnern einsetzbar MPI ist umfangreich, relativ einfach zu verstehen und zu erlernen Die MPI-Parallelisierung kann äußerst aufwendig sein OpenMP-Programme benötigen Rechner mit gemeinsamem Speicher OpenMP ist überschaubar und einfach zu erlernen Die OpenMP-Parallelisierung ist in kleinen Schritten durchführbar Verfizierung mit Assure/ThreadChecker, Fehler manchmal schwer zu finden Hybride Parallelisierung (MPI+OpenMP) für große Anwendungen von Interesse

OpenMP - Geschichte. 1997: OpenMP Version 1.0 für Fortran

OpenMP - Geschichte. 1997: OpenMP Version 1.0 für Fortran OpenMP - Geschichte 1997: OpenMP Version 1.0 für Fortran Standard für f r die Shared-Memory Memory-Programmierung inzwischen für f r alle namhaften SMP-Rechner verfügbar wird im techn.-wiss. Rechnen die

Mehr

Das Sun Fire SMP-Cluster: Architektur, Konfiguration, Programmierung. - Eine Einleitung -

Das Sun Fire SMP-Cluster: Architektur, Konfiguration, Programmierung. - Eine Einleitung - Das Sun Fire SMP-Cluster: Architektur, Konfiguration, Programmierung - Eine Einleitung - Dieter an Mey Rechen- und Kommunikationszentrum der RWTH Aachen 12. März 2002 anmey@rz rz.rwth-aachen.de http://www

Mehr

2 Dieter an Mey, SunHPC 2002, Einleitung 10000,000 1000,000 100,000 10,000 1,000 0,100 0,010. 0,001 Cyber 175 Cyber 205

2 Dieter an Mey, SunHPC 2002, Einleitung 10000,000 1000,000 100,000 10,000 1,000 0,100 0,010. 0,001 Cyber 175 Cyber 205 Inhalt Das Sun Fire SMP-Cluster: Dieter an Mey Rechen- und Kommunikationszentrum der RWTH Aachen 12. März 2002 anmey@rz rz.rwth-aachen.de http://www www.rz.rwth-aachen.de [/hpc hpc[/ [/sun]] -Optimierung

Mehr

C C. Hochleistungsrechnen (HPC) auf dem Windows Compute Cluster des RZ der RWTH Aachen. 1 WinHPC 2006 - Einführung Center. 31.

C C. Hochleistungsrechnen (HPC) auf dem Windows Compute Cluster des RZ der RWTH Aachen. 1 WinHPC 2006 - Einführung Center. 31. Hochleistungsrechnen (HP) auf dem Windows ompute luster des RZ der RWTH Aachen 31. Mai 2006 hristian Terboven Dieter an Mey {terboven anmey}@rz.rwth-aachen.de 1 WinHP 2006 - Einführung enter SunFire V40z

Mehr

Praktikum: Paralleles Programmieren für Geowissenschaftler

Praktikum: Paralleles Programmieren für Geowissenschaftler Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart hermann.lenhart@zmaw.de MPI Einführung I: Einführung Nachrichtenaustausch mit MPI MPI point-to-point communication

Mehr

HPC @ RZ.RWTH-AACHEN.DE

HPC @ RZ.RWTH-AACHEN.DE HP @ RZ.RWTH-AAHEN.DE Sun Fire T2000 SunFire E25K PU and IO boards SunFire E25K luster F-AL Switch SunFire E6900 luster 1 HP @ RZ.RWTH-AAHEN.DE enter omputing and ommunication SunFire V40z luster Inhalt

Mehr

Parallele Programmierung mit MPI im Überblick

Parallele Programmierung mit MPI im Überblick Parallele Programmierung mit MPI im Überblick Dieter an Mey e-mail: anmey@rz.rwth-aachen.de 1 Parallelisierung im Überblick Parallelisierung mit OpenMP und MPI an einigen einfachen Beispielen Rechenarchitekturen

Mehr

Computergrundlagen Moderne Rechnerarchitekturen

Computergrundlagen Moderne Rechnerarchitekturen Computergrundlagen Moderne Rechnerarchitekturen Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Aufbau eines modernen Computers DDR3- Speicher Prozessor Prozessor PEG

Mehr

Computergrundlagen Moderne Rechnerarchitekturen

Computergrundlagen Moderne Rechnerarchitekturen Aufbau eines modernen Computers Computergrundlagen Moderne Rechnerarchitekturen Axel Arnold Institut für Computerphysik Universität Stuttgart DDR3- Speicher Prozessor Prozessor PEG Graphikkarte(n) weitere

Mehr

Praktikum: Paralleles Programmieren für Geowissenschaftler

Praktikum: Paralleles Programmieren für Geowissenschaftler Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Nathanael Hübbe hermann.lenhart@zmaw.de MPI Einführung I: Hardware Voraussetzung zur Parallelen Programmierung

Mehr

2 Rechnerarchitekturen

2 Rechnerarchitekturen 2 Rechnerarchitekturen Rechnerarchitekturen Flynns Klassifikation Flynnsche Klassifikation (Flynn sche Taxonomie) 1966 entwickelt, einfaches Modell, bis heute genutzt Beschränkung der Beschreibung auf

Mehr

Hochleistungsrechnen mit Windows Verifikations- und Analyseprogramme Christian Terboven Rechen- und Kommunikationszentrum RWTH Aachen

Hochleistungsrechnen mit Windows Verifikations- und Analyseprogramme Christian Terboven Rechen- und Kommunikationszentrum RWTH Aachen Hochleistungsrechnen mit Windows Verifikations- und Analyseprogramme hristian Terboven Rechen- und Kommunikationszentrum RWTH Aachen 1 Hochleistungsrechnen mit Windows enter omputing and ommunication Agenda

Mehr

Der neue Hessische Hochleistungsrechner HHLR

Der neue Hessische Hochleistungsrechner HHLR Der neue Hessische Hochleistungsrechner HHLR Erste Erfahrungen Norbert Conrad, conrad@hrz.tu-darmstadt.de ZKIHessen 26.8.2002 1 Darmstädter Hochleistungsrechner 1987: IBM 3090 VF ( 2 x 0,12 GFLOPS Vektor

Mehr

Hochleistungsrechnen mit Windows Interaktive Benutzung und das Batchsystem Christian Terboven Rechen- und Kommunikationszentrum RWTH Aachen

Hochleistungsrechnen mit Windows Interaktive Benutzung und das Batchsystem Christian Terboven Rechen- und Kommunikationszentrum RWTH Aachen Hochleistungsrechnen mit Windows Interaktive Benutzung und das Batchsystem hristian Terboven Rechen- und Kommunikationszentrum RWTH Aachen 1 Hochleistungsrechnen mit Windows enter omputing and ommunication

Mehr

Trend der letzten Jahre in der Parallelrechentechnik

Trend der letzten Jahre in der Parallelrechentechnik 4.1 Einführung Trend der letzten 10-15 Jahre in der Parallelrechentechnik weg von den spezialisierten Superrechner-Plattformen hin zu kostengünstigeren Allzwecksystemen, die aus lose gekoppelten einzelnen

Mehr

Einige Grundlagen zu OpenMP

Einige Grundlagen zu OpenMP Einige Grundlagen zu OpenMP Stephanie Friedhoff, Martin Lanser Mathematisches Institut Universität zu Köln 22. Juni 2016 Überblick Was ist OpenMP? Basics Das OpenMP fork-join-modell Kompilieren und Ausführen

Mehr

Freiberuflicher IT-Berater Schwerpunkte: Unix, Oracle, Netzwerk. www.jj-it.de. www.jj-it.de. Dipl.-Inform. Joachim Jäckel

Freiberuflicher IT-Berater Schwerpunkte: Unix, Oracle, Netzwerk. www.jj-it.de. www.jj-it.de. Dipl.-Inform. Joachim Jäckel Freiberuflicher Schwerpunkte: Unix, Oracle, Netzwerk 2005 1 Testaufbauten von Oracle 10g RAC auf preiswerter Hardware 2 3 Typisches Cluster System Clients Public Network Node A Node B Cluster Interconnect

Mehr

Mehrprozessorarchitekturen

Mehrprozessorarchitekturen Mehrprozessorarchitekturen (SMP, UMA/NUMA, Cluster) Arian Bär 12.07.2004 12.07.2004 Arian Bär 1 Gliederung 1. Einleitung 2. Symmetrische Multiprozessoren (SMP) Allgemeines Architektur 3. Speicherarchitekturen

Mehr

Kurzübersicht über die wichtigsten MPI-Befehle

Kurzübersicht über die wichtigsten MPI-Befehle Kurzübersicht über die wichtigsten MPI-Befehle Hans Joachim Pflug Rechen- und Kommunkationszentrum der RWTH Aachen Inhalt MPI_Init / MPI_Finalize...2 MPI_Comm_size / MPI_Comm_rank...3 MPI_Send / MPI_Recv...4

Mehr

Vorlesung Betriebssysteme II

Vorlesung Betriebssysteme II 1 / 15 Vorlesung Betriebssysteme II Thema 3: IPC Robert Baumgartl 20. April 2015 2 / 15 Message Passing (Nachrichtenaustausch) Prinzip 2 grundlegende Operationen: send(), receive() notwendig, wenn kein

Mehr

-0 FDDI-Anschluß. m 256MB. m 512 MB Memory. Parallelrechner IBM SP. HRZ Uni Marburg. Frame 2. Frame 3. Frame 1. Ethernet mit allen Knoten

-0 FDDI-Anschluß. m 256MB. m 512 MB Memory. Parallelrechner IBM SP. HRZ Uni Marburg. Frame 2. Frame 3. Frame 1. Ethernet mit allen Knoten HRZ Uni Marburg Parallelrechner IBM SP Ethernet mit allen Knoten 3 externe SSADisks 12 * 4.5 GB Parallele Filesysteme 8 * 4.5 GB Benutzer- Filesysteme SP Switch SP Switch SP Switch ~ 128MB m 256MB m 512

Mehr

Parallele Programmierung mit OpenMP

Parallele Programmierung mit OpenMP Parallele Programmierung mit OpenMP - Eine kurze Einführung - 11.06.2003 RRZN Kolloquium SS 2003 1 Gliederung 1. Grundlagen 2. Programmiermodell 3. Sprachkonstrukte 4. Vergleich MPI und OpenMP 11.06.2003

Mehr

Master-Thread führt Programm aus, bis durch die Direktive

Master-Thread führt Programm aus, bis durch die Direktive OpenMP seit 1998 Standard (www.openmp.org) für die Shared-Memory Programmierung; (Prä-)Compiler für viele Systeme kommerziell oder frei (z.b. Omni von phase.hpcc.jp/omni) verfügbar Idee: automatische Generierung

Mehr

Erfahrungen bei der Installation und vergleichende Messungen zu verschiedenen MPI Implementierungen auf einem Dual Xeon Cluster

Erfahrungen bei der Installation und vergleichende Messungen zu verschiedenen MPI Implementierungen auf einem Dual Xeon Cluster Erfahrungen bei der Installation und vergleichende Messungen zu verschiedenen MPI Implementierungen auf einem Dual Xeon Cluster Sven Trautmann Technische Universität Chemnitz svtr@informatik.tu-chemnitz.de

Mehr

Totalview. Henrichs NEC Australia. Dieter an Mey

Totalview.  Henrichs NEC Australia. Dieter an Mey Totalview http://www.rz.rwth www.rz.rwth-aachen.de/sw/prog/totalview/ Dr. Jörg J Henrichs NEC Australia Dieter an Mey (anmey@rz.rwth( anmey@rz.rwth-aachen.de) Rechenzentrum und Kommunikationszentrum RWTH

Mehr

CHiC Chemnitzer Hochleistungs-Linux Cluster. Stand HPC Cluster CHiC. Frank Mietke, Torsten Mehlan, Torsten Höfler und Wolfgang Rehm

CHiC Chemnitzer Hochleistungs-Linux Cluster. Stand HPC Cluster CHiC. Frank Mietke, Torsten Mehlan, Torsten Höfler und Wolfgang Rehm CHiC er Hochleistungs-Linux Cluster Stand HPC Cluster CHiC, Torsten Mehlan, Torsten Höfler und Wolfgang Rehm Fakultätsrechen- und Informationszentrum (FRIZ) / Professur Rechnerarchitektur Technische Universität

Mehr

Projektseminar Parallele Programmierung

Projektseminar Parallele Programmierung HTW Dresden WS 2016/2017 Organisatorisches Praktikum, 4 SWS Do. 15:10-18:30 Uhr, Z136c, 2 Doppelstunden Labor Z 136c ist Montag und Donnerstag 15:10-18:30 reserviert, gemeinsam mit anderen Projektseminaren

Mehr

Georg Hager Regionales Rechenzentrum Erlangen (RRZE)

Georg Hager Regionales Rechenzentrum Erlangen (RRZE) Erfahrungen und Benchmarks mit Dual- -Prozessoren Georg Hager Regionales Rechenzentrum Erlangen (RRZE) ZKI AK Supercomputing Karlsruhe, 22./23.09.2005 Dual : Anbieter heute IBM Power4/Power5 (Power5 mit

Mehr

Projektseminar Parallele Programmierung

Projektseminar Parallele Programmierung HTW Dresden WS 2017/2018 Organisatorisches Praktikum, 4 SWS Do. 15:10-18:30 Uhr, Z136c, 2 Doppelstunden Labor Z 136c ist Donnerstag 15:10-18:30 reserviert, gemeinsam mit anderen Projektseminaren Selbständige

Mehr

Hochleistungsrechnen Hybride Parallele Programmierung. Prof. Dr. Thomas Ludwig Universität Hamburg Informatik Wissenschaftliches Rechnen

Hochleistungsrechnen Hybride Parallele Programmierung. Prof. Dr. Thomas Ludwig Universität Hamburg Informatik Wissenschaftliches Rechnen Hochleistungsrechnen Hybride Parallele Programmierung Prof. Dr. Thomas Ludwig Universität Hamburg Informatik Wissenschaftliches Rechnen Inhaltsübersicht Einleitung und Motivation Programmiermodelle für

Mehr

Multi- und Many-Core

Multi- und Many-Core Multi- und Many-Core Benjamin Warnke Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2016-12-15 Benjamin

Mehr

Paradigmenwechsel: Von der Rechner-zentrierten zur Informationszentrierten DV Skalierbarkeit: Erweiterung von Ressourcen ohne Erhöhung der

Paradigmenwechsel: Von der Rechner-zentrierten zur Informationszentrierten DV Skalierbarkeit: Erweiterung von Ressourcen ohne Erhöhung der Sun: HPC mit Zukunft Wolfgang Kroj Vertriebsleiter Enterprise Business & Storage Sun Microsystems GmbH Tel.: +49-89-46008-589, Fax: +49-89-46008-590 Email: wolfgang.kroj@germany.sun.com Network Computing

Mehr

Sun HPC Agenda

Sun HPC Agenda Sun HPC 2005 - Agenda 10:00 Willkommen und Einleitung Klaus Brühl, RZ, 10:15 Neues vom Aachener Sun Fire SMP Cluster Dieter an Mey, RZ, 10:30 UltraSPARC - Today and Tomorrow Ruud van der Pas, Scalable

Mehr

1. Einführung in OpenMP

1. Einführung in OpenMP 1. Einführung in OpenMP Übersicht Einführung Homogene und inhomogene Arbeitsverteilung Rekursive Parallelität Beispiele Parallele Programmierung 1 Nicolas Maillard, Marcus Ritt 1 Überblick OpenMP: Vereinfachte

Mehr

OpenMP. Viktor Styrbul

OpenMP. Viktor Styrbul OpenMP Viktor Styrbul Inhaltsverzeichnis Was ist OpenMP Warum Parallelisierung Geschichte Merkmale von OpenMP OpenMP-fähige Compiler OpenMP Ausführungsmodell Kernelemente von OpenMP Zusammenfassung Was

Mehr

Shared-Memory Programmiermodelle

Shared-Memory Programmiermodelle Shared-Memory Programmiermodelle mehrere, unabhängige Programmsegmente greifen direkt auf gemeinsame Variablen ( shared variables ) zu Prozeßmodell gemäß fork/join Prinzip, z.b. in Unix: fork: Erzeugung

Mehr

Intel Cluster Studio. Michael Burger FG Scientific Computing TU Darmstadt michael.burger@sc.tu-darmstadt.de

Intel Cluster Studio. Michael Burger FG Scientific Computing TU Darmstadt michael.burger@sc.tu-darmstadt.de Intel Cluster Studio Michael Burger FG Scientific Computing TU Darmstadt michael.burger@sc.tu-darmstadt.de 19.03.13 FB Computer Science Scientific Computing Michael Burger 1 / 30 Agenda Was ist das Intel

Mehr

Beispielvortrag: HPCG auf Intel Haswell-EP

Beispielvortrag: HPCG auf Intel Haswell-EP Beispielvortrag: HPCG auf Intel Haswell-EP Johannes Hofmann 1 Seminarvortrag Architekturen von Multi- und Vielkern-Prozessoren Erlangen, 19.4.2016 1 Computer Architecture, University Erlangen-Nuremberg

Mehr

Praktikum: Paralleles Programmieren für Geowissenschaftler

Praktikum: Paralleles Programmieren für Geowissenschaftler Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart & Enno Zickler hermann.lenhart@zmaw.de OpenMP Allgemeine Einführung I OpenMP Merkmale: OpenMP ist keine Programmiersprache!

Mehr

2 SunHPC 2002, Einführung in OpenMP, Dieter an Mey

2 SunHPC 2002, Einführung in OpenMP, Dieter an Mey Parallele Programmierung für Shared-Memory Memory-Rechner mit OpenMP Parallele Programmierung für Shared-Memory Memory-Rechner mit OpenMP Dieter an Mey Rechen- und Kommunikationszentrum der RWTH Aachen

Mehr

Konzepte der parallelen Programmierung

Konzepte der parallelen Programmierung Fakultät Informatik, Institut für Technische Informatik, Professur Rechnerarchitektur Konzepte der parallelen Programmierung Parallele Programmiermodelle Nöthnitzer Straße 46 Raum 1029 Tel. +49 351-463

Mehr

Intel Thread Checker

Intel Thread Checker Kurs 1: Ferienakademie 2009 26. September 2009 Gliederung Gliederung Was macht der Thread Checker und warum? Historisches Alternativen Was macht der Thread Checker und warum? Historisches Alternativen

Mehr

Praktikum: Paralleles Programmieren für Geowissenschaftler

Praktikum: Paralleles Programmieren für Geowissenschaftler Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Enno Zieckler hermann.lenhart@informatik.uni-hamburg.de MPI Kommunikation: Das wichtigste Kriterium für

Mehr

Praktikum: Paralleles Programmieren für Geowissenschaftler

Praktikum: Paralleles Programmieren für Geowissenschaftler Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Nathanael Hübbe hermann.lenhart@informatik.uni-hamburg.de MPI Kommunikation: Das wichtigste Kriterium für

Mehr

Exkurs: Paralleles Rechnen

Exkurs: Paralleles Rechnen Münster Exkurs: Paralleles Rechnen Münster Exkurs: Paralleles Rechnen 2 /21 Konzepte für Parallelrechner P P P C C C Gemeinsamer Speicher Verteilter Speicher Verbindungsnetzwerk Speicher M, Münster Exkurs:

Mehr

Linux in allen Lebenslagen. Diskless Cluster und Lustre Erfahrungsbericht zum CHiC. Frank Mietke. Chemnitzer Linux-Tage 2007

Linux in allen Lebenslagen. Diskless Cluster und Lustre Erfahrungsbericht zum CHiC. Frank Mietke. Chemnitzer Linux-Tage 2007 Linux in allen Lebenslagen Diskless Cluster und Lustre Erfahrungsbericht zum CHiC Fakultätsrechen- und Informationszentrum (FRIZ) / Professur Rechnerarchitektur Technische Universität Chemnitz Chemnitzer

Mehr

Praktikum: Paralleles Programmieren für Geowissenschaftler

Praktikum: Paralleles Programmieren für Geowissenschaftler Praktikum: Paralleles Programmieren für Geowissenschaftler Prof. Thomas Ludwig, Hermann Lenhart, Ulrich Körner, Nathanael Hübbe hermann.lenhart@zmaw.de OpenMP Einführung I: Allgemeine Einführung Prozesse

Mehr

Christopher Schleiden

Christopher Schleiden Christopher Schleiden 5.6.2009 Ganz allgemein: Parallele Ausführung von Code 1 Prozess Gesamtaufgabe Ergebnis 4 Prozesse / Threads Gesamtaufgabe Teilaufgaben Einzelberechnung Ergebnis 5 Shared Processor

Mehr

Anleitung für zwei Fortran-Openmp-Beispiele auf der NWZSuperdome

Anleitung für zwei Fortran-Openmp-Beispiele auf der NWZSuperdome Anleitung für zwei Fortran-Openmp-Beispiele auf der NWZSuperdome (Timo Heinrich, t_hein03@uni-muenster.de) Inhaltsverzeichnis: 0.Einleitung 1.Teil: Helloworldprogramm 1.1 Quellcode: Helloworld.f90 1.2

Mehr

Multi-threaded Programming with Cilk

Multi-threaded Programming with Cilk Multi-threaded Programming with Cilk Hobli Taffame Institut für Informatik Ruprecht-Karls Universität Heidelberg 3. Juli 2013 1 / 27 Inhaltsverzeichnis 1 Einleitung Warum Multithreading? Ziele 2 Was ist

Mehr

Parallele Programmierung. Parallele Programmierung Memory-Rechner mit OpenMP

Parallele Programmierung. Parallele Programmierung Memory-Rechner mit OpenMP Parallele Programmierung für Shared-Memory Memory-Rechner mit OpenMP Dieter an Mey Rechen- und Kommunikationszentrum der RWTH Aachen 21. Januar 2002 anmey@rz rz.rwth-aachen.de http://www www.rz.rwth-aachen.de

Mehr

Die deutsche Windows HPC Benutzergruppe

Die deutsche Windows HPC Benutzergruppe Christian Terboven, Dieter an Mey {terboven, anmey}@rz.rwth aachen.de Rechen und Kommunikationszentrum RWTH Aachen Windows HPC Server Launch 16. Oktober, Frankfurt am Main Agenda o Hochleistungsrechnen

Mehr

Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016

Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016 Paralleles Programmieren mit und MPI Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016 Steinbuch Centre for Computing Hartmut Häfner, Steinbuch Centre for Computing (SCC) STEINBUCH CENTRE

Mehr

Diskless Cluster und Lustre Erfahrungsbericht zum CHiC

Diskless Cluster und Lustre Erfahrungsbericht zum CHiC Diskless Cluster und Lustre Erfahrungsbericht zum CHiC, Torsten Hoefler, Torsten Mehlan und Wolfgang Rehm Fakultätsrechen- und Informationszentrum (FRIZ) / Professur Rechnerarchitektur Technische Universität

Mehr

Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE

Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE 754 Standard festgelegt. Es stehen sogenannte einfach

Mehr

Paralleles Rechnen: MPI

Paralleles Rechnen: MPI Münster Paralleles Rechnen: MPI 11.12.2015 Top 500 Münster Paralleles Rechnen: MPI 2 /23 32 Großrechner in Deutschland unter den Top 500 davon 5 Systeme unter den Top 50 8 Hazel Hen (HLRS Stuttgart) 11

Mehr

Beispiel: Schleifenparallelisierung

Beispiel: Schleifenparallelisierung Beispiel: Schleifenparallelisierung for (i = 0; i high) { printf ( Exiting during iteration %d\n,i); break; for (j=low;j

Mehr

Visualisierung paralleler bzw. verteilter Programme

Visualisierung paralleler bzw. verteilter Programme Seminar Visualisierung in Informatik und Naturwissenschaften im SS 1999 Visualisierung paralleler bzw. verteilter Programme Holger Dewes Gliederung Zum Begriff Motivation PARADE Beispiel 1: Thread basierte

Mehr

High Performance Computing

High Performance Computing REGIONALES RECHENZENTRUM ERLANGEN [ RRZE ] High Performance Computing Systemausbildung Grundlagen und Aspekte von Betriebssystemen und System-nahen Diensten Michael Meier, RRZE, 01.07.2015 Agenda Was bedeutet

Mehr

Professionelle Entwicklungstools auf PC s und HPC Clustern

Professionelle Entwicklungstools auf PC s und HPC Clustern Competence in High Performance Computing Professionelle Entwicklungstools auf PC s und HPC Clustern Mario Deilmann DECUS Symposium, Bonn 8. April 2003 Pallas GmbH Hermülheimer

Mehr

Pthreads. David Klaftenegger. Seminar: Multicore Programmierung Sommersemester

Pthreads. David Klaftenegger. Seminar: Multicore Programmierung Sommersemester Seminar: Multicore Programmierung Sommersemester 2009 16.07.2009 Inhaltsverzeichnis 1 Speichermodell 2 3 Implementierungsvielfalt Prioritätsinversion 4 Threads Speichermodell Was sind Threads innerhalb

Mehr

Computational Biology: Bioelektromagnetismus und Biomechanik

Computational Biology: Bioelektromagnetismus und Biomechanik Computational Biology: Bioelektromagnetismus und Biomechanik Implementierung Gliederung Wiederholung: Biomechanik III Statische Elastomechanik Finite Elemente Diskretisierung Finite Differenzen Diskretisierung

Mehr

Parallele Programmierung mit OpenMP

Parallele Programmierung mit OpenMP Parallele Programmierung mit OpenMP Wolfgang Dautermann FH Joanneum Chemnitzer Linuxtage 2008 1 Motivation 2 OpenMP Übersicht 3 Hello World - der erste Code 4 OpenMP-Compilerdirektiven Threaderzeugung

Mehr

moderne Prozessoren Jan Krüger jkrueger@techfak.uni-bielefeld.de

moderne Prozessoren Jan Krüger jkrueger@techfak.uni-bielefeld.de moderne Prozessoren Jan Krüger jkrueger@techfak.uni-bielefeld.de Übersicht FachChinesisch SPARC - UltraSparc III/IV PowerPC - PowerPC 970(G5) X86 - Pentium4(Xeon), Itanium, (Pentium M) X86 - AthlonXP/MP,

Mehr

Nutzung paralleler Prozesse bei der Umweltsimulation

Nutzung paralleler Prozesse bei der Umweltsimulation Nutzung paralleler Prozesse bei der Umweltsimulation RALF Wieland rwieland@zalf.de ZALF/LSA Nutzung paralleler Prozesse bei der Umweltsimulation p. 1 Warum parallele Prozesse? Die Steigerung der Taktfrequenz

Mehr

Ruprecht-Karls-Universität Heidelberg

Ruprecht-Karls-Universität Heidelberg Ruprecht-Karls-Universität Heidelberg PS: Themen der technischen Informatik Sommersemester 2013 Referentin: Hanna Khoury Betreuer: Prof. Dr. Ulrich Brüning, Dr. Frank Lemke Datum: 10.06.2014 1) Einige

Mehr

1 SunHPC 2002, Einführung in OpenMP, Dieter an Mey

1 SunHPC 2002, Einführung in OpenMP, Dieter an Mey Parallele Programmierung für Shared-Memory Memory-Rechner mit OpenMP Dieter an Mey Rechen- und Kommunikationszentrum der RWTH Aachen 21. Januar 2002 anmey@rz rz.rwth-aachen.de http://www www.rz.rwth-aachen.de

Mehr

best Open Systems Day 20. April 2005 Migration auf 64Bit, - steigt die Performance um Faktor 4? Rüdiger Gunther

best Open Systems Day 20. April 2005 Migration auf 64Bit, - steigt die Performance um Faktor 4? Rüdiger Gunther best Open Systems Day 20. April 2005 Migration auf 64Bit, - steigt die Performance um Faktor 4? Rüdiger Gunther Leiter x64 Computing Sun Microsystems GmbH Agenda Sun AMD Allianz Vorteile 64 Bit Computing

Mehr

DOAG Konferenz 2007 in Nürnberg

DOAG Konferenz 2007 in Nürnberg DOAG Konferenz 2007 in Nürnberg Auswahl und Sizing: Die richtige Hardware (+Software) für Oracle Björn Bröhl Projektmanager Handlungsbevollmächtigter Seite 1 Inhalt Die Zielsetzung Vorgehensweise Auswahl

Mehr

Performance Engineering: Forschung und Dienstleistung für HPC-Kunden. Dirk Schmidl

Performance Engineering: Forschung und Dienstleistung für HPC-Kunden. Dirk Schmidl Performance Engineering: Forschung und Dienstleistung für HPC-Kunden Hardware Komplexität GPU KNL MPI L U S T R E SMP Claix NVMe HOME Storage OPA Die Komplexität moderner HPC Systeme erfordert Optimierung

Mehr

Shared-Memory Parallelisierung von C++ Programmen

Shared-Memory Parallelisierung von C++ Programmen Shared-Memory Parallelisierung von C++ Programmen 9. Februar 2006 1 Übersicht Ergebnisse Zusammenfassung 2 3 Übersicht Ergebnisse Zusammenfassung Übersicht Verbreitete Parallelisierungstechniken für Shared-Memory:

Mehr

Patagonia - Ein Mehrbenutzer-Cluster für Forschung und Lehre

Patagonia - Ein Mehrbenutzer-Cluster für Forschung und Lehre Patagonia - Ein Mehrbenutzer-Cluster für Forschung und Lehre Felix Rauch Christian Kurmann, Blanca Maria Müller-Lagunez, Thomas M. Stricker Institut für Computersysteme ETH Zürich Eidgenössische Technische

Mehr

TSM 5.2 Experiences Lothar Wollschläger Zentralinstitut für Angewandte Mathematik Forschungszentrum Jülich

TSM 5.2 Experiences Lothar Wollschläger Zentralinstitut für Angewandte Mathematik Forschungszentrum Jülich TSM 5.2 Experiences Lothar Wollschläger Zentralinstitut für Angewandte Mathematik Forschungszentrum Jülich L.Wollschlaeger@fz-juelich.de Contents TSM Test Configuration Supercomputer Data Management TSM-HSM

Mehr

Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016

Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016 Paralleles Programmieren mit OpenMP und MPI MPI-Übungsaufgaben Vorlesung Parallelrechner und Parallelprogrammierung, SoSe 2016 Hartmut Steinbuch Häfner, Centre Steinbuch for Computing Centre for Computing

Mehr

Technische Grundlagen der Informatik 2 SS Einleitung. R. Hoffmann FG Rechnerarchitektur Technische Universität Darmstadt E-1

Technische Grundlagen der Informatik 2 SS Einleitung. R. Hoffmann FG Rechnerarchitektur Technische Universität Darmstadt E-1 E-1 Technische Grundlagen der Informatik 2 SS 2009 Einleitung R. Hoffmann FG Rechnerarchitektur Technische Universität Darmstadt Lernziel E-2 Verstehen lernen, wie ein Rechner auf der Mikroarchitektur-Ebene

Mehr

Device Treiber für FlexPath- Netzwerkprozessoren

Device Treiber für FlexPath- Netzwerkprozessoren Device Treiber für FlexPath- Netzwerkprozessoren Michael Meitinger Rainer Ohlendorf Dr. Thomas Wild Prof. Dr. Andreas Herkersdorf 1 Übersicht Übersicht FlexPath Einsatz von Device Treibern in der FlexPath

Mehr

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff Parallel Computing Einsatzmöglichkeiten und Grenzen Prof. Dr. Nikolaus Wulff Parallel Architekturen Flynn'sche Klassifizierung: SISD: single Instruction, single Data Klassisches von-neumann sequentielles

Mehr

Automatische Parallelisierung

Automatische Parallelisierung MPI und OpenMP in HPC Anwendungen findet man immer häufiger auch den gemeinsamen Einsatz von MPI und OpenMP: OpenMP wird zur thread-parallelen Implementierung des Codes auf einem einzelnen Rechenknoten

Mehr

Homogene Multi-Core-Prozessor-Architekturen

Homogene Multi-Core-Prozessor-Architekturen Homogene Multi-Core-Prozessor-Architekturen Praktikum Parallele Rechnerarchitekturen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2009

Mehr

Das HLRN-System. Peter Endebrock, RRZN Hannover

Das HLRN-System. Peter Endebrock, RRZN Hannover Das HLRN-System Peter Endebrock, RRZN Hannover vorweg (1) Heute Vorträge im Dreierpack: Peter Endebrock: Das HLRN-System Gerd Brand: MPI Simone Knief: OpenMP Peter Endebrock, RRZN Hannover, Kolloquium,

Mehr

Parallelisierung der Vektoraddition 149

Parallelisierung der Vektoraddition 149 OpenMP 148 OpenMP ist ein seit 1997 bestehender Standard mit Pragma-basierten Spracherweiterungen zu Fortran, C und C++, die eine Parallelisierung auf MP-Systemen unterstützt. Pragmas sind Hinweise an

Mehr

Introduction Workshop 11th 12th November 2013

Introduction Workshop 11th 12th November 2013 Introduction Workshop 11th 12th November 2013 Lecture I: Hardware and Applications Dr. Andreas Wolf Gruppenleiter Hochleistungsrechnen Hochschulrechenzentrum Overview Current and next System Hardware Sections

Mehr

Paralleles Programmieren mit OpenMP und MPI OpenMP-Übungsaufgaben Steinbuch Centre for Computing

Paralleles Programmieren mit OpenMP und MPI OpenMP-Übungsaufgaben Steinbuch Centre for Computing Paralleles Programmieren mit OpenMP und MPI OpenMP-Übungsaufgaben Steinbuch Centre for Computing und Universität Karlsruhe (TH) www.scc.kit.edu Parallele Berechnung von PI program compute_pi integer integer,

Mehr

Vorlesung Hochleistungsrechnen SS 2010 (c) Thomas Ludwig 447

Vorlesung Hochleistungsrechnen SS 2010 (c) Thomas Ludwig 447 Siehe: http://en.wikipedia.org/wiki/debugging Vorlesung Hochleistungsrechnen SS 2010 (c) Thomas Ludwig 447 Vorlesung Hochleistungsrechnen SS 2010 (c) Thomas Ludwig 448 Siehe: http://en.wikipedia.org/wiki/legacy_code

Mehr

Einführung. ECU-übergreifende Funktionen nehmen immer mehr zu! z.b. bei Fahrerassistenz-Systemen

Einführung. ECU-übergreifende Funktionen nehmen immer mehr zu! z.b. bei Fahrerassistenz-Systemen Einführung ECU-übergreifende Funktionen nehmen immer mehr zu! z.b. bei Fahrerassistenz-Systemen Einparken, Abstandsregeltempomat, unterstützt diesen Trend durch eine geeignete Entwicklungs-Methodik! Funktion

Mehr

Parallel Processing in a Nutshell OpenMP & MPI kurz vorgestellt

Parallel Processing in a Nutshell OpenMP & MPI kurz vorgestellt Parallel Processing in a Nutshell & kurz vorgestellt 16. Juni 2009 1 / 29 1 Das Problem 2 2 / 29 1 Das Problem 2 3 2 / 29 1 Das Problem 2 3 4 2 / 29 1 Das Problem 2 3 4 2 / 29 Multi-Core Prozessoren halten

Mehr

Transactional Memory for Distributed Systems

Transactional Memory for Distributed Systems Transactional Memory for Distributed Systems Michael Schöttner, Marc-Florian Müller, Kim-Thomas Möller, Michael Sonnenfroh Heinrich-Heine Universität Düsseldorf Abteilung Betriebssysteme 1 Michael Schöttner,

Mehr

Supercomputer Blue Gene/L

Supercomputer Blue Gene/L FH Giessen Friedberg Supercomputer Blue Gene/L Sven Wagner Übersicht Einführung Supercomputer Begriffe Geschichte TOP500 Anwendung 2 Übersicht Blue Gene/L Historie Architektur & Packaging ASIC Netzwerk

Mehr

High Performance Computing

High Performance Computing REGIONALES RECHENZENTRUM ERLANGEN [RRZE] High Performance Computing Systemausbildung Grundlagen und Aspekte von Betriebssystemen und systemnahen Diensten, 21.06.2017 HPC-Gruppe, RRZE Agenda Was bedeutet

Mehr

Die Marvel, ein gedrosselter Supercomputer

Die Marvel, ein gedrosselter Supercomputer Die Marvel, ein gedrosselter Supercomputer Warum ist die Marvel so schnell? Warum ist die Marvel so langsam? Erfahrungen mit dem Softwaresupport Warum ist die Marvel so schnell? Hardware Z.Cvetanovic,

Mehr

OpenMP am Beispiel der Matrizenmultiplikation

OpenMP am Beispiel der Matrizenmultiplikation OpenMP am Beispiel der Matrizenmultiplikation David J. Meder, Dr. Victor Pankratius IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe

Mehr

Berater Profil. von Lothar Birk. email : lothar.birk@edv birk.de Internet : http://www.edv birk.de

Berater Profil. von Lothar Birk. email : lothar.birk@edv birk.de Internet : http://www.edv birk.de Berater Profil von Lothar Birk email : lothar.birk@edv birk.de Internet : http://www.edv birk.de Die EDV BIRK versteht sich als Anbieter von Produkten im Bereich von Seminaren, Coaching, Consulting und

Mehr

HPC an der Uni Mainz

HPC an der Uni Mainz Einwicklung vom ersten Top500 Rechner bis zum AHRP HPC - AHRP - ZKI Markus Tacke, ZDV, Universität Mainz AK Supercomputer Kaiserslautern 19.4.2012 ZDV: CC NUMA 1.1.1995: Convex SPP1000/16 16 PA Risc 7100

Mehr

Beispiel Parallelisierung 2D Laplace. Lagrange Formulierung/Hyperelastisches Material. Finite Differenzen Diskretisierung

Beispiel Parallelisierung 2D Laplace. Lagrange Formulierung/Hyperelastisches Material. Finite Differenzen Diskretisierung Simulation von physikalischen Feldern im menschlichen Körper Implementierung Gliederung Gliederung Wiederholung: Biomechanik III Statische elastomechanische Probleme Finite Elemente Diskretisierung Finite

Mehr

Gregor Michalicek, Marcus Schüler. Multiprozessoren

Gregor Michalicek, Marcus Schüler. Multiprozessoren Gregor Michalicek, Marcus Schüler Gregor Michalicek Marcus Schüler Gregor Michalicek, Marcus Schüler Vorteile gegenüber Singleprozessoren ¾ sind zuverlässiger. Einige Multiprozessorsysteme können trotz

Mehr

BlueGene. Seminarvortrag WS 2004/05 Sven Kapferer Lehrstuhl für Rechnerarchitektur Universität Mannheim

BlueGene. Seminarvortrag WS 2004/05 Sven Kapferer Lehrstuhl für Rechnerarchitektur Universität Mannheim BlueGene Seminarvortrag WS 2004/05 Sven Kapferer Lehrstuhl für Rechnerarchitektur Universität Mannheim Gliederung Einführung Motivation Vergleich mit anderen Architekturen Architektur des BlueGene Hierarchische

Mehr

High-Performance Computing mit FEMAG

High-Performance Computing mit FEMAG High-Performance Computing mit FEMAG Untersuchungen und Massnahmen zur Verbesserung der Rechenzeit FEMAG Anwendertreffen 2013 (Zürich) Ronald Tanner SEMAFOR Informatik & Energie AG, Basel 10./11. Oktober

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 OpenMP-Programmierung Teil III Multikern-Praktikum Wintersemester 06-07 Inhalt Was ist OpenMP? Parallele Regionen Konstrukte zur Arbeitsteilung

Mehr

Betriebssysteme Studiengang Informatik

Betriebssysteme Studiengang Informatik Betriebssysteme Studiengang Informatik Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de http://www.miwilhelm.de Raum 2.202 Tel. 03943 /

Mehr