并行计算

Similar documents
第7章-并行计算.ppt

2011, Oracle / U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware

并行算法实践

PowerPoint 演示文稿

PowerPoint Presentation

《嵌入式系统设计》教学大纲

untitled

C 1

技术沙龙-OpenMP并行技术

版权所有 2004 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,California 95054, U.S.A. 保留所有权利 美国政府权利 - 商业软件 政府用户应遵守 Sun Microsystems, Inc. 标准许可证协

提纲 1 2 OS Examples for 3

FY.DOC

1

最简单的MPI程序 Hello world(C)

新版 明解C++入門編

Microsoft Word - 第3章.doc

Microsoft PowerPoint - PC13.pptx

第3章.doc

考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09: 二 技 企 管 一 胡 宗 兒 中 文 輸 入 四 技 企 四 甲 林 姿 瑄 中 文 輸 入 二 技 企 管 一

IntelBook_cn.doc

untitled

版权所有 2005 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A. 保留所有权利 美国政府权利 - 商业软件 政府用户应遵循 Sun Microsystems, Inc. 的标准许可

新・解きながら学ぶJava

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

CC213

untitled

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

Java

信 息 披 露 义 务 人 声 明 1 信 息 披 露 义 务 人 依 据 中 华 人 民 共 和 国 公 司 法 中 华 人 民 共 和 国 证 券 法 上 市 公 司 收 购 管 理 办 法 公 开 发 行 证 券 公 司 信 息 披 露 内 容 与 格 式 准 则 第 15 号 权 益 变 动

, (, ),,,,,, : : ( ), :,,,,,,, ( ), ( ),,,,,, ( ) ( ),, :!,,,,,,,,,,,,,,,,,,,,,,, [1 ] :,,,, :, ;, ( ),, :,,,,,,,,,,, 66

untitled

<4D F736F F D203120B8A3BDA8CAA1BDBBCDA8D4CBCAE4CFB5CDB3A1B0C6BDB0B2BDBBCDA8A1B1B4B4BDA8BBEEB6AFCAB5CAA9B7BDB0B82E646F63>

2.1 公 猪 的 引 入 公 猪 健 康 选 择 : 选 择 公 猪 时 必 须 考 虑 其 来 源, 引 进 外 来 公 猪 要 求 从 安 全 系 数 高 的 场 家 选 种 无 特 定 传 染 病, 至 少 半 年 年 确 定 为 无 疫 区, 经 过 抽 血 检 查 合 格 后



深圳市打通断头路三年行动计划

地会字〔2014〕XXX号

51 石 景 山 路 石 景 山 十 万 坪 人 行 横 道 灯 西 向 东 八 角 街 道 段 石 景 山 路 52 石 景 山 路 八 角 路 口 由 西 向 东 八 角 路 口 53 八 角 路 八 角 路 口 东 东 西 双 向 八 角 路 口 东 54 方 庄 路 八 里 河 路 口 北

<4D F736F F D20CAAEC8FDCEE5BABDB5C0D6CEC0EDBDA8C9E8B9E6BBAEBBB7C6C02DBCF2B1BE>

IntelBook_cn.doc

新版 明解C言語入門編

附 件 :2015 年 度 普 通 高 等 学 校 本 科 专 业 备 案 和 审 批 结 果 教 育 部 2016 年 2 月 16 日 抄 送 : 国 家 发 展 改 革 委 财 政 部 国 家 卫 生 计 生 委 国 家 中 医 药 管 理 局 部 内 发 送 : 有 关 部 领 导, 办 公

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

untitled

C++ 程式設計

C/C++ - 字符输入输出和字符确认

ebook

第 2 章 奪 星 應 試 步 驟 全 卷 考 試 時 間 約 1 小 時 30 分 鐘, 同 學 須 處 理 甲 部 聆 聽 及 乙 部 寫 作 兩 部 分, 所 以 大 家 需 要 集 中 精 神 處 理 各 部 分 的 任 務 1. 甲 部 審 題 圈 起 甲 部 聆 聽 題 目 的 關 鍵

PIC_SERVER (11) SMTP ( ) ( ) PIC_SERVER (10) SMTP PIC_SERVER (event driven) PIC_SERVER SMTP 1. E-

CHAPTER VC#

1 LINUX IDE Emacs gcc gdb Emacs + gcc + gdb IDE Emacs IDE C Emacs Emacs IDE ICE Integrated Computing Environment Emacs Unix Linux Emacs Emacs Emacs Un

mvc

华恒家庭网关方案

untitled

目 录(目录名)

Microsoft Word - Wuxi-RAP-Chinese.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

新・解きながら学ぶC言語

Microsoft Word - ch04三校.doc


2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

Microsoft Word - 实用案例.doc

新・明解C言語入門編『索引』

Microsoft Word - 01.DOC

C/C++ - 文件IO

Microsoft PowerPoint - multicore curriculum of sspku.ppt

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

