IKC-MH.57 Introduction to High Performance and Parallel Computing

2022-2023 Spring

Most recent announcement: June20

TIME

MONDAY

TUESDAY

WEDNESDAY

THURSDAY

FRIDAY

    Contents

8:30






9:30






10:30






11:30






12:30






13:30






14:00






15:00







16:00





IKC-MH.57


17:00





IKC-MH.57


Instructor

Cem Özdoğan

office: Faculty of Engineering and Architecture

Department of Engineering Sciences, H1-33
office hours: Schedule or appointment by email, or drop by anytime
office phone: 329 3535 / 3803
email address: cem.ozdogan@ikc.edu.tr

cozdogan11@gmail.com

TA

Not Available

office:
office hours:
office phone:
email address:


Announcements

Watch this space for the latest updates (If the characters do not show properly, please try viewing this page with Unicode (UTF-8) encoding). Last updated:

Tue, June 20, 2023 Final Examination grades are available, see Course Schedule section

Thu, June 1, 2023 Final Examination will be as take-home work, see Course Schedule section

Thu, June 1, 2023 Midtem Examination grades are available, see Course Schedule section

Wed, May 24, 2023 Lecture notes for week12 is published, see Course Schedule section

Wed, May 10, 2023 Lecture notes for week11 is published, see Course Schedule section

Sun, April 30, 2023 Lecture notes for week10 is published, see Course Schedule section

Wed, April 12, 2023 Lecture notes for week9 is published, see Course Schedule section

Wed, April 12, 2023 Lecture notes for week8 is published, see Course Schedule section

Wed, April 12, 2023 No lecture at week7. Midtem Examination will be as take-home work, see Course Schedule section

Fri, March 31, 2023 Lecture notes for week6 is published, see Course Schedule section

Thu, March 23, 2023 Lecture notes for week5 is published, see Course Schedule section

Thu, March 16, 2023 Lecture notes for week4 is published, see Course Schedule section

Wed, March 8, 2023 Lecture notes for week3 is published, see Course Schedule section

Thu, March 2, 2023 Lecture notes for week2 is published, see Course Schedule section

Thu, February 23, 2023 In the first lecture, there will be first meeting. The lecture notes will be published soon, see Course Schedule section.

Back to top

Lecture Information

Almost all computer systems today are multi-core processors systems. Parallel programming must be used to take benefit of the full performance of such systems. Parallel programming also describes the processes and instructions for dividing a larger problem into smaller steps. The instructions are passed to multiple processors for required calculations to be executed in parallel. A practical approach to parallel program design and development will be presented in the course content. Awareness of potential design and performance concepts in heterogeneous computer architectures will be gained. Important announcements will be posted to the Announcements section of this web page, so please check this page frequently. You are responsible for all such announcements, as well as announcements made in lecture.


Back to top

Course Overview

IKC-MH.57 is intended to provide students an introduction to parallel programming by using C and/or similar programming languages. In this course, the basics of high performance and parallel computing will be given. OpenMP (Open Multi-Processing) in multi-core systems and MPI (Message Passing Interface) message passing in distributed memory systems will be taught for parallel programming. MPI is the industry standardized parallelization paradigm in high-performance computing and enables programs to be written that run on distributed memory machines. OpenMP is a thread-based approach to parallelize a program over a single shared memory machine. An introduction to the basic concepts of hybrid and accelerated paradigms as Cuda OpenCL programming will be given. The course consists of theoretical topics and hands-on practical exercises on parallel programming.

Upon completion of this course the students will be able to understand/explain/apply;

Back to top

Text Book

Lecture material will be based on them. It is strongly advised that student should read textbooks rather than only content with the lecture material supplied from the lecturer.

Required

Recommended




An Introduction to Parallel Programming

by Peter Pacheco and Matthew Malensek, Morgan Kaufmann,

2nd edition, 2021

Elsevier

Paralel Algoritmalar: Modeller ve Yöntemler (Yüksek Başarımlı Hesaplama)

by Abdulsamet Haşıloğlu 2020

Papatya Bilim

Parallel Programming: Techniques and Application Using Networked Workstations and Parallel Computers

by Barry Wilkinson and Michael Allen 2nd edition, 2005

Pearson






Back to top

Online Resourcess

The following resources are available online. Please inform me about the usefullness of the materials. Check this place for updates.

Back to top

Grading Criteria


Back to top

Policies


Back to top

Tentative Course Outline

Back to top

Tentative Course Schedule & Lecture Notes

The following schedule is tentative; it may be updated later in the semester, so check back here frequently.


Week

Topic

Lecture Notes

Quizes

Homeworks

Pdf

html

Pdf

Pdf

Grades

Grades

Lectures

1

First Meeting

Lecture Information. Installation of Linux system and required tools/programs using VirtualBox in Windows environment (kubuntu-22.04.3-desktop-amd64.iso & VboxGuestAdditions_6.1.38.iso)

pdf

html

NA

2

Introduction I

Four Decades of Computing. Parallel Computers. Computing Clusters, Flynn’s Taxonomy of Computer Architecture

pdf

Hands-On

NA

3

Introduction II

SIMD Architecture, MIMD Architecture. Shared Memory Organization. Message Passing Organization

pdf

Hands-On

NA

4

Performance Analysis

Computational Models. Skeptic Postulates For Parallel Architectures. Amdahl's Law

pdf

Hands-On

NA

5

Programming Using the Message-Passing Paradigm I

Principles of Message-Passing Programming. Structure of Message-Passing Programs. The Building Blocks: Send and Receive Operations

pdf

Hands-On

NA

6

Programming Using the Message-Passing Paradigm II

MPI: the Message Passing Interface. Starting and Terminating the MPI Library. Communicators and communication in MPI. Getting Information. Sending and Receiving Messages. Avoiding Deadlocks. Sending and Receiving Messages Simultaneously

pdf

Hands-On

NA

8

Programming Using the Message-Passing Paradigm III

Parallelization Application Example - Pi Computation

pdf


NA

9

Programming Using the Message-Passing Paradigm IV

MPI: Message Passing Interface. Overlapping Communication with Computation. Collective Communication and Computation Operations. Broadcast, Reduction, Gather, Scatter, All-to-All

pdf

Hands-On

NA

10

Programming Using the Shared Memory Paradigm I

What is a Thread? Threads Model. Why Threads? Thread Basics: Creation and Termination, Passing Arguments, Joining

pdf

Hands-On

NA

11

Programming Using the Shared Memory Paradigm II

Getting started with OpenMP: a Standard for Directive Based Parallel Programming. Worksharing directives

pdf

Hands-On

NA

12

Beyond OpenMP and MPI

GPU parallelization. GPUs: Introduction and Architecture. Execution and programming models. Introduction to CUDA

pdf

Hands-On

NA

13

MPI + OpenMP

OpenMP, MPI and Accelerators overview

pdf

html

NA

14

Introduction to CUDA and OpenCL

pdf

html

NA

Exams

7

Take-home Midterm Examination

Solutions:

pdf

pdf

html

html

15

Take-home Final Examination

June 20, 2023 02:44 PM Grades

pdf

html


Back to top

References (other than text books)


Back to top