首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于GPU的OpenMP规约指令的实现方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:浙江大学

摘要:本发明公开了一种基于GPU的OpenMP规约指令的实现方法,该方法是基于GPU的OpenMP规约相关指令、子句如reduction子句、declare_reduction指令等的实现方法。它既满足了OpenMP5.0标准对于规约相关指令以及子句的规定,又通过C++模板以及函数重载等使得本方法无需显示解析变量类型,使本方法更加轻量化与通用。同时,本方法采用多级规约的思路,尽力保证用户代码在翻译后依然保持高效。本方法的主要用途在于它可以以轻量化,低耦合的方式实现现有GPU编译器对OpenMP的规约相关指令、子句的扩展支持,同时保证与目标GPU架构的较强的兼容性。

主权项:1.一种基于GPU的OpenMP规约指令的实现方法,其特征在于,包括以下步骤:1定义线程束洗牌函数shfl_down_sync的其他类型支持,以实现不同类型数据的线程束内通信;2根据OpenMP语法,提取reduction子句相关信息,包括变量、操作、循环次数;3根据步骤2中提取的reduction子句相关信息,定义reduction_para_in_ama结构体;该结构体将作为规约变量在设备上的副本进行多级规约,该结构体集合了所需的各级归约操作,包括线程束级规约warp_reduce以及线程块级规约block_reduce;在gpu中,对原规约变量的操作被转化为对该结构体的操作,包括初始化结构体、线程级规约、线程束级归约成员函数的调用;同时,由于OpenMP的规约允许规约变量为数组的一部分,因此也需利用C++模板来实现判断规约变量是否为数组;4根据步骤2中提取的reduction子句信息,确定执行配置;所述执行配置包括线程块数量和线程数量;5根据步骤2中提取的规约信息,定义显式拷贝结构体;由于OpenMP对于数据的显式拷贝分为针对普通变量的拷贝和针对片段的拷贝,因此对需要在设备和主机,主机端间传输的变量、片段做显式拷贝时,需要构造若干普通变量的_Parameter_EXPLICIT结构体以及针对片段的_Parameter_SECTION结构体并将两者传递到kernel函数中;所述变量和片段用于接受每个线程块规约结果;并将其通过结构体内部的Memcpy成员函数发送至设备中开辟好的内存中;6Kernel函数生成:Kernel函数的参数由模板自动解析;线程块数量和线程数量由步骤4的方式来确定;对Kernel内部进行前三级规约,每个线程块生成一个块内结果;7将块内结果发回主机并串行实现块内结果的规约,最后合并规约变量原始值得到规约结果。

全文数据:

权利要求:

百度查询: 浙江大学 一种基于GPU的OpenMP规约指令的实现方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。