Teaching High Performance Computing Parallelizing a Real Computational Science Application
In this paper we present our approach to teaching High Performance Computing at both the undergraduate and graduate level. For undergraduate students, we emphasize the key role of an hands on approach. Parallel computing theory at this stage is kept at minimal level since this knowledge is fundamental, but our main goal for undergraduate students is the required ability to develop real parallel applications. For this reason we spend about one third of the class lectures on the theory and remaining two thirds on programming environments, tools and libraries for development of parallel applications. The availability of widely adopted standards provides us, as teachers of high performance computing, with the opportunity to present parallel algorithms uniformly, to teach how portable parallel software must be developed, how to use parallel libraries etc. When teaching at the graduate level instead, we spend more time on theory, highlighting all of the relevant aspects of parallel computation, models, parallel complexity classes, architectures, message passing and shared memory paradigms etc. In particular, we stress the key points of design and analysis of parallel applications. As a case study, we present to our students the parallelization of a real computational science application, namely a remote sensing SAR (Synthetic Aperture Radar) processor, using both MPI and OpenMP.
KeywordsFast Fourier Transform Parallel Application Cache Line Azimuth Direction Range Direction
- 2.Amdahl, G.: Validity of the single processor approach to achieving large scale computing capabilities. In: Proc. AFIPS, vol. 30, pp. 483–485 (1967)Google Scholar
- 5.Elachi, C.: Spaceborne Radar Remote Sensing: Applications and Techniques. IEEE Press, Los Alamitos (1988)Google Scholar
- 9.Frigo, M., Johnson, S.G.: FFTW: An Adaptive Software Architecture for the FFT. In: ICASSP conference proceedings, vol. 3, pp. 1381–1384 (1998)Google Scholar