INFORMATION TECHNOLOGIES (ENGLISH, NON-THESIS) | |||||
Master | TR-NQF-HE: Level 7 | QF-EHEA: Second Cycle | EQF-LLL: Level 7 |
Course Code | Course Name | Semester | Theoretical | Practical | Credit | ECTS |
CMP5208 | Parallel Computing with GPUs | Fall | 3 | 0 | 3 | 12 |
This catalog is for information purposes. Course status is determined by the relevant department at the beginning of semester. |
Language of instruction: | Turkish |
Type of course: | Departmental Elective |
Course Level: | |
Mode of Delivery: | |
Course Coordinator : | Assist. Prof. ECE GELAL SOYAK |
Course Objectives: | The aim of this course is to introduce parallel computing and the development of applications for highly parallel processors, such as GPUs. Real-world applications like self-driving cars, machine learning, and augmented reality are prime examples of parallel computing usage. The course emphasizes computational thinking, various forms of parallelism, programming models, mapping tasks to parallel hardware, optimizing data structures, paradigms for designing efficient parallel algorithms, and includes case studies of practical applications. |
The students who have succeeded in this course; - Ability to use parallel programming models for computational tasks on high-performance hardware (e.g. GPU). - Gain hands-on experience with GPU programming using CUDA (for NVIDIA processors), including developing and optimizing parallel applications. - Apply efficient data structures and parallel paradigms to enhance the performance of computationally intensive tasks. - Analyze and evaluate case studies of parallel computing applications to overcome challenges in various domains using parallel computing technologies. |
Key topics will include popular programming interfaces for graphics processors (such as CUDA for NVIDIA GPUs), the internal architecture of graphics processors and its influence on performance, as well as the implementation of parallel algorithms on these processors. The course consists of approximately 29 lectures and includes substantial programming tasks, including five hands-on assignments and a final project. |
Week | Subject | Related Preparation |
1) | Introduction to Parallel Computing and GPU Architecture; CUDA and GPU programming (NVIDIA GPUs). | |
2) | GPU-Accelerated Data Structures (e.g., parallel lists, queues, trees) | |
3) | Optimizing Memory Access in CUDA; Cache optimization and bank conflicts | |
4) | Advanced CUDA Features: Streams, asynchronous operations, events and timing, error handling | |
5) | CUDA Programming Basics; implement CUDA kernel, explore memory access patterns | |
6) | Parallel Algorithms on GPUs; reduction, scan, sorting, and matrix operations | |
7) | GPU-Accelerated Data Structures (e.g., parallel lists, queues, trees) | |
8) | Case Study 1: Machine Learning on GPUs; GPU acceleration using cuBLAS, cuDNN libraries | |
9) | Case Study 2: Parallel programming techniques for image processing, object detection, and motion planning | |
10) | Advanced CUDA Techniques for Optimization; occupancy, warp-level programming, and instruction-level optimization. | |
11) | Performance profiling and bottleneck analysis using NVIDIA tools (Nsight, Visual Profiler) | |
12) | Project presentations | |
13) | Project presentations |
Course Notes / Textbooks: | |
References: | D. Kirk and W. Hwu, Programming Massively Parallel Processors: A Handson Approach, Third Edition |
Semester Requirements | Number of Activities | Level of Contribution |
Total | % | |
PERCENTAGE OF SEMESTER WORK | % 0 | |
PERCENTAGE OF FINAL WORK | % | |
Total | % |
Activities | Number of Activities | Duration (Hours) | Workload |
Course Hours | 14 | 3 | 42 |
Project | 1 | 35 | 35 |
Homework Assignments | 3 | 12 | 36 |
Final | 1 | 25 | 25 |
Total Workload | 138 |
No Effect | 1 Lowest | 2 Low | 3 Average | 4 High | 5 Highest |
Program Outcomes | Level of Contribution | |
1) | Uses basic Software Engineering knowledge and competencies. | |
2) | Applies the software development ability that is necessary for software engineering applications. | |
3) | Uses data structures and applies information about algorithm development. | |
4) | Develops system programs on operating systems. | |
5) | Defines computer organization, design and architectures. | |
6) | Creates the structure of computer networks and network security. | |
7) | Uses business intelligence, data mining and data analysis tools, applies techniques about them. | |
8) | Develops database applications and WEB based programs. | |
9) | Defines, analyzes, designs and manages information technologies projects. | |
10) | Uses and develops technology-based environments and tools in education. | |
11) | Detects, identifies and solves information technology needs of the business environment. | |
12) | Uses the capabilities of information technologies within the rules of professional responsibility and ethics. |