- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
基于GCC开发异构处理器编程插件曹焕琦2024/9/6PACMAN@TsinghuaUniversity1
问题目标为什么做?要做什么?2024/9/6PACMAN@TsinghuaUniversity2
背景神威超级计算机所使用的申威众核处理器由于其异构特征编程困难:主从核指令集不同;主从核交互接口类似OpenCL,启动从核程序需要手动打包参数、处理数据格式问题等;主从核代码分开编译,从核代码无法以模板形式编写、根据主核调用展开。背后的问题是长期以来类似CUDA的语言扩展缺位。2024/9/6PACMAN@TsinghuaUniversity3CoreGroup1CoreGroup2CoreGroup3CoreGroup4CPEClusterMPECPEClusterMPECPEClusterCPEClusterMPEMPENOCMCDRAMDRAMMCMCMCDRAMDRAMCPEwithSPMRegisterBuses(verticalhorizontal)
代码示例按照当前的编程模型,同一个组件一般需要分三块实现。图示分别为公共头文件(下)、主核代码(右)、从核代码(右下)。2024/9/6PACMAN@TsinghuaUniversity4
如何改善?对语言进行扩展,合并主核和从核代码,由编译器进行拆分。(学习CUDA)2024/9/6PACMAN@TsinghuaUniversity5
方案设计基于GCCextension实现C/C++基础上的语言扩展2024/9/6PACMAN@TsinghuaUniversity6
编译器现状神威团队为GCC实现了两个后端扩展,分别对应于主核、从核。–mhost:后端支持完整的gccintrinsic,且运行时提供完整的Glibc、stdc++等–mslave:后端仅支持部分intrinsic,运行时提供功能受限的uClibc。同时,–mhybrid模式用于混合链接两种架构的obj文件。在-mslave模式下,后端会为所有函数增加slave_前缀,避免与主核代码的符号冲突。2024/9/6PACMAN@TsinghuaUniversity7
如何实现一份代码、两份二进制、混合链接?在插件中添加三个attribute:__attribute((kernel)):用来标注从核入口函数,必须由主核调用;__attribute((slave)):用来标注常规从核函数,必须由从核调用;__attribute((host)):用来标注主核函数,可以调用其他主核函数或kernel函数。一个函数可以同时是slave或host的,没有标记的函数是host的。利用插件实现一个过滤机制:当使用-mhost编译时,仅保留主核代码,并将从核入口函数变换为spawnwrapper。当使用-mslave编译时,仅保留从核代码。以-mhost和-mslave分别编译后链接。2024/9/6PACMAN@TsinghuaUniversity8
如何以最低代价使标准库和申威主从交互库可用?虽然主从核的标准库并非同一套,但可以认为其接口都符合C语言标准:在以-mhost编译时,认为所有出现在编译器内置库中的函数声明是host的;在以-mslave编译时,认为所有出现在编译器内置库中的函数声明是slave的。对于主从交互库,通过一套pragma来修改头文件:#pragmaswhc(push(host|slave)|pop)经过一次push后,将当前函数默认种类改为对应的架构;完成一段声明pop后,恢复原先的默认架构(主核)。在主从交互库的头文件中,将条件编译语句(#ifdef__sw_host__等)替换为相应的pragma。2024/9/6PACMAN@TsinghuaUniversity9
插件实现通过GCCpluginAPI实现自定义attribute、pragma及代码生成与变换(参见代码)2024/9/6PACMAN@TsinghuaUniversity10
开发经验和GCCInternal斗智斗勇…2024/9/6PACMAN@TsinghuaUniversity11
参考材料查找GCCPlugin的文档中有极为有限的一些内容,可以参考了解其大体结构。Linuxkernel中有几个GCCplugin的实现,其功能也很好理解,可以参考仿照编写插件。其余的就需要读GCC源码了…特别留意middle-end相关部分,包括tree
您可能关注的文档
- 化学(师范)专业人才培养方案.docx
- 化学学院2024年推荐优秀应届本科毕业生免试攻读研究生综合.docx
- 化学与制药工程学院本科教学试卷专项督查情况.doc
- 化学专业培养方案.doc
- 环境科学与工程类专业人才培养方案.doc
- 环境科学与工程学院概况.doc
- 黄淮学院本科培养方案.doc
- 灰斗电加(伴)热设计参数表.doc
- 汇胜集团平原纸业有限公司.doc
- 混凝土、砂浆、净浆检验委托单.doc
- 《中国通史》文字稿第12集春秋争霸.docx
- java教程--类与对象-讲义课件(演讲稿).ppt
- Vue应用程序开发-(1).pptx
- 东北师大版社劳动实践与评价指导手册一年级上册主题二活动一寻找五彩的树叶课时课件.pptx
- 外研版英语四年级上册 Module 4 Unit 2 How much is it单元教学设计.docx
- 外研版英语四年级上册Module 4 单元整体教学设计.docx
- 6《上课之前》课件 鄂科技版 心理健康教育一年级.pptx
- 《1~5的认识》说课课件(共25张PPT)人教版一年级上册数学.pptx
- 六《解决问题(1)》说课课件 人教版 三年级上册数学.pptx
- 七《解决问题》说课课件 人教版 二年级上册数学.pptx
文档评论(0)