Dansk - English
Short version - Full version
Parallel Programming 4 (Spring 2013) |
|||
Course code : | IPARP4-U1 | ||
ECTS Credits : | 5 | Status : | Compulsory |
Revised : | 30/04 2013 | Written : | 01/09 2009 |
Placement : | 4. semester | Hours per week : | 4 |
Length : | 1 semester | Teaching Language : | Danish and English |
Objective : | Modern computers typically have two or more cores sharing memory, and the computer environment will typically involve cooperation between more than one computer. To exploit this kind of parallel environment parallel programming techniques are required. In this course the student will aquire an understanding of parallel computing and the challenges faced by the developer such as finding concurrency in software design and decomposing it into concurrent tasks and managing the use of data across these tasks. This will require an understanding of the theoretical foundations as well as practical experience with multithreaded programs for single core processors, OpenMP for multicore processors sharing memory and MPI for multiprocessors with private memory. The practical part of the course requires a significant amount of programming. |
||
Principal Content : | Upon completion of the course the students is expected to be able to: 1. Explain the different computer architectures as expressed in Floyds taxonomy. 2. For each of these architectures explain the programming principles and identify possible programming language environments such as Pthreads, Java, OpenMP and MPI. 3. Explain common mechanisms for managing processes/threads (such as creating and destroying processes/threads) and for process/thread interaction (such as semaphores, barriers, message passing). 4. Identify the concurrency in a software design problem and decompose it into concurrent tasks. 5. Suggest an algorithm structure implementing the identified concurrency. 6. Suggest a suitable programming environment and its APIs to implement the parallelism of the algorithm structure. 7. Explain common problems arising from concurrency such as critical race, deadlocks, and starvation. 8. Suggest possible solutions to such concurrency problems. 9. Implement the suggested solutions in the relevant programming environments. |
||
Teaching method : | The lessons consist of theory combined with practical exercises. | ||
Required prequisites : | Documented knowledge corresponding to PROG1 and PROG2. | ||
Recommended prerequisites : | Some experience in C. | ||
Relations : | Parallel Programming (PARP4) is normally taken in parallel with PROI4 and OSLX4. In PRIO4 the product must involve practical use of threads. | ||
Type of examination : | Look under remarks | ||
External examiner : | External | ||
Marking : | 7 step scale | ||
Remarks : | 7 step scale: 02: 1, 2, 3, and 7 of the Principal Content must be met. 7: Minor insufficiencies in 4, 5,6, 8, and 9 12: Ability to reflect on the suitability of the suggestions in 4, 5, 6, 8, and 9 Oral examination based on a specified project (PROI4) and probing of the students’ knowledge about the theoretical background. |
||
Teaching material : | Notes on parallel programming, OpenMP and MPI. Multithreaded Programming Guide, Sun Microsystems. (pdf document) Textbook: Will be announced at the beginning of the course. |
||
Responsible teacher : | Henrik Kold Mikkelsen
, hokm@dtu.dk |