概述

全国计算机技术与软件专业技术资格(水平)考试

前言 编写 OpenMP 编译原理及实现技术 教材是深圳大学 计算机科学与技术国家特色专业建设点 的建设内容之一 该教材和相应课程的设计目的有三点 : 衔接本科 编译原理 课程 扩展 OpenMP 并行语言编译的知识 增强学生的动手实践和编程能力, 书中以 OpenMP 的一个开源编译器 OMPi

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

Chapter 9: Objects and Classes

untitled

untitled

02

第一章 概论

extend

untitled

ebook50-15

自由軟體教學平台

untitled

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

3. 反 映 : 4. 五 花 八 门 : 5. 慷 慨 : 6. 参 与 : 7. 慰 劳 : 8. 延 续 : 9. 珍 爱 : 10. 浪 漫 : 三. 找 出 下 列 每 组 词 中 的 近 义 词 或 同 义 词 : 节 日 节 气 节 令 时 节 习 俗 民 俗 仪 式 风 俗 文 献

51 C 51 isp 10 C PCB C C C C KEIL

C6_ppt.PDF

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

06-4.indd

_汪_文前新ok[3.1].doc

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

Kernel Kernel Kernel Kernel load estimator runqueue kernel/sched.

说 : 荀 子 极 偏 驳, 只 一 句 性 恶, 大 本 已 失 5 朱 熹 说 : 荀 扬 不 惟 说 性 不 是, 从 头 到 底 皆 不 识 6 采 取 的 都 是 这 种 理 论 框 架 另 一 种 理 论 框 架 始 于 20 世 纪 前 期, 这 便 是 诸 子 学 研 究 的 框 架

untitled

ebook 86-15

szj1.s92

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

CHAPTER 1

C/C++语言 - 运算符、表达式和语句

ebook39-5

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

Transcription:

OpenMP OpenMP OpenMP OpenMP OpenMP MPI OpenMP

OpenMP 2006-10-9 2

OpenMP ( ) OpenMP RedHat Linux Intel C OpenMP 2006-10-9 3

OpenMP OpenMP OpenMP OpenMP 2006-10-9 4

RedHat Linux Intel C root intel8.1 chmod +x *.sh install.sh /opt/intel_cc_80/lib/lib* /lib PATH /opt/intel_cc_80/bin/ /opt/intel_cc_80/bin/icc icc 2006-10-9 5

OpenMP F O R K J O I N F O R K J O I N FORK parallel JOIN parallel 2006-10-9 6

( ) ( ) 2006-10-9 7

#include <omp.h> int main(int argc, char *argv[]){ int nthreads, ithread; #pragma omp parallel private(nthreads, ithread) { ithread = omp_get_thread_num(); nthreads = omp_get_num_threads(); #pragma omp critical printf( The %d-th thread of %d threads.\n, ithread, nthreads); } return(0); } 2006-10-9 8

OpenMP OpenMP parallel parallel parallel OpenMP threadprivate 2006-10-9 9

OpenMP C #pragma omp directive-name [clause ][clause ]... new-line Fortran sentinel directive_name [clause, ][clause, ]... sentinel C$OMP *$OMP!$OMP 2006-10-9 10

OpenMP C #ifdef_openmp iam=omp_get_thread_num()+index; #endif Fortran C$ iam=omp_get_thread_num()+index 2006-10-9 11

parallel #pragma omp parallel [clause ][clause ] parallel clause if num_threads (2.0 ) private firstprivate shared default copyin reduction 2006-10-9 12

parallel if( ) num_threads( ) private( ) shared( ) firstprivate( ) private copyin( ) firstprivate threadprivate 2006-10-9 13

parallel ( ) default(shared none) private firstprivate default default(shared) shared ( threadprivate ) default(shared) default(none) ( threadprivate for parallel for ) parallel default 2006-10-9 14

parallel ( ) reduction(op ) op op + * & ^ && op x = x op expr x <binop> = expr x = expr op x ( - ) x++ x-- ++x --x binop + & ^ reduction 2006-10-9 15

private firstprivate reduction shared 2006-10-9 16

parallel for sections single 2006-10-9 17

for #pragma omp for [clause ][clause ] /* for */ clause private firstprivate lastprivate reduction schedule nowait ordered 2006-10-9 18

for clause lastprivate lastprivate firstprivate ordered for ordered nowait for parallel for 2006-10-9 19

for clause ( ) nowait #pragma omp parallel shared(m,n,a,b) { } #pragma omp for schedule(static) nowait for (k = 0; k<n; k++) a[k] = a[k] + 1; #pragma omp for schedule(static) for (k = 0; k<m; k++) b[k] = b[k] * 2; 2006-10-9 20

for clause ( ) schedule(static dynamic guided runtime[, chunk_size]) Schedule(static[, chunk_size]) Schedule(dynamic[, chunk_size]) static Schedule(guided[, chunk_size]) chunk_size Schedule(runtime) OMP_SCHEDULE schedule schedule(runtime) OMP_SCHEDULE OpenMP 2006-10-9 21

