版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020年8月12日,1,MIPSpro 的自动并行功能MIPSpro Auto-Parallelizing Option(APO),么石磊 SGI Asia-Pacific Technology Network Beijing, PRC,2020年8月12日,2,APO概述,MIPSpro APO是MIPSpro编译器的扩展,并融合到其中 MIPSpro APO 不是源到源的预编译器 不需要或很少需要人为的干预,2020年8月12日,3,激活APO,使用-apo选项 使用-pfa选项 f77 options -apo list|keep -mplist filename f90 option
2、s -apo list|keep filename cc options -apo list|keep -mplist filename CC options -apo list|keep filename,2020年8月12日,4,Options,-apo -apo list 产生.l文件 -apo keep 产生.l,.w2f.f或.w2c.c,.m,和 .anl文件 -mplist 产生.w2f.f或.w2c.c文件,2020年8月12日,5,APO注意事项,APO只能用于-n32, -64和-n64的编译器 如果分别链接,命令行需要下列选项之一 -apo,-mp 下面选项不能同时使用:
3、 -apo keep -mplist,2020年8月12日,6,APO的输出文件,.l文件 .w2f.f文件和.w2c.c文件 .m文件和.anl文件,2020年8月12日,7,Example,2020年8月12日,8,.l文件,2020年8月12日,9,.w2f.f文件和.w2c.c文件,2020年8月12日,10,.m文件和.anl文件,2020年8月12日,11,程序运行,设置环境变量: setenv OMP_DYNAMIC FALSE setenv OMP_NUM_THREADS n,2020年8月12日,12,MIPSpro APO 的辅助功能,辅助APO的方法 自动并行编译制导语句
4、,2020年8月12日,13,为什么APO需要辅助?,实际编程中不利于自动并行的问题: 循环中调用函数 循环中使用GOTO语句 不明确的数组下标,2020年8月12日,14,辅助APO的方法,改动程序结构,使之便于APO编译器分析 在源程序中加入人工并行制导语句(manual parallelization directives) 在源程序中加入自动并行编译制导语句(automatic parallelization compiler directives),2020年8月12日,15,自动并行编译制导语句,C*$*NO CONCURRENTIZE C*$*CONCURRENTIZE C*$*
5、ASSERT DO(CONCURRENT) C*$*ASSERT DO(SERIAL) C*$*ASSERT CONCURRENT CALL C*$*ASSERT PERMUTATION C*$*ASSERT DO PREFER(CONCURRENT) C*$*ASSERT DO PREFER(SERIAL),2020年8月12日,16,C*$*NO CONCURRENTIZE,作用:阻止循环并行执行,其作用域取决于其所在的位置: 位于子程序或函数中 位于子程序或函数外,2020年8月12日,17,C*$*CONCURRENTIZE,作用:克服C*$*NO CONCURRENTIZE的影响 用
6、法:放在子程序内,指明该子程序内部的循环需并行执行,2020年8月12日,18,C*$*ASSERT DO(CONCURRENT),作用:指定下面的循环并行执行 注意事项: 使用不当可能会产生错误的执行码 对于一个循环内部的多个循环,该语句指定紧随其后的循环并行执行 如果指定一个内部循环并行执行,编译器可能将该循环提到最外层 不影响编译器对循环内CALL的分析 该语句在不使用-apo选项时仍然起作用 如果存在明显的依赖关系,编译器将忽略该语句,2020年8月12日,19,Example forC*$*ASSERT DO(CONCURRENT),C*$*ASSERT DO(CONCURRENT)
7、 DO I = 1, N A(I) = A(I + M) END DO,2020年8月12日,20,C*$*ASSERT DO(SERIAL),作用:指定紧随其后的循环串行执行,对其它循环不起作用,2020年8月12日,21,C*$*ASSERT CONCURRENT CALL,作用:忽略循环内CALL调用对并行处理的影响 注意事项: 作用域:作用于紧随其后的循环及该循环内部的所有循环 使用不当可能会产生错误的执行码 该语句在不使用-apo选项时仍然起作用,2020年8月12日,22,Example forC*$*ASSERT CONCURRENT CALL,C*$* ASSERT CONCU
8、RRENT CALL DO I = 1, M CALL FRED(B, I, T) CALL WILMA(A, I, T) END DO SUBROUTINE FRED(B, I, T) REAL B(*) T = B(I) END SUBROUTINE WILMA(A, I,T) REAL A(*) A(I) = T END,2020年8月12日,23,Example forC*$*ASSERT CONCURRENT CALL,C$ DOACROSS SHARED(A,B), LOCAL(I,T) C*$* ASSERT CONCURRENT CALL DO I = 1, M CALL FR
9、ED(B, I, T) CALL WILMA(A, I, T) END DO SUBROUTINE FRED(B, I, T) REAL B(*) T = B(I) END SUBROUTINE WILMA(A, I,T) REAL A(*) A(I) = T END,2020年8月12日,24,C*$*ASSERT PERMUTATION,用法: C*$*ASSERT PERMUTATION(arr) 作用:为编译器指明数组arr的每个元素都有不同的值 注意事项: 作用域:整个子程序内部 该语句在不使用-apo选项时仍然起作用,2020年8月12日,25,Example for C*$*AS
10、SERT PERMUTATION,SUBROUTINE SUB1 DO I = 1, N A(IB(I) = END DO C*$*ASSERT PERMUTATION(IB) DO I = 1, N A(IB(I) = END DO END,2020年8月12日,26,C*$*ASSERT DO PREFER(CONCURRENT),作用:建议编译器对该语句后面的循环进行并行处理 注意事项: 不会因为该语句的存在而对不安全的循环进行并行处理 优先并行紧随其后的循环 如果编译器认为该语句指定的循环不能安全并行,则考虑并行处理后面的循环 如果指定一个内部循环并行执行,编译器可能将该循环提到最外层,2020年8月12日,27,C*$*ASSERT DO PREFER(SERIAL),作用:该语句建议编译器对紧随其后的循环进行串行处理,D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年宠物活动监测器项目可行性研究报告
- 2026年多色智能氛围灯带项目可行性研究报告
- 2026年医学基础概念及常识练习题
- 青岛市黄岛区法院系统招聘考试真题2025
- 2026年执业医师考试药理学重点题目集
- 2025-2026学年青岛版(新教材)小学科学二年级下册教学计划及进度表
- 2026年税务师考试题库税法实务与税收筹划
- 2026年工程项目管理项目计划与成本控制管理题库
- 银行智能交易系统
- 自噬衰老关联
- GB/T 13320-2025钢质模锻件金相组织评级图及评定方法
- 深海资源勘探中的分布式感知系统布设与效能评估
- 航天禁(限)用工艺目录(2021版)-发文稿(公开)
- DLT 572-2021 电力变压器运行规程
- CB-T-4459-2016船用七氟丙烷灭火装置
- 邻近铁路营业线施工监测技术规程编制说明
- 金相分析原理及技术
- 无责任人道主义赔偿协议书
- 老年人跌倒风险评估和防止措施
- 国家职业技术技能标准 6-23-03-06 航空附件装配工 人社厅发202226号
- Q-CR 864.4-2021 列控中心接口规范 第4部分:列控中心与地面电子单元接口(串行通信)
评论
0/150
提交评论