6 ECTS credits
150 u studietijd

Aanbieding 1 met studiegidsnummer 4016038FNR voor alle studenten in het 2e semester met een gespecialiseerd master niveau.

Semester
2e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordelingsvoet
Beoordeling (0 tot 20)
2e zittijd mogelijk
Ja
Onderwijstaal
Engels
Faculteit
Faculteit Wetenschappen en Bio-ingenieurswetensch.
Verantwoordelijke vakgroep
Computerwetenschappen
Onderwijsteam
Janwillem Swalens (titularis)
Onderdelen en contacturen
26 contacturen Hoorcollege
26 contacturen Werkcolleges, practica en oefeningen
Inhoud

In this course, we study different programming models, techniques and patterns for writing concurrent and parallel programs on multicore processors. We cover the following topics in the course:

  • An overview of multicore hardware and the laws of concurrent programming (Moore's law, Amdahl's law)
  • Core concepts: parallelism vs concurrency, shared memory vs message passing, speedup vs throughput
  • Traditional shared-memory models: locks, mutual exclusion, race conditions, deadlock, atomic variables
  • Software transactional memory
  • Message-passing models: the actor model; processes and channels
  • General-purpose programming on a GPU
  • Benchmarking: approach, pitfalls, statistics, reporting

More details about the course can be found at http://soft.vub.ac.be/teaching/multicore/

Studiemateriaal
Digitaal cursusmateriaal (Vereist) : Lecture slides and exercises, Janwillem Swalens, Canvas
Digitaal cursusmateriaal (Aanbevolen) : Related papers and book chapters, Available on the course website
Bijkomende info

This course is taught in English.

Comparison with the course "Practical parallel programming" (Jan Lemeire):

  • Practical parallel programming focuses on low-level approaches to parallel computing. Multicore programming focuses on high-level approaches to concurrent and parallel programming.
  • Practical parallel programming discusses the traditional, well-established techniques for multithreading (Java) and message-passing (MPI) which have proven their value. Multicore programming discusses cutting-edge, innovative approaches (e.g. actors, STM) using higher-level programming languages (e.g. Erlang, Clojure).
  • Practical parallel programming concentrates on scientific computing, such as algorithms allowing data-parallelism (e.g. matrix algorithms). Multicore programming focuses on concurrent applications with irregular concurrency, distributed systems, and their corresponding software architecture. Focus on parallelizing general-purpose software and exploring a wide range of novel techniques.

Comparison with the course "GPU computing" (Jan Lemeire):

  • GPU computing concentrates on understanding the low-level details of performance, parallel overheads, and the efficiency of the memory system when doing GPU programming, using a simulator. Multicore programming focuses on the language side of GPUs. We explore OpenCL and how it has to be general to support various hardware architectures.
Leerresultaten

Algemene competenties

Knowledge and understanding:

  • The student understands the context that lead to the development of multicore hardware and other types of parallel hardware.
  • The student can define common problems that occur in parallel programs, such as race conditions and deadlocks.
  • The student can describe a range of (established and novel) programming techniques for parallel and concurrent programming. The student can categorize these techniques (e.g. shared memory vs message passing) and understands their characteristics (e.g. serializability).
  • The student can explain how several of these techniques are implemented. The student understands the benefits and trade-offs of these techniques.
  • The student can define common metrics used to evaluate parallel programs, such as speedup and throughput.

Application of knowledge and understanding:

  • The student can analyze a program to detect errors or unwanted properties related to parallel programming, and can remedy them using the techniques seen in class.
  • The student can analyze sequential programs to find the appropriate technique for parallelization. The student understands the benefits and drawbacks of their solution.
  • The student can apply the techniques seen in class to larger programs, correctly and efficiently.
  • The student can measure the performance of parallel programs experimentally. The student can analyze and interpret the results in a statistically correct manner. The student can present them using the appropriate technique.

Communication:

  • The student can communicate the design of a parallel program, in the form of a report and an oral defense. The student uses the correct terminology.
  • The student can describe experimental results, both textually and visually, using the appropriate plots and visualizations, and in a statistically correct manner.
  • The student can defend design choices in an oral defense.

Skills:

  • The student learns several programming languages or libraries for parallelism and concurrency.
  • The student learns how to perform statistically correct performance experiments, and how to interpret and visualize the results.

Attitudes:

  • The student understands that different techniques have different benefits and drawbacks, and can compare them.
  • The student understands that different designs for parallel programs have different benefits and drawbacks, and can compare them.
  • The student can understand experimental performance results and examine them critically.

Beoordelingsinformatie

De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Mondeling bepaalt 30% van het eindcijfer

WPO Praktijkopdracht bepaalt 70% van het eindcijfer

Binnen de categorie Examen Mondeling dient men volgende opdrachten af te werken:

  • projectverdediging met een wegingsfactor 1 en aldus 30% van het totale eindcijfer.

    Toelichting: Oral project defense during which the student defends and explains the programming projects.

Binnen de categorie WPO Praktijkopdracht dient men volgende opdrachten af te werken:

  • programmeerprojecten met een wegingsfactor 1 en aldus 70% van het totale eindcijfer.

    Toelichting: A number of assignments are specified for which the student is expected to independently implement a concurrent program, with deadlines throughout the semester. The student should submit code and a report for each project.

Aanvullende info mbt evaluatie

Throughout the semester, a number of programming projects are presented which the students are expected to solve individually. Students will need to submit code and a written report on their projects. This report contains details about both the design and the performance of the code written for the project. Students should run their code on multicore hardware (which will be provided if necessary) to measure and evaluate the performance, the results of which will be included in the report.

The final exam consists of an oral project defense. During this defense, students will need to explain and defend their programming projects. They need to be able to relate concepts used during the projects with concepts seen in the lectures.

The final grade is determined based on the quality of the submitted programming projects (including source code and written reports) and the interview during the final oral project defense.

The assignments are mandatory and the deadlines are strict. Failing to hand in a project implies an absent mark for the whole course. Students need to obtain a minimal score of 8/20 for each of the projects separately. Otherwise, they will receive their lowest score as the end result for this course.

Toegestane onvoldoende
Kijk in het aanvullend OER van je faculteit na of een toegestane onvoldoende mogelijk is voor dit opleidingsonderdeel.

Academische context

Deze aanbieding maakt deel uit van de volgende studieplannen:
Master in de toegepaste informatica: Big Data technologie
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Artificiële Intelligentie
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Multimedia
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Software Languages and Software Engineering
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Data Management en Analytics
Master in Applied Sciences and Engineering: Computer Science: Artificial Intelligence (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Multimedia (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Data Management and Analytics (enkel aangeboden in het Engels)
Educatieve master in de wetenschappen en technologie: computerwetenschappen (120 ECTS, Etterbeek)
Master of Applied Informatics: Profiel profiel Big Data Technology (enkel aangeboden in het Engels)