School of Engineering \ Computer Engineering
Course Credit
ECTS Credit
Course Type
Instructional Language
Programs that can take the course
Basics of parallel computing, Amdahl Law Gustafson–Barsis Law.Multi-core processors. Programming with threads and processes,C++ Threads, locks, mutexes,semaphores.Basics of GPU architecture,GPU memory architecture and cache structure.GPU programming,CUDA programming model,CUDA API.
Textbook and / or References
1. Multicore and GPU Programming: An Integrated Approach, G. Barlas
2. Programming Massively Parallel Processors, W. W. Hwu, D. B. Kirk, I. E. Hajj
The aim of this course is to enable students to understand the concepts, architectures, and algorithms of parallel processing, and to develop efficient programming techniques for multi-core and distributed systems.
1. To learn the fundamentals of parallel programming on multi-core CPUs.
2. To learn the software and hardware tools (locks, semaphores) used for synchronizing CPU threads.
3. To learn the basic GPU processor core architecture.
4. To learn the basic GPU memory architecture.
5. To learn the CUDA programming model.
6. To learn how to program NVIDIA GPUs using the CUDA API.
Week 1: Fundamentals of parallel programming.
Week 2: Architecture and basic concepts of multi-core NUMA CPUs.
Week 3: Thread synchronization at the operating system level: Use of locks.
Week 4: Non-operating system synchronization techniques: Principles of semaphores.
Week 5: Identification of fundamental issues encountered in multi-threaded programs.
Week 6: Software design patterns and application examples for effective resolution of issues.
Week 7: Introduction to the architecture and basic principles of GPU processors.
Week 8: GPU memory models: Shared/non-shared memory and multi-level cache structure.
Week 9: Introduction to CUDA programming: Basic concepts and thread synchronization model.
Week 10: Hardware scheduled multi-threading: Conceptual framework and practical examples.
Week 11: Programming NVIDIA GPUs using the CUDA API: Application examples.
Week 12: Performance and computational efficiency analysis: Evaluation of CUDA code using NVIDIA Visual Profiler.
Tentative Assesment Methods
• Midterm 25%
• Final 35%
• Project, Quiz and Assignments 40%
|
Program Outcome
**
|
| 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
|
Course Outcome
|
| 1 |
D, C
|
A, B
|
|
B, A
|
|
C
|
|
|
|
|
|
| 2 |
C, D
|
B, A
|
|
B, A
|
|
C
|
|
|
|
|
|
| 3 |
C, D
|
A, B
|
|
A, B
|
|
C
|
|
|
|
|
|
| 4 |
C, D
|
A, B
|
|
A, B
|
|
C
|
|
|
|
|
|
| 5 |
C, D
|
A, B
|
|
A, B
|
|
C
|
|
|
|
|
|
| 6 |
D, C
|
A, B
|
|
A, B
|
|
C
|
|
|
|
|
|