BİL455

Parallel Processing

Faculty \ Department
School of Engineering \ Computer Engineering
Course Credit
ECTS Credit
Course Type
Instructional Language
3
6
Elective
Turkish
Prerequisites
BİL214 and BİL361
Programs that can take the course
Computer Engineering
Course Description
This course covers the fundamentals and application methods of parallel processing techniques in modern computer systems. Students will gain knowledge in the design, optimization, and implementation of parallel algorithms in multi-core and distributed systems, thereby reinforcing their theoretical knowledge with practical applications.
Textbook and / or References

Multicore and GPU Programming: An Integrated Approach, G. Barlas
Programming Massively Parallel Processors, W. W. Hwu, D. B. Kirk, I. E. Hajj
Course Objectives
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.
Course Outcomes
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.
Tentative Course Plan
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