Welcome, Guest . Login . Türkçe
Where Am I: Ninova / Courses / Institute of Informatics / HBM 513E / Course Informations
 

Course Information

Course Name
Turkish Paralel ve Dağıtık Hesaplama
English Parallel&Distributed Comput.
Course Code
HBM 513E Credit Lecture
(hour/week)
Recitation
(hour/week)
Laboratory
(hour/week)
Semester -
3 - - -
Course Language English
Course Coordinator Mustafa Serdar Çelebi
Course Objectives Parallel computing is a broad field of computer science concerned with the architecture, HW/SW systems, languages, programming paradigms, algorithms, and theoretical models that make it possible to compute in parallel. While parallel programming and execution can be studied in the abstract, performance is parallelism's raison d'être. Indeed, parallel computing is the name of the game in high-performance computing. Large-scale parallelism (>10000 processors) lies at the heart of the fastest, most powerful computing systems in the world today. At the same time, small-scale, low-end parallelism is the driving force behind affordable scientific computing and the growing success of computational science.
This class will survey recent advances in parallel algorithms for scientific computing and will aim to discover their impact on improving performance of scientific applications. Since students come from different backgrounds, Lectures will attempt to emphasize an even spread of topics in parallel algorithm design, numerical methods, computer architecture, software and runtime environments. Students will spend time on particular parallel algorithms for scientific problems and their implementations on parallel and distributed machines.
We are going to concentrate upon the message-passing methods of parallel computing and use some standard parallel computing tools such as MPI (Message Passing Interface), OpenMP (Directive-based Threading) for SMP and Distributed Shared-memory Computer Architectures. Basic MPI based parallel algorithms will be practiced through p2p and collective communication messaging. Parallelization of numerical algorithms will be studied and written with both MPI and OpenMP. Finally, students will experience the fundamentals of different approaches to create and manage the parallelism in order to exploit the benefit of state-of-the-art computing technologies.
Course Description TENTATIVE CONTENT

Week 1: Introduction

? Introduction to computational science
? What is parallelism?
? Why we need powerful computers?
? Units of measure in HPC
? Why powerful computers are parallel?
? Principles of parallel computing
? Locality and parallelism
? The Flynn Taxonomy
? Custer Server Systems
? I/O Needs on Parallel Computers, RAID Concept
? Parallel File Systems
? Driving issues/Trends on CPU
? Introduction to Eclipse

Week 2: Parallel Computing Architectures

? Parallel Programming Models
? Performance
? Speedup factor and efficiency, Amdahl’s and Gustafson’s Laws
? Types of Parallel Computers: Shared Memory Multiprocessor
? Programming Shared Memory Multiprocessors
? Multiprocessor Interconnection Networks
? Distributed Shared Memory
? Network: Latency and Bandwidth

LAB 1: Introduction to HPC Systems: Login and Environmental Setup

Week 3: OS and Memory Hierarchy

? Operating System and Distributed OS
? Linux System process
? Memory hierarchies
? Cache basics
? Application: Matrix multiplication
? Latency
? Impact of memory bandwidth
? Multilevel caches
? Introduction to cache coherence

LAB 2: Introduction to HPC Systems: Unix/Linux Development Tools for HPC

Week 4: Caches, Virtual Memory and Programming Performance

? Cache mapping
? Direct-Mapped cache
? Set Associative cache
? Fully Associative cache
? Replacement Algorithms
? Cache Performance Metrics
? Virtual memory
? Address translation
? Accelerating with TLB’s
? How architecture impacts your programs
? How (and how not) to tune your code

LAB 3: Eclipse I: Software Development Environment

Week 5: Message Passing Computing I

? SIMD and MIMD model
? Point-to-point send and receive communications
? Synchronous and asynchronous message passing
? Simple MPI examples
? Basics of collective communications
? Evaluating parallel programs

LAB 4: Eclipse II: Parallel Tool Platform

Week 6: Message Passing Computing II

? Buffered and non-buffered point-to-point communication
? Collective communications

LAB 5: Intel Software Tools I: Compiler, debugger, profiler and analyzer

Week 7: Parallel Techniques I

? Performance issues
? Embarrassingly Parallel Computations
? Ideal Parallel Computation
? Embarrassingly Parallel Examples

LAB 6: MPI I: Introduction, simple algorithms, send & receive

