180 likes | 322 Views
CS591x Cluster Computing. Interconnect Performance. Interconnect Performance. Major factor in computational performance… For communication intensive applications – collaborative processes Less important for compute intensive/low communications applications.
E N D
CS591x Cluster Computing Interconnect Performance
Interconnect Performance • Major factor in computational performance… • For communication intensive applications – collaborative processes • Less important for compute intensive/low communications applications
Others • 10 GigE • Coming along • Still expensive • Cray RapidArray Interconnect - XD1 • 9 Gbs bandwidth • 1.8 us latency • Low overhead
Interconnect summary • Fast Ethernet cheap, poor performance • GigE – getting cheaper, better bandwidth, latency and overhead problems • Myrinet, Quadrics – very good bandwidth, low latency, low overhead – expensive – likely to stay expensive
… Interconnect Summary • 10 GigE is coming along – too early to tell • Infiniband is the technology to watch • Very good performance • Expensive, but getting cheaper • Custom “Fabrics” • Very high performance • Cray XD1
Interconnect • Performance influenced by transport protocol (i.e. IP) • Shared memory for communication results in better performance, but may have other problems • Application design may be tuned for particular interconnect architecture
Compiling Programs on energy • C/C++Compilers • gcc/g++ • icc • pgcc/pgCC • mpicc, mpiCC
Compiling Programs on energy • Fortran Compilers • gcc/g77 • Fortran 77 (maybe more coming) • Gcc recognizes file extension (.f, .for,…) • Ifort - Intel Fortran 95 • mpif77 • pgf77 • pgf90
Compiler options • Common options • -o specifies compiler output file • -l specifies libraries that should be linked • -L specifies library paths (important) • -i specifies files to include • -I specifies the path for include files • -i/-I/-l/-L can occur multiple times
Compiler Options • Many compile/link options • Many optimization options (more on this later)
So… • Imagine that you wrote a program called simplehello.c … #include <stdio.h> main() { printf("Hello, World:\n"); }
To compile with gcc • Like this… • gcc simplehello.c –osimplehello • If all goes well, you get a shell prompt (means no errors) • Review compiler errors carefully • Unresolved references usually means something is not defined/can’t find something
Or … • With Intell c/c++ • icc simplehello.c –osimplehello • With mpicc • mpicc simplehello.c –osimplehello • Note: different compilers may have different defaults/definitions
… mpi… • We have to give the compiler more direction … • gcc hello.c –ohellogcc –lmpich –I/usr/local/packages/mpich/include –L/usr/local/packages/mpich/lib • icc hello.c –ohellogcc –lmpich –I/usr/local/packages/mpich/include –L/usr/local/packages/mpich/lib
With mpicc • mpicc hello.c -ohellompi