的自动并行功能

的自动并行功能

ID:43530674

大小:616.50 KB

页数:28页

时间:2019-10-10

的自动并行功能_第1页
的自动并行功能_第2页
的自动并行功能_第3页
的自动并行功能_第4页
的自动并行功能_第5页
资源描述:

《的自动并行功能》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MIPSpro的自动并行功能MIPSproAuto-ParallelizingOption(APO)么石磊SGIAsia-PacificTechnologyNetworkBeijing,PRC2021/7/181APO概述MIPSproAPO是MIPSpro编译器的扩展,并融合到其中MIPSproAPO不是源到源的预编译器不需要或很少需要人为的干预2021/7/182激活APO使用-apo选项使用-pfa选项f77options-apo[{list

2、keep}][-mplist]filenamef90options-apo[{list

3、keep}]fil

4、enameccoptions-apo[{list

5、keep}][-mplist]filenameCCoptions-apo[{list

6、keep}]filename2021/7/183Options-apo-apolist产生.l文件-apokeep产生.l,.w2f.f或.w2c.c,.m,和.anl文件-mplist产生.w2f.f或.w2c.c文件2021/7/184APO注意事项APO只能用于-n32,-64和-n64的编译器如果分别链接,命令行需要下列选项之一-apo,-mp下面选项不能同时使用:-apokeep-mplist2021/7/18

7、5APO的输出文件.l文件.w2f.f文件和.w2c.c文件.m文件和.anl文件2021/7/186Example2021/7/187.l文件2021/7/188.w2f.f文件和.w2c.c文件2021/7/189.m文件和.anl文件2021/7/1810程序运行设置环境变量:setenvOMP_DYNAMICFALSEsetenvOMP_NUM_THREADSn2021/7/1811MIPSproAPO的辅助功能辅助APO的方法自动并行编译制导语句2021/7/1812为什么APO需要辅助?实际编程中不利于自动并行的问题:循环中调用函数循环中使用

8、GOTO语句不明确的数组下标2021/7/1813辅助APO的方法改动程序结构,使之便于APO编译器分析在源程序中加入人工并行制导语句(manualparallelizationdirectives)在源程序中加入自动并行编译制导语句(automaticparallelizationcompilerdirectives)2021/7/1814自动并行编译制导语句C*$*NOCONCURRENTIZEC*$*CONCURRENTIZEC*$*ASSERTDO(CONCURRENT)C*$*ASSERTDO(SERIAL)C*$*ASSERTCONCURRE

9、NTCALLC*$*ASSERTPERMUTATIONC*$*ASSERTDOPREFER(CONCURRENT)C*$*ASSERTDOPREFER(SERIAL)2021/7/1815C*$*NOCONCURRENTIZE作用:阻止循环并行执行,其作用域取决于其所在的位置:位于子程序或函数中位于子程序或函数外2021/7/1816C*$*CONCURRENTIZE作用:克服C*$*NOCONCURRENTIZE的影响用法:放在子程序内,指明该子程序内部的循环需并行执行2021/7/1817C*$*ASSERTDO(CONCURRENT)作用:指定下面

10、的循环并行执行注意事项:使用不当可能会产生错误的执行码对于一个循环内部的多个循环,该语句指定紧随其后的循环并行执行如果指定一个内部循环并行执行,编译器可能将该循环提到最外层不影响编译器对循环内CALL的分析该语句在不使用-apo选项时仍然起作用如果存在明显的依赖关系,编译器将忽略该语句2021/7/1818Examplefor C*$*ASSERTDO(CONCURRENT)C*$*ASSERTDO(CONCURRENT)DOI=1,NA(I)=A(I+M)ENDDO2021/7/1819C*$*ASSERTDO(SERIAL)作用:指定紧随其后的循环串

11、行执行,对其它循环不起作用2021/7/1820C*$*ASSERTCONCURRENTCALL作用:忽略循环内CALL调用对并行处理的影响注意事项:作用域:作用于紧随其后的循环及该循环内部的所有循环使用不当可能会产生错误的执行码该语句在不使用-apo选项时仍然起作用2021/7/1821Examplefor C*$*ASSERTCONCURRENTCALLC*$*ASSERTCONCURRENTCALLDOI=1,MCALLFRED(B,I,T)CALLWILMA(A,I,T)ENDDOSUBROUTINEFRED(B,I,T)REALB(*)T=B(

12、I)ENDSUBROUTINEWILMA(A,I,T)REALA(*)A(I)=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。