Section outline

  • 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.