130 likes | 333 Views
Parallel Programming in C for Multiprocessor 多處理機平行程式設計. 朱治平 成功大學資訊工程系. Questions. What is parallel computing? What is a parallel computer? - multicomputers - centralized multiprocessors (symmetrical multiprocessor or SMP) What is parallel programming? - algorithm level
E N D
Parallel Programming in C for Multiprocessor多處理機平行程式設計 朱治平 成功大學資訊工程系
Questions • What is parallel computing? • What is a parallel computer? - multicomputers - centralized multiprocessors (symmetrical multiprocessor or SMP) • What is parallel programming? - algorithm level - statement level • Is parallel programming really necessary? • Why should I program using MPI (Message Passing Interface) and OpenMP?
Areas with complex scientific problems • Quantum chemistry, statistical mechanics, and relativistic physics • Cosmology and astrophysics • Computational fluid dynamics and turbulence • Material design and superconductivity • Biology, Pharmacology, genome sequencing, genetic engineering, protein folding, enzyme activity, cell modeling • Medicine, and modeling of human organs • Global weather and environmental modeling
Other state-of-the-art parallel programming models • Cuda (proposed by Nvidia) - in GPGPU environment - C and C-extended syntax • MapReduce (proposed by Google) - for data set specific parallel applications
Course Objective To train a student to be with the capability of (1) building a cluster of computers supporting parallel execution of program, and (2) programming parallel computers based on parallel algorithms and/or parallel statements in order to solve time-consuming scientific problems.
Prerequisites Program Design Data Structures (Helpful) Algorithms (Helpful) Computer Architecture (Helpful) Operating Systems (Helpful) 6
Grading Homework (50%) - Parallel Programming - Hand-written Assignments Final Exam (30%) Final Project (20%) 7
Lab Exercises • Building a cluster (2 persons/team) • Distributed memory programming in MPI - Algorithm-level parallel programming - Statement-level parallel programming - Transforming a sequential program into a parallel program • Shared memory programming with OpenMP • Parallel programming with hybrid MPI/OpenMP • Learning the use of parallel tools to analyze sequential program
Grading criteria for parallel programming • Coding standard (30%) • Correctness (40%) • Performance (Speedup) (30%)
Teaching Assistant 姓名: 朱嘉葦 (碩二) Office: 雲平大樓五樓510室(軟體發展實驗室) Email: chiaweishine@gmail.com
Reference Books 1. Parallel Programming in C with MPI and OpenMP Michael J. Quinn Mc Graw Hill Company 2. Using OpenMP: Portable Shared Memory Parallel Programming Barbara Chapman, Gabriele Jost, Ruud van der Pas The MIT Press
Web Site http://casd.csie.ncku.edu.tw/ 資工系 軟體發展實驗室網頁 12
Demonstration • Finding a shortest path by using ant algorithm - sequential version - parallel version