for for for break for for for schedule ordered nowait chunk_size 2006-10-9 22

sections #pragma omp sections [clause ][clause ] { [#pragma omp section /* */ ] [#pragma omp section /* */ ] } 2006-10-9 23

sections ( ) Sections clause private firstprivate lastprivate reduction nowait nowait sections nowait section sections 2006-10-9 24

sections ( ) #pragma omp parallel { #pragma omp sections { #pragma omp section { T0(); } #pragma omp section { T1(); } } } 2006-10-9 25

single single #pragma omp single [clause ][clause ] /* */ clause private firstprivate nowait nowait single 2006-10-9 26

Parallel parallel for #pragma omp parallel for [clause ][clause ] /* for */ clause parallel for nowait 2006-10-9 27

Parallel ( ) parallel sections #pragma omp parallel sections [clause ][clause ] { } [#pragma omp section /* */ ] [#pragma omp section /* */ ] 2006-10-9 28

OpenMP barrier master critical atomic flush ordered 2006-10-9 29

barrier #pragma omp barrier if(x==0) #pragma omp barrier if(x==0){ #pragma omp barrier } 2006-10-9 30

master #pragma omp master /* */ single 2006-10-9 31

critical #pragma omp critical [(name)] /* */ (name) 2006-10-9 32

critical ( ) #pragma omp parallel sections { #pragma omp parallel section {/* producer thread */ } task = produce_task(); #pragma omp critical (queue) { } insert_into_queue(task); #pragma omp parallel section {/* consumer thread */ #pragma omp critical (queue) { task = extract_queue(task); } consume_task(task); } } 2006-10-9 33

atomic #pragma omp atomic /* */ x binop = expr ++x x++ --x x-- binop atomic critical atomic x expr 2006-10-9 34

flush #pragma omp flush [( )] barrier flush 2006-10-9 35

flush ( ) flush barrier critial ordered parallel for sections single 2006-10-9 36

ordered ordered #pragma omp ordered /* */ for parallel for ordered 2006-10-9 37

ordered ( ) ordered for parallel for ordered 2006-10-9 38

threadprivate #pragma omp threadprivate ( ) parallel parallel threadprivate if copyin schedule default threadprivate parallel copyin 2006-10-9 39

parallel OMP_NESTED FALSE parallel for sections single critical critical ordered master for sections single 2006-10-9 40

( ) for sections single ordered master critical barrier for sections single master critical ordered 2006-10-9 41

OpenMP omp.h 2006-10-9 42

void omp_set_num_threads(int num_threads) int omp_get_num_threads(void) int omp_get_max_threads(void) int omp_get_thread_num(void) int omp_get_num_procs(void) 2006-10-9 43

( ) int omp_in_parallel(void) void omp_set_dynamic(int dynamic_threads) int omp_get_dynamic(void) void omp_set_nested(int nested) int omp_get_nested(void) 2006-10-9 44

void omp_init_lock(omp_lock_t *lock) void omp_init_nest_lock(omp_nest_lock_t *lock) void omp_destroy_lock(omp_lock_t *lock) void omp_destroy_nest_lock(omp_nest_lock_t *lock) void omp_set_lock(omp_lock_t *lock) void omp_set_nest_lock(omp_nest_lock_t *lock) 2006-10-9 45

( ) void omp_unset_lock(omp_lock_t *lock) void omp_unset_nest_lock(omp_nest_lock_t *lock int omp_test_lock(omp_lock_t *lock) int omp_test_nest_lock(omp_nest_lock_t *lock) 2006-10-9 46

OpenMP OMP_SCHEDULE OMP_NUM_THREADS OMP_NESTED OMP_DYNAMIC 2006-10-9 47

OMP_SCHEDULE schedule(runtime) for parallel for setenv OMP_SCHEDULE \ static dynamic guide[, chunk_size] 1 setenv OMP_SCHEDULE static 2 setenv OMP_SCHEDULE guided,4 2006-10-9 48

OMP_NUM_THREADS setenv OMP_NUM_THREADS num_threads OMP_NUM_THREADS omp_set_num_threads parallel parallel for num_threads OMP_DYNAMIC TRUE omp_set_dynamic 2006-10-9 49

OMP_NESTED setenv OMP_NESTED TRUE FALSE parallel parallel for parallel sections 2006-10-9 50

OMP_DYNAMIC setenv OMP_DYNAMIC TRUE FALSE 2006-10-9 51

MPI OpenMP OpenMP MPI 2006-10-9 52

OpenMP OpenMP OpenMP 2006-10-9 53

( ) OpenMP OpenMP 2006-10-9 54

MPI MPI 2006-10-9 55

OpenMP MPI SMP SMP MPI OpenMP 2006-10-9 56