Parallel Programming in C for Multiprocessor 多處理機平行程式設計

13
Parallel Programming in C Parallel Programming in C for Multiprocessor for Multiprocessor 多多多多多多多多多多 多多多多多多多多多多 多多多 多多多多多多多多多

description

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 - PowerPoint PPT Presentation

Transcript of Parallel Programming in C for Multiprocessor 多處理機平行程式設計

Page 1: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

Parallel Programming in C for Parallel Programming in C for MultiprocessorMultiprocessor多處理機平行程式設計多處理機平行程式設計

朱治平

成功大學資訊工程系

Page 2: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

QuestionsQuestionsWhat is parallel computing?What is a parallel computer? - multicomputers - centralized multiprocessors (symmetrical

multiprocessor or SMP)What is parallel programming? - algorithm level - statement levelIs parallel programming really necessary?Why should I program using MPI (Message

Passing Interface) and OpenMP?

Page 3: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

Areas with complex scientific Areas with complex scientific problemsproblemsQuantum chemistry, statistical

mechanics, and relativistic physicsCosmology and astrophysicsComputational fluid dynamics and

turbulenceMaterial design and superconductivityBiology, Pharmacology, genome

sequencing, genetic engineering, protein folding, enzyme activity, cell modeling

Medicine, and modeling of human organsGlobal weather and environmental

modeling

Page 4: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

Other state-of-the-art parallel Other state-of-the-art parallel programming modelsprogramming models

Cuda (proposed by Nvidia) - in GPGPU environment - C and C-extended syntax

MapReduce (proposed by Google) - for data set specific parallel

applications

Page 5: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

Course ObjectiveCourse 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.

Page 6: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

6

PrerequisitesPrerequisites

Program DesignData Structures (Helpful)Algorithms (Helpful)Computer Architecture (Helpful)Operating Systems (Helpful)

Page 7: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

7

GradingGrading

Homework (50%) - Parallel Programming - Hand-written Assignments

Final Exam (30%)Final Project (20%)

Page 8: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

Lab ExercisesLab Exercises1. Building a cluster (2 persons/team)2. Distributed memory programming in MPI - Algorithm-level parallel programming - Statement-level parallel programming - Transforming a sequential program into a

parallel program3. Shared memory programming with OpenMP4. Parallel programming with hybrid

MPI/OpenMP5. Learning the use of parallel tools to analyze sequential program

Page 9: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

Grading criteria for parallel Grading criteria for parallel programmingprogramming

Coding standard (30%)Correctness (40%)Performance (Speedup) (30%)

Page 10: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

Teaching AssistantTeaching Assistant

姓名 : 朱嘉葦 ( 碩二 )Office: 雲平大樓五樓 510 室 ( 軟體發展實驗室 )Email: [email protected]

Page 11: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

Reference BooksReference Books1. 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

Page 12: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

Web SiteWeb Site

12

http://casd.csie.ncku.edu.tw/

資工系 軟體發展實驗室網頁

Page 13: Parallel Programming in C for Multiprocessor 多處理機平行程式設計

DemonstrationDemonstration

Finding a shortest path by using ant algorithm

- sequential version - parallel version