OpenMP并行编程.pptVIP

  1. 1、本文档共62页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OpenMP并行编程.ppt

OpenMP 并行编程 内容提要 并行程序设计模型 隐式并行 数据并行 共享变量 消息传递 并行编程模型 并行化方法 并行化方法 并行化方法 并行化方法 并行算法设计原则 并行程序设计步骤 内容提要 OpenMP 简介 OpenMP 简介 OpenMP 运行模式 Fork-Join Fortran 举例 C 举例 OpenMP 说明 OpenMP 说明 编译制导 编译制导指令 编译制导指令 编译制导指令 编译制导指令 编译制导指令 OpenMP子句 OpenMP子句 OpenMP子句 并行域 !OMP PARALLEL PARALLEL举例 PARALLEL举例 PARALLEL举例 工作共享指令 !OMP DO !OMP DO SCHEDULE 高速缓存 cache SCHEDULE SCHEDULE方式 SCHEDULE方式 SCHEDULE图例 SCHEDULE图例 DO 举例 DO 举例 数据竞争 PRIVATE/SHARED PRIVATE/SHARED REDUCTION REDUCTION 举例:PI PI 串行程序 PI 并行程序 PI 并行程序 PI 并行程序 作业 数据作用域属性字句 Data Scope Attribute Clauses 指定一个或多个变量为私有变量, 并且私有变量在进入并行域时,将主线程中的同名变量的值作为初值 FIRSTPRIVATE(list) 指定将线程中的私有变量的 “最后” 的值在并行处理结束后复制到主线程中的同名变量中 LASTPRIVATE(list) 配合 THREADPRIVATE,用主线程同名变量的值对 THREADPRIVATE 的变量进行初始化 COPYIN(list) 配合 SINGLE,将 SINGLE 块中串行计算得到的变量值广播到并行域中其它线程的同名变量中 COPYPRIVATE(list) 指定一个或多个变量是私有的,并且在并行处理结束后对这些变量执行指定的归约操作(如求和),并将结果返回给主线程中的同名变量 REDUCTION(op:list) 其它字句 忽略并行线程或其它制导指令中暗含的障碍同步 NOWAIT 指定循环任务的分配规则 SCHEDULE(type,chunk) 条件并行,满足指定条件时才执行相关操作 IF(log_expr) 指定并行域内线程的个数 NUM_THREADS(int_expr) 指定循环内的代码要按顺序执行 ORDERED PARALLEL 指令 产生多个线程,即创建一个并行域 并行域内的代码将被多个线程并行执行 并行域可以嵌套 并行域结束后,将回到主线程 并行域的设置与管理 #pragma omp parallel [clause clause ...] { structured-block } C/C++ !$omp parallel [clause clause ...] structured-block !$omp end parallel Fortran 结尾处有隐式同步,可用的子句(clause)包括: if (scalar-logical-expression) num_threads(scalar-integer-expression) default(private | shared | none) private(list) firstprivate(list) shared(list) copyin(list) reduction({op|intrinsic} : list) 子句用来添加一些补充信息。若有多个,则用空格隔开。 若没有指定线程个数,则产生最大可能的线程个数。 PROGRAM hello !$OMP PARALLEL write (*,*) “Hello” !$OMP END PARALLEL END PROGRAM Thread 0 Thread 0 write(*,*) “hello” Thread 1 write(*,*) “hello” Thread N write(*,*) “hello” ... 串行域 并行域 如果不指定线程数,则开启尽可能多的线程 PROGRAM hello !$OMP PARALLEL NUM_THREADS(4) write(*,*) Hello Math !$OMP END PARALLEL END PROGRAM hello NUM_THREADS(int_expr) 指定产生的线程个数 !$OMP PARALLEL NUM_THREADS(4) 以下写法等价 !$OMP PARALLEL !$OMP NUM_THREADS(4) !$O

您可能关注的文档

文档评论(0)

lingyun51 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档