This course covers each of the major stages in writing efficient parallel scientific software, from generating correct code through understanding performance characteristics to optimizing the time to solution.
The first day focuses on debugging code. It covers various methodologies for doing so, including the use of tools gdb, Valgrind and Totalview. The second and third days concentrate on performance profiling and optimization. After an introduction to modern processor architecture (focusing on modern x86 multicore processors) day two stresses performance evaluation, introducing the Cray Performance Analysis Toolkit, Scalasca and Gprof for profiling and covering interpreting the data that these tools generate so as to discover possibilities for optimization. Day 3 then uses this data to introduce serial optimization techniques, from use of the compiler and libraries to more complex code reorganizations.
Throughout the course attendees will have extensive hands-on experience of the tools through exercises in addition to lectures.
Scientific software developers (in serial or parallel) who would like to learn about the basics of process and memory architecture, debugging, profiling and optimization.
Experience in scientific programming in Fortran or C in a UNIX environment. For instance, one should be able to: connect to a machine remotely (e.g. using ssh), use basic UNIX commands, edit a source file, and understand the elementary steps in compiling object files and creating executables.
After Course Attendees Will:
Be able to use tools to debug and profile parallel or serial code effectively and identify and implement basic optimizations.
Please email us if you would like to attend this course.