Is System X for Me? Cal Ribbens Computer Science Department Lab. For Adv. Scientific Comput. & Applications (LASCA)
Outline System X configuration Programming model and environment Problems most suited for System X Next steps Take-away messages
System X Configuration A cluster: “multiple computers used as a single, unified resource.'' (Pfister, 1998) 1100 Apple G5 Xserves CPU: PPC970, 2GHz, 64 bit. Node: 2 CPUs, 4 GB RAM, 160 GB disk Primary interconnect: InfiniBand Secondary interconnect: Gigabit Ethernet Peak theoretical speed: 17.6 TF Linpack benchmark: 10.3 TF
Key Architectural Features Distributed memory Both physically and logically distributed As opposed to SMP or DSM/VSM Standard OS on each node --- unix High-performance interconnection network NFS over fast Ethernet for file i/o, data staging, etc.
Programming Model & Environment Automagic compiler/IDE? Sorry. New programming language? Maybe … if you are writing new code from scratch. Commercial or community codes? Slowly emerging in some areas. Existing languages (Fortran, C, C++) plus MPI? Most common. Possibly threads within a node.
MPI: Message Passing Interface Programming model: multiple processes (usually each an instance of the same program), communicating by explicit message passing. MPI is a de facto standard API. Several implementations available for tcp/ip and for fast networks, e.g., Myrinet, InfiniBand. Goals of MPI: Portable, high-performance parallel codes Support for writing parallel libraries
MPI Hello World include 'mpif.h' integer myid, ierr, token, status(mpi_status_size) call mpi_init (ierr) call mpi_comm_rank (mpi_comm_world, myid, ierr ) if (myid .eq. 0) then print *, "hello" call mpi_send (token, 1, mpi_integer, 1, 0, mpi_comm_world, ierr) else call mpi_recv (token, 1, mpi_integer, 0, 0, mpi_comm_world, status, ierr) print *, "world" endif call mpi_finalize (ierr) stop end
Code Development Environment Standard editors, compilers, Unix tools. Work done on a “front-end” node. Job startup: Batch system or command-line, e.g., “mpirun –np 4 myexecutable” Debugging? Usual tools within node. Totalview for MPI. Performance debugging? Tau
What will run well on X (and be worth the trouble)? Large-scale computations: 100’s GB RAM, months of compute time. “Regular” computations: where work and data is easily decomposed into many large, uniform chunks. Dense vs. sparse matrices Regular vs. irregular meshes Molecular statics vs. molecular dynamics
What runs well? (continued) Scalable computations (work / communication) stays away from zero Load stays balanced Number of independent tasks scales up (and down) Reasonable interprocess communication requirements: Too much → communication will be bottleneck Too little → not a problem; but maybe consider grid computing.
Next Steps Basic MPI short-course: Feb 17, 19, 24, 26. Future LASCA short-courses likely Consulting: grad student office hours or meet with LASCA faculty (lasca@cs.vt.edu) Summer FDI on parallel programming CS 4234 in F04, CS 5984 or 6404 in S05. Refs: Gropp, Lusk, Skjellum, Using MPI, (2nd ed.), MIT Press, 1999. www-unix.mcs.anl.gov/mpi research.cs.vt.edu/lasca
Last Comments HPC is hard: System X … Models, machines, algorithms, software Students should get credit Collaboration is required System X … will make a huge difference for a few; will make a big difference for many; will be a success if we do great research, leverage the visibility, and build a community.