Performance engineering of software applications

Course topics

Part 1. Single thread programming

  • Performance engineering basics. Profiling. Compiler. Different OS
  • Computer architecture and performance engineering
  • Hacker delights (bit-hacks). C to assembler
  • Cache efficient algorithms. Measuring of performance
  • Memory issues. Dynamic storage allocations

Part 2. Multicore programming

  • Performance of parallel application. Debug of parallel applications
  • Synchronization. Locks. Semaphores
  • MPI basics
  • NVIDIA CUDA
  • OpenCL

Part 3. Distributed programming

  • Distributed programming basics
  • Distributed algorithms

Prerequisites

  • Basic understanding of computer hardware
  • Basic understanding of networking
  • Basic software programming skills C/C++
  • Basic OS knowledge
  • Linux/Unix knowledge, bash scripting experience
  • Virtualization experience