中科曙光HPC培训教程汇总:D29-并行编程—OpenMP程序设计.pptxVIP

  • 37
  • 0
  • 约8.14千字
  • 约 65页
  • 2021-02-26 发布于安徽
  • 举报

中科曙光HPC培训教程汇总:D29-并行编程—OpenMP程序设计.pptx

OpenMP程序设计;;?;OpenMP组成;程序员 串行程序正确、稳定 找出最耗时的循环 在串行程序上添加OpenMP导语;术语;;#pragma omp parallel [子语,[子语…]] 结构块 开启一个并行区域,多个线程冗余执行结构块 只有放在本区域内的代码才可能并行执行 ;#pragma omp for [子语,[子语…]] C语言的for循环 将循环的所有迭代步分摊到各个线程上 必须放在一个omp parallel区域内, 才能正真并行执行 子语用来控制数据属性、条件操作、 归约操作 … ;OpenMP数据管理;共享存储编程概述 OpenMP基本概念 导语和条件编译 构造并行区域 OpenMP构件(construct) 工作分担构件 组合构件 数据环境 数据属性PRIVATE, SHARED 数据生存期子语 其它子语 运行时库函 运行环境子函数 计时子函数 ;多CPU共享统一内存空间 单一内存地址 多个存储器模块 各CPU执行相同或不同指令 任何CPU直接访问任何内存地址 共享内存实现通信 可扩展性差 多CPU同时访问共享全局变量时,产生内存竞争,严重影响效率 适合中小规模计算或事务处理 ;共享存储器编程标准 Pthreads X3H5 OpenMP(最流行) 共享存储器编程特点 显式多线程库调用.(Pthreads). 编译指令(编译制导语句),OpenMP等. 语言 C/C++,Fortran77,Fortran90/95 …;POSIX1003.4a小组研究多线程编程标准. 当标准完成后,大多数支持多线程的系统都支持POSIX接口.很好的改善了多线程编程的可移植性. IEEE Portable Operating System Interface, POSIX, 1003.1-1995标准:POSIX线程模型:pthreads. Pthreads主要面向操作系统, 不是为高性能计算设计 “多线程并发执行”的思想被广泛地应用于高性能计算;X3H5是ANSI/X3授权的小组委员会,主要目的是在PCF(the Parallel Computing Forum)工作的基础上,发展并行计算的一个ANSI标准. PCF是一非正式的工业组织,虽在DO循环的并行化方法的标准化方面做一些工作,但在起草拟了一个标准后就草草收场. OpenMP专门针对这类并行化问题,并完成了这项工作,同时得到工业界的广泛支持. ;The OpenMP Architecture Review Board;OpenMP规范;OpenMP基本概念;术语;?;#pragma omp parallel 结构块 导语对directive-pair,创建/开启和销毁/关闭一个并行区域 #pragma omp parallel write(*,*) Hello world! 紧跟着导语的结构块代码被所有线程并行执行,并行区域之外的代码称为串行区域,仅被主线程执行 每个线程都有一个编号“线程号thread number”, Np个线程编号为0~Np-1, 主线程的编号为0 需要并行执行的代码必须放在某个并行区域内 ; // t5.c #includestdio.h int main() { printf(-----------\n); #pragma omp parallel printf(Hello\n); printf(============\n); return 0; }; // t5-2.c #includestdio.h int main() { printf(-----------\n); #pragma omp parallel { printf(Hello1\n); printf(Hello2\n); } printf(============\n); return 0; };Hello执行过程;导语后面可以跟子语,用于指定并行区域的某些特性 #pragma omp parallel clause1 clause2 ... 结构块 #pragma omp后面可以跟的子语(详述在后) if(scalar-expression) num_threads(integer-expression ) default(shared | none) private(list) firstprivate(list) shared(list) copyin(list) reduction(operator : list);并行区域在结构块后结束,各线程的本地变量(或称为私用变量)被销毁,主线程之外的所有线程都被杀死 关闭并行区域前,主线程等待其它线程到达,实际上,这

文档评论(0)

1亿VIP精品文档

相关文档