263-2300-00L  How To Write Fast Numerical Code

SemesterSpring Semester 2019
LecturersM. Püschel
Periodicityyearly recurring course
Language of instructionEnglish
CommentNumber of participants limited to 84.

Prerequisite: Master student, solid C programming skills.

Takes place the last time in this form.



Courses

NumberTitleHoursLecturers
263-2300-00 VHow To Write Fast Numerical Code3 hrs
Mon10:15-12:00HG D 3.2 »
Thu09:15-10:00CAB G 51 »
M. Püschel
263-2300-00 UHow To Write Fast Numerical Code2 hrs
Wed13:15-15:00HG D 3.2 »
M. Püschel

Catalogue data

AbstractThis course introduces the student to the foundations and state-of-the-art techniques in developing high performance software for mathematical functionality such as matrix operations, transforms, and others. The focus is on optimizing for a single core. This includes optimizing for the memory hierarchy, for special instruction sets, and the possible use of automatic performance tuning.
ObjectiveSoftware performance (i.e., runtime) arises through the complex interaction of algorithm, its implementation, the compiler used, and the microarchitecture the program is run on. The first goal of the course is to provide the student with an understanding of this "vertical" interaction, and hence software performance, for mathematical functionality. The second goal is to teach a systematic strategy how to use this knowledge to write fast software for numerical problems. This strategy will be trained in several homeworks and a semester-long group project.
ContentThe fast evolution and increasing complexity of computing platforms pose a major challenge for developers of high performance software for engineering, science, and consumer applications: it becomes increasingly harder to harness the available computing power. Straightforward implementations may lose as much as one or two orders of magnitude in performance. On the other hand, creating optimal implementations requires the developer to have an understanding of algorithms, capabilities and limitations of compilers, and the target platform's architecture and microarchitecture.

This interdisciplinary course introduces the student to the foundations and state-of-the-art techniques in high performance mathematical software development using important functionality such as matrix operations, transforms, filters, and others as examples. The course will explain how to optimize for the memory hierarchy, take advantage of special instruction sets, and other details of current processors that require optimization. The concept of automatic performance tuning is introduced. The focus is on optimization for a single core; thus, the course complements others on parallel and distributed computing.

Finally a general strategy for performance analysis and optimization is introduced that the students will apply in group projects that accompany the course.

Performance assessment

Performance assessment information (valid until the course unit is held again)
Performance assessment as a semester course
ECTS credits6 credits
ExaminersM. Püschel
Typegraded semester performance
Language of examinationEnglish
RepetitionRepetition only possible after re-enrolling for the course unit.
Additional information on mode of examinationThe grade for the course is determined by several homeworks (35%), one midterm exam (25%), and one semester long project with final report and presentation (40%).

Last cancellation/deregistration date for this graded semester performance: 17 March, i.e., about 4 weeks into the course! Please note that after that date no deregistration will be accepted and a "no show" will appear on your transcript.

Learning materials

 
Main linkCourse information
Only public learning materials are listed.

Groups

No information on groups available.

Restrictions

Places84 at the most
Waiting listuntil 01.03.2019

Offered in

ProgrammeSectionType
CAS in Computer ScienceFocus Courses and ElectivesWInformation
Computational Biology and Bioinformatics MasterTheoryWInformation
DAS in Data ScienceBig Data SystemsWInformation
Data Science MasterCore ElectivesWInformation
Computer Science TCSpecialized Courses in Respective Subject with Educational FocusWInformation
Computer Science Teaching DiplomaSpec. Courses in Resp. Subj. w/ Educ. Focus & Further Subj. DidacticsWInformation
Computer Science MasterFocus Core Courses Computational ScienceWInformation
Computer Science MasterCore Focus Courses General StudiesWInformation
Computer Science MasterFocus Elective Courses Software EngineeringWInformation
Computational Science and Engineering TCFurther Subject DidacticsWInformation
Computational Science and Engineering MasterCore CoursesWInformation