Week 8: Parallel Techniques II

? Partitioning and Divide-and-Conquer Strategies
? Pipelined Computations

LAB 7: MPI II: Introduction, simple algorithms, send & receive

Week 9: Parallel Techniques III

? Synchronous Computations
? Synchronization
? Data Parallel Computations
? Synchronous Iteration Program Examples
? Solving a System of Linear Equations by Iteration
? Heat Distribution Problem

LAB 8: MPI III: One-sided communication

Week 10: Parallel Techniques IV

? Load Balancing and Termination Detection
? Dynamic Load Balancing (DLB)
? Centralized DLB
? Decentralized DLB
? Load Balancing Using a Line Structure
? Distributed Termination Detection Algorithms

LAB 9: MPI IV: One-sided communication, collective communication

Week 11: Programming with shared memory I

? Basic shared memory architecture
? Differences between a process and threads
? Accessing shared data
? Shared data in systems with caches
? Cache coherence problem

LAB 10: MPI V: Collective communication

Week 12: Programming with shared memory II

? Introduction to cache coherency
? Snoopy cache coherence
? Directory based cache coherence
? Distributed Directory based cache coherence

LAB 11: Intermediate Compiler, debugger, profiler and analyzer tools

Week 13: Programming with shared memory III

? Introduction to OpenMP
? Directives and variable sharing
? Programming samples
? Multi-core systems and programming

LAB 12: OpenMP I: Introduction

Week 14: Programming with shared memory IV
? Advanced OpenMP
? OpenMP and Machine Architecture
? Performance: Vectorization
? OpenMP for Heterogeneous Computing


LAB 13: OpenMP II: Introduction & Applications

LAB 14: MPI and OpenMP: Applications, Performance and Tuning
Course Outcomes We are going to concentrate upon the message-passing methods of parallel computing and use some standard parallel computing tools such as MPI (Message Passing Interface), OpenMP (Directive-based Threading) for SMP and Distributed Shared-memory Computer Architectures. Basic MPI based parallel algorithms will be practiced through p2p and collective communication messaging. Parallelization of numerical algorithms will be studied and written with both MPI and OpenMP. Finally, students will experience the fundamentals of different approaches to create and manage the parallelism in order to exploit the benefit of state-of-the-art computing technologies.
Pre-requisite(s) Be able to program with C, C++ or Fortran and has a programming experience.
Required Facilities Personal computer. It will be accessed to Supercomputer system for actual programming experience.
Other
Textbook 1) Parallel Programming, Wilkinson Barry & Allen Michael, Prentice Hall, 2nd Edition, 2004.
2) Parallel Programming with MPI, Peter S. Pacheco, Morgan Kaufmann, 1997.
3) Introduction to Parallel Computing, Petersen and Arbenz, Oxford University Press, 2004.
4) Using MPI, William Gropp and Ewing Lusk, A. Skjellum, MIT Press, 1999.
5) MPI- The Complete Reference, Volume 1, The MPI Core, 2nd Edition. Marc Snir, Steve Otto, S.H. Lederman, David Walker and Jack Dongarra, MIT Press, 1998.
6) Using OpenMP, Barbara Chapman, Gabriele Jost and Ruud Van Der Pas, MIT Press, 2008.
7) Introduction to Parallel Computing, 2nd Edition, Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar, Pearson Education, 2003.
8) Parallel Computing in C with MPI and OpenMP, Micheal J. Quinn, Mc. Graw Hill, 2003.
9) Principles of Parallel Programming, Calvin Lin and Lawrence Snyder, Pearson International, 2009.
Other References LAB & SUPPLEMENTARY NOTES

1. Int. to HPC Systems I: Login and Environmental Setup Notes (One Lab)

2. Int. to HPC Systems II: Unix/Linux Development Tools for HPC Notes (One Lab)

3. Supplementary Notes for Code Optimization Techniques

4. Supplementary Notes for Batch Processing

5. Intel Software Tools I and II: Compiler, Debugger, Profiler and Analyser (Two Labs)

6. Eclipse Software Development Environment Notes (One Lab)

7. MPI I, II, III, IV and V Lab Notes (Five Labs)

8. Open MP I and II Lab Notes (Two Labs)

9. MPI Applications and Performance Tuning (One Lab)
 
 
Courses . Help . About
Ninova is an ITU Office of Information Technologies Product. © 2024