The quick development and increasing complexity of computing platforms pose an important challenge for designers of high end pc software for engineering, technology, and customer applications: it becomes increasingly harder to harness the computing power customwritings that is available. Simple implementations may lose just as much as 1 or 2 requests of magnitude in performance. Having said that, creating implementations that are optimal the designer to possess a knowledge of algorithms, abilities and restrictions of compilers, while the target platform’s architecture and microarchitecture. This course that is interdisciplinary the pupil into the fundamentals and state-of-the-art approaches to high end computer pc software development utilizing crucial functionality such as linear algebra kernels, transforms, filters, among others as examples. The course will explain exactly how to optimize when it comes to memory hierarchy, make use of special instruction sets, and just how to publish code that is multithreaded multicore platforms, according to state-of-the-art research. Further, a basic technique for performance analysis and optimization is introduced that the pupils will use in group jobs that accompany the program. Finally, the program will introduce the students to your field that is recent of performance tuning.
The program will build upon but expand the version taught in Spring 2005.
- Algorithm analysis: Problem versus algorithm, complexity and cost (asymptotic, exact, calculated), O-calculus, algorithms in publishing
- Computer architecture (an application point of view): architecture and microarchitecture, memory hierarchy, unique instruction sets, multicore platforms
- Compilers: skills, restrictions, how exactly to make use of
- Performance optimization: help guide to benchmarking, finding hotspots, rule analysis, performance optimization strategies (for memory hierarchy, making use of vector guidelines, composing multithreaded rule); these methods are examined utilising the examples within the bullet that is next
- Numerical functionality examined in more detail (complexity, algorithms, how exactly to compose greatest performance rule): linear algebra kernels, transforms, filters, sparse linear algebra, sorting, other people, pursuit project
- State-of-the-art research in Automatic Efficiency Tuning: ATLAS, LAPACK, BeBOP, FFTW, SPIRAL, other people
Goals of the Course
- Discover a guideline just how to compose quick numerical code and put it on in homeworks as well as your research study
- Comprehend the text between algorithms, implementations, and computer architecture
- Learn some fundamental numerical algorithms
- Learn to evaluate numerical algorithms