已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OpenMP程序设计 什么是OpenMP 应用编程接口API(Application Programming Interface ) 由三个基本API部分(编译指令、运行部分和环境变量)构成 是C/C+ 和Fortan等的应用编程接口 OpenMP使用Fork-Join并行执行模型 编译制导OpenMP的#pragma语句的格式为 #pragma omp directive_name #pragma omp 制导指令前缀。对所有的OpenMP语句都需要这样的前缀。 directive-name OpenMP制导指令。在制导指令前缀和子句之间必须有一个正确的OpenMP制导指令。 并行域结构 并行域中的代码被所有的线程执行 具体格式 #pragma omp parallel clause,clausenewline 并行域中的代码被所有的线程执行 具体格式 #pragma omp parallel clause,clausenewline共享任务结构 共享任务结构将它所包含的代码划分给线程组的各成员来执行 并行for循环 并行sections 串行执行for编译制导语句 for语句指定紧随它的循环语句必须由线程组并行执行; 语句格式 #pragma omp for clause,clause newlineSections编译制导语句 sections编译制导语句指定内部的代码被划分给线程组中的各线程 不同的section由不同的线程执行 Section语句格式:#pragma omp sections clause,clause newline #pragma omp section newline #pragma omp section newline single编译制导语句 single编译制导语句指定内部代码只有线程组中的一个线程执行。 线程组中没有执行single语句的线程会一直等待代码块的结束,使用nowait子句除外 语句格式: #pragma omp single clause,clause newline组合的并行共享任务结构parallel for编译制导语句 Parallel for编译制导语句表明一个并行域包含一个独立的for语句 语句格式 #pragma omp parallel for clause newlineparallel sections编译制导语句 parallel sections编译制导语句表明一个并行域包含单独的一个sections语句 语句格式 #pragma omp parallel sections clause newline下面对以上编译制导语句的类型举例:1、 for编译制导语句补充 Schedule(type ,chunk) schedule子句描述如何将循环的迭代划分给线程组中的线程 如果没有指定chunk大小,迭代会尽可能的平均分配给每个线程 type为static,循环被分成大小为 chunk的块,静态分配给线程 type为dynamic,循环被动态划分为大小为chunk的块,动态分配给线程串行执行的程序块为: for(i=0;i+)matct();for(j=0;j+)match();并行的执行为: #pragma omp parallel /由并行组里面的线程组并行执行 #pragma omp for schedule(static,100) / schedule子句可以省for(i=0;i+) match();#pragma omp for schedule(static,100) / schedule子句可以省 for(j=0;j+) match();或者#pragma omp parallel for private(i) / parallel for 后面只能跟一个for循环for (i=0; ; i+) / private说明里面的变量i是各自线程私有的 match(); 2、Sections编译制导语句串行执行的程序块为: for(i=0;i10000;i+)matct();并行的执行为:#pragma omp parallel private(i) #pragma omp sections /代码被划分给线程组中的各线程 #pragma omp section for (i=0;i5000 ; i+) match(); #pragma omp section for (i=5000;isettings 下面 如下图:点击 C/C+ 在Gategory 为General时,在Preprocessor definitions 栏里添加 _USE_INTEL_COMPILER在project options栏里添加 /Qopenmp 。如下图:2、 点击link 在Gategory 为General 时 在Object/library modules 下 添加 libguide.lib3、 在菜单里 选择tools-Intel(R) C+ Compiler Selecttions tool 在弹出的对话框里面 把勾打上 如下图: 4、 在菜单里 选择tools-options-directories 下面分别添加路径 如下面的图:附录一:OpenMP的指令有以下一些: parallel,用在一个代码段之前,表示这段代码将被多个线程并行执行 for,用于for循环之前,将循环分配到多个线程中并行执行,必须保证每次循环之间无相关性。 parallel for, parallel 和 for语句的结合,也是用在一个for循环之前,表示for循环的代码将被多个线程并行执行。sections,用在可能会被并行执行的代码段之前parallel sections,parallel和sections两个语句的结合critical,用在一段代码临界区之前single,用在一段只被单个线程执行的代码段之前,表示后面的代码段将被单线程执行。flush,barrier,用于并行区内代码的线程同步,所有线程执行到barrier时要停止,直到所有线程都执行到barrier时才继续往下执行。atomic,用于指定一块内存区域被制动更新master,用于指定一段代码块由主线程执行ordered, 用于指定并行区域的循环按顺序执行threadprivate, 用于指定一个变量是线程私有的。OpenMP除上述指令外,还有一些库函数,下面列出几个常用的库函数:omp_get_num_procs, 返回运行本线程的多处理机的处理器个数。omp_get_num_threads, 返回当前并行区域中的活动线程个数。omp_get_thread_num,返回线程号omp_set_num_threads,设置并行执行代码时的线程个数omp_init_lock, 初始化一个简单锁omp_set_lock, 上锁操作omp_unset_lock, 解锁操作,要和omp_set_lock函数配对使用。omp_destroy_lock, omp_init_lock函数的配对操作函数,关闭一个锁OpenMP的子句有以下一些private, 指定每个线程都有它自己的变量私有副本。firstprivate,指定每个线程都有它自己的变量私有副本,并且变量要被继承主线程中的初值。lastprivate,主要是用来指定将线程中的私有变量的值在并行处理结束后复制回主线程中的对应变量。reduce,用来指定一个或多个变量是私有的,并且在并行处理结束后这些变量要执行指定的运算。nowait,忽略指定中暗含的等待num_threads,指定线程的个数schedule,指定如何调度for循环迭代shared,指定一个或多个变量为多个线程间的共享变量ordered,用来指定for循环的执行要按顺序执行copyprivate,用于single指令中的指定变量为多个线程的共享变量copyin,用来指定一个threadprivate的变量的值要用主线程的值进行初始化。defau
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泗洪中专英语试卷及答案
- 高危妊娠的护理题目及答案
- 康复护理报道题目及答案
- 美学原理形考试题及答案
- 护士护理段位考试题及答案
- 化学老师笔试题库及答案
- 南京环保局招聘笔试题及答案
- 2025年空调维修题库及答案
- 2025年体育教师资格考试题及答案
- 2025年《资料员》考试题库及答案
- (完整)机械制造工艺学试题及答案
- 海上风电基础知识培训课件
- 数字经济知识培训内容课件
- 2025年医疗器械临床试验质量管理规范培训考试试题及答案
- 国际道路应急预案
- 人防指挥所信息化建设方案
- 生死疲劳阅读报告课件
- 胸椎管狭窄症诊疗规范
- 2025年银行从业资格考试真题试卷:银行财务会计案例分析
- 2025年国家管网集团高校毕业生招聘945人正式启动笔试参考题库附带答案详解
- 夜班护士安全培训内容课件
评论
0/150
提交评论