Fundamental Information
The fast development and increasing complexity of computing platforms pose an important challenge for developers of high end software for engineering, technology, and customer applications: it becomes increasingly harder to harness the computing power that is available. Simple implementations may lose just as much as 1 or 2 requests of magnitude in performance. Having said that, producing implementations that are optimal the designer to own a knowledge of algorithms, abilities and limits of compilers, plus the target platform’s architecture and microarchitecture. This interdisciplinary program introduces the student towards the foundations and advanced approaches to high end computer computer software development utilizing crucial functionality such as linear algebra kernels, transforms, filters, yet others as examples. The program will explain how exactly to optimize for the memory hierarchy, make the most of unique instruction sets, and just how to publish code that is multithreaded multicore platforms, centered on advanced research. Further, a strategy that is general performance analysis and optimization is introduced that the students will use in team jobs that accompany the program. Finally, the program will introduce the pupils into the field that is recent of performance tuning.
This course shall build upon but expand the version taught in Spring 2005.
Topics Covered
- Algorithm analysis: Problem versus algorithm, complexity and value (asymptotic, exact, measured), O-calculus, algorithms in posting
- Computer architecture (an application viewpoint): architecture and microarchitecture, memory hierarchy, unique instruction sets, multicore platforms
- Compilers: talents, limits, simple tips to make use of
- Efficiency optimization: guide to benchmarking, finding hotspots, rule analysis, performance optimization strategies (for memory hierarchy, utilizing vector directions, composing multithreaded rule); these practices are examined with the examples when you look at the bullet that is next
- Numerical functionality studied in more detail (complexity, algorithms, just how to compose performance code that is custom-written highest): linear algebra kernels, transforms, filters, sparse linear algebra, sorting, other people, your quest task
- State-of-the-art research in automated Efficiency Tuning: ATLAS, LAPACK, BeBOP, FFTW, SPIRAL, other people
Objectives with this Program
- Discover a guideline how exactly to write quick code that is numerical put it on in homeworks as well as your scientific study
- Understand the text between algorithms, implementations, and computer architecture
- Discover some fundamental algorithms that are numerical
- Discover ways to evaluate numerical algorithms
There’s absolutely no textbook with this course. Several of this tutorial is followed by the material.
The component this is certainly foundation (algorithms, computer architecture etc.) are going to be compiled from a few books that are standard. The core component, which analyzes edge that is cutting for numerical dilemmas is put together from research documents, the teacher’s own experience.