Memory Profiling and Optimization
Bölüm anahatları
-
Skill Level: Intermediate
Language: English
Workload: 8 hours total (4 hours lecture videos + 4 hours exercises)
Topic: Memory Profiling and Optimization
Overview: This lecture focuses on memory optimization techniques for data accesses, and mechanisms for profiling applications.
Course Description: The series of lectures cover memory system introduction, memory architecture and coherency, memory and performance, memory performance monitoring, and memory optimizations. Furthermore, it covers hands-on exercises on profiling of a scaled-transpose kernel using perf tool, memory-level parallelism with dependent and independent pointer chains, locality, loop interchange, and blocking/tiling, false sharing, counter placement, and local accumulation.
Lecture explores the critical data structures, such as coordinate and compressed sparse formats, that underpin efficient storage and computation on sparse datasets. Students will learn about the principles of parallelism, distributed computing and their challenges in sparse systems, including handling irregular data access patterns and balancing computational loads. The session also covers practical applications, such as graph analysis and tensor operations emphasizing their use in machine learning, scientific computing, and network analysis.
Course Contents:
Part 1: Memory System Introduction
Part 2: Memory Architecture and Coherency
Part 3: Memory and Performance
Part 4: Memory Performance Monitoring
Part 5: Memory Optimizations
Exercise 1: Linux `perf` profiling of a scaled-transpose kernel
Exercise 2: memory-level parallelism with dependent and independent pointer chains
Exercise 3: locality, loop interchange, and blocking/tiling
Exercise 4: false sharing, counter placement, and local accumulation
Who Should Enroll: Anyone who is working with data, memory, parallelization, and want more performance on their applications.
Prerequisite: Familiarity with C++
Tools, libraries, frameworks used: Linux environment with a C++17 compiler, Python 3, Linux `perf`, and the Python plotting dependencies used by the supplied scripts is expected.
Learning Objectives: By participating in this course, you will learn:
Profiling applications and analyzing their behavior in terms of memory.
Optimization strategies for memory.
About the instructors: Ömer Gölcük is a graduate student at the Faculty of Engineering and Natural Sciences at Sabancı University. Özcan Öztürk is a Professor at the Faculty of Engineering and Natural Sciences at Sabancı University. His research areas include computer architecture, parallel computing, and custom hardware design.