Labs 1.1 and 1.2
“Parallelization of basic vector operations with low-level Windows APIs”
“Parallelization of basic vector operations with low-level APIs. POSIX Threads”
Main goals of the Lab 1 are:
1. introduce basics of multithreaded programming with Windows (Lab 1.1) threads;
2. introduce basics of multithreaded programming with POSIX (Lab 1.2) threads;
3. try different methods of decomposition and explore their influence on scalability of parallel application;
4. introduce some performance issues which may influence scalability of parallel applications.
«Parallel algorithms of basic vector operations. Realization with OpenMP and Intel software tools»
Main goals of the Lab 2 are:
1. introduce basics of multithreaded programming with OpenMP and show possible problems of parallel OpenMP applications;
2. introduce basics of usage of Intel® Math Kernel Library;
3. try different methods of optimization on stage of compilation: general (On), vectorization with SSEx extensions, autoparallelization and profile-guided optimization;
4. introduce basics of usage of Intel® Integrated Performance Primitives.
«Parallel algorithms of basic matrix operations»
Main goals of the Lab 3 are:
1. parallelization of matrix multiplication program with OpenMP and exploration of efficiency of different methods of parallelization;
2. extend experience with usage of Intel® Integrated Performance Primitives;
3. practice with Intel software tools (Intel® Thread Checker, Intel® Parallel Studio).
«Solution of spectral problems for matrices»
Problem of calculation of eigenvalues and eigenvectors of matrices often arises in applied calculations (physics, biology etc.). Numerical methods of solution of this problem may be time-consuming. In the given lab methods of optimization (based on parallel programming for multicore systems) are used to improve efficiency of calculation of matrix eigenvalues and eigenvectors.
Main goals of the Lab 4 are:
1. introduce Intel® Integrated Performance Primitives as tool of calculation of eigenvalues and eigenvectors of matrices;
2. introduce and get more practice with Intel® Math Kernel Library (LAPACK subset) as tool of calculation of eigenvalues and eigenvectors of matrices.
«Parallel algorithms of numerical algebra. Monte Carlo method»
Problem of numerical solution of systems of linear algebra subroutines often arises in applied calculations (physics, biology etc.). Numerical methods of solution of this problem may be time-consuming. In the lab the Monte-Carlo method is considered from the point of view of scalability with standard and stream pseudorandom numbers generators.
Main goals of the Lab 5 are:
1. introduce Intel® Math Kernel Library as source of pseudorandom stream generators;
2. analyze parallel OpenMP realizations of the program with standard and Intel® MKL stream pseudorandom generators from the point of view of scalability and efficiency. Testing on manycore systems.
«Parallel algorithms of numerical solution of differential equations»
Problem of numerical solution of differential equations often arises in applied calculations (physics, mathematics, mechanics etc.). Numerical methods of solution of this problem may be time-consuming. In the lab numerical solution of a problem of Dirichlet for the Poisson equation is considered. This equation is applied in hydrodynamics, in the elasticity theory, in computing of thermal fields etc. With this equation taken as example problems of the organization of parallel calculations and possible ways of their decision are considered.
Main goals of the Lab 6 are:
1. introduce serial Gauss-Seidel algorithm for the Poisson equation;
2. introduce synchronization functions of the OpenMP;
3. show how excessive synchronizations lead to inefficient OpenMP parallel application;
4. show how different methods of organization of calculations influence efficiency and scalability of the OpenMP parallel applicat
«Task decomposition with OpenMP 3.0»
Parallel versions of graph algorithms are considered. First is Dijkstra's all-pairs shortest paths algorithm. In its parallel version single-source paths are distributed between different threads. Second is Floyd's algorithm for solving the all-pairs shortest paths. In the Lab usage of tasking feature in OpenMP 3.0 is supposed. This feature makes parallelism in OpenMP more efficient.
Main goals of the Lab 7 are:
1. introduce serial graph algorithms: Dijkstra and Floyd’s;
2. introduce task functionality of the OpenMP 3.0;
3. explore scalability of parallel all-pairs shortest paths algorithms implemented with the task functionality of OpenMP 3.0.
Laboratory explorations on programming on multicore computing systems
Saint-Petersburg State University
Labs are oriented on book An Introduction to Parallel Computing: Design and Analysis of Algorithms, by Ananth Grama, George Karypis, Vipin Kumar, Anshul Gupta, Second Edition, 2003. Main emphasis is on methods of programming for multicore systems.Each lab includes description and statement of problems, templates of programs and examples (if necessary). The material of labs is supplemented with the reference book on basic methods of parallel programming.
Labs are developed with support of Intel corporation.