Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Multicore programming
Tok studiów:
2018/2019
Kod:
JFT-2-035-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia II stopnia
Specjalność:
-
Kierunek:
Fizyka Techniczna
Semestr:
0
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Angielski
Forma i tryb studiów:
Stacjonarne
Strona www:
 
Osoba odpowiedzialna:
dr hab. inż, prof. AGH Szumlak Tomasz (szumlak@agh.edu.pl)
Osoby prowadzące:
dr hab. inż, prof. AGH Szumlak Tomasz (szumlak@agh.edu.pl)
Krótka charakterystyka modułu

Recent advances in processor technology clearly show a major push towards increase the number
of processing cores (threads) on a single physical chip. Learning the basic programming skills
pertaining to concurrent programming is vital for each software developer.

Opis efektów kształcenia dla modułu zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń)
Wiedza
M_W001 A student gains basic knowledge on modern CPU and GPU multicore architectures and the ways this technological progress can be used to speed up data processing. FT2A_W01 Aktywność na zajęciach,
Egzamin,
Projekt
Umiejętności
M_U001 A student understands the subtle interactions and interlinks between operating system, hardware, specialised drivers and software development tools. FT2A_U03, FT2A_U01 Projekt,
Wykonanie ćwiczeń laboratoryjnych
M_U002 A student can work as a part of a team and can interact properly with his/her co-workers FT2A_U01 Projekt,
Udział w dyskusji,
Wykonanie ćwiczeń laboratoryjnych
Kompetencje społeczne
M_K001 A student can comunicate his/her results and discuss them FT2A_K01 Projekt,
Udział w dyskusji
Matryca efektów kształcenia w odniesieniu do form zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
M_W001 A student gains basic knowledge on modern CPU and GPU multicore architectures and the ways this technological progress can be used to speed up data processing. + - - - - - - - - - -
Umiejętności
M_U001 A student understands the subtle interactions and interlinks between operating system, hardware, specialised drivers and software development tools. - - + + - - - - - - -
M_U002 A student can work as a part of a team and can interact properly with his/her co-workers - - + + - - - - - - -
Kompetencje społeczne
M_K001 A student can comunicate his/her results and discuss them - - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:
  1. Introduction

    Recent advances in microelectronics gave us a unique opportunity to operate CPU or GPU chips containing many processors – called cores. It is only natural that software should follow the same way and provide tools for development of applications that can properly use this potential. The first two lectures will be devoted to a generic discussion on how to harness the power of multicore architecture, we learn about Amdahl and Gustafson’s laws, look at different computing platforms and discuss modern processors design. Also processes and threads will be introduced along as well.

  2. What language should I use if I want to go parallel?

    Here we discuss writing parallel programs using commonly known programming languages such as C, C++ and Python. What is needed to turn an ordinary mundane sequential code into nice and shiny parallel applications.

  3. OpenCL (Khronos) platform

    OpenCL stands for ‘Open Computing Language’ and is a software platform that facilitates writing code that can be executed on hybrid hardware platforms consisting of both CPUs and GPUs. The main features of the framework will be discussed during this lecture.

  4. CUDA (NVIDIA) platform

    CUDA framework is similar in many ways to the OpenCL one. The main difference come from significant specialization that allows to run CUDA applications only on CUDA enabled hardware (such as NVIDIA GPUs). This results in less flexibility regarding the available hardware but on the other hand allows to write software that uses better the available hardware resources. Again the main features of this platform will be presented together with an example of drivers and SDK (Software Development Kit) installation.

Ćwiczenia laboratoryjne:
  1. Introduction

    This part is devoted to show a student what is needed to prepare an parallel application. We discuss subtleties of quite complicated interaction between the CUDA enabled hardware and operating system running the appropriate CUDA drivers. Also, the NVIDIA SDK environment will be demonstrated.

  2. CUDA toolkit: hands-on

    How to write CUDA ‘Hello Word’. Code for a host (i.e., CPU and system memory) and that written for a device (i.e., GPU and its memory). Executing device code from a host. A device memory management.

  3. Writing parallel code

    Basic ways to use CUDA for writing parallel applications. Using threads and how to make them talking to each other. Threads synchronisation.

  4. Memory management – essentials

    CUDA and the constant memory (CM). CUDA events and application performance measurements.

  5. Complex example

    Using the skills and knowledge gained so far we try to write a more complex application – heat transfer simulation.

Ćwiczenia projektowe:
Projects

A CUDA related project will be provided for a student. It is also possible to hand our a project that can reflect specific interest of an individual (i.e., related to his/her Master thesis)

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 100 godz
Punkty ECTS za moduł 4 ECTS
Udział w wykładach 0 godz
Samodzielne studiowanie tematyki zajęć 31 godz
Udział w ćwiczeniach laboratoryjnych 18 godz
Przygotowanie do zajęć 20 godz
Udział w ćwiczeniach projektowych 10 godz
Dodatkowe godziny kontaktowe z nauczycielem 20 godz
Egzamin lub kolokwium zaliczeniowe 1 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

The final mark will be determined by observing the general rules set by the AGH University

The final mark (FM) E – exam, L – computer lab, P – project
FM = 0,5 x E + 0,2 x L + 0,3 x P

Wymagania wstępne i dodatkowe:

- basic knowledge of Python is an asset but not compulsory to take this course

Zalecana literatura i pomoce naukowe:

- web resources: nvidia.com, http://www.khronos.org/opencl/
- books: NOTE! usually become obsolete quite fast
1) Professional Multicore Programming: Design and Implementation for C++ Developers
Cameron Hughes, Tracey Hughes, ISBN: 978-0-470-28962-4
code samples available for download!
2) Fundamentals of Multicore Software Development
Victor Pankratius, Ali-Reza Adl-Tabatabai, Walter Tichy
ISBN-10: 143981273X

Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

Nie podano dodatkowych publikacji

Informacje dodatkowe:

Absences on lab classes and tutorials will have to be negotiated with the tutor.