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

【发明授权】基于GPU指令集的SPIR-V链式操作指令处理方法_武汉凌久微电子有限公司_202410346435.5 

申请/专利权人:武汉凌久微电子有限公司

申请日:2024-03-26

公开(公告)日:2024-06-21

公开(公告)号:CN117950726B

主分类号:G06F9/30

分类号:G06F9/30

优先权:

专利状态码:有效-授权

法律状态:2024.06.21#授权;2024.05.17#实质审查的生效;2024.04.30#公开

摘要:本发明提供一种基于GPU指令集的SPIR‑V链式操作指令处理方法,包括:遍历SPIR‑V二进制指令流,对于每一个链式操作指令,提取指令的基地址base和索引值index序列;通过编译器处理或插入GPU指令序列计算每一条指令中的索引元素相对基地址base的地址偏移量destOffset,以及根据每一条指令的操作码插入不同的GPU指令序列来计算索引元素的绝对地址chainDest或者直接对基地址base的destOffset偏移处进行读写操作,遍历余下的所有指令直到指令流中所有指令均翻译完成。通过本发明,将SPIR‑V指令集中的链式操作指令在保持语义的前提下翻译成低抽象层级的GPU指令序列。

主权项:1.一种基于GPU指令集的SPIR-V链式操作指令的处理方法,其特征在于,包括:步骤S1,遍历SPIR-V二进制指令流,当匹配到一条链式操作指令时,生成表征第一条链式操作指令中目的操作数符号,符号记为chainDest,在符号中保存所述链式操作指令的基地址base和索引值index序列,并将符号chainDest插入到GPU编译器对象中的符号哈希表中,其中,索引值index序列是一个数值序列,用以表征嵌套数据结构的访问,index[0]、…、index[n]分别表示索引第0层数据结构、…、第n层数据结构的第index[n]个元素;步骤S2,按照指令顺序继续翻译SPIR-V二进制指令流中余下的指令,对于任一条指令检查其源操作数符号是否为步骤S1中的符号chainDest,若是则提取所述链式操作指令的基地址base和索引值index序列并执行步骤S3;若不是则跳过剩余所有步骤;步骤S3,基于所述任一条指令的源操作数符号的数据类型,通过编译器处理或插入GPU指令序列来计算所述链式操作指令中的索引元素相对基地址base的地址偏移量destOffset;步骤S4,获取所述任一条指令的操作码,根据所述操作码插入不同的GPU指令序列来计算索引元素的绝对地址chainDest或者直接对基地址base的destOffset偏移处进行读写操作;步骤S5,继续遍历SPIR-V二进制指令流中剩余的指令,直到所有指令均翻译完成,其中,每条链式操作指令处理过程中插入不同的GPU指令序列即为对应链式操作指令翻译后的GPU指令序列;所述步骤S3,基于所述任一条指令的源操作数符号的数据类型,通过编译器处理或插入GPU指令序列来计算所述链式操作指令中的索引元素相对基地址base的地址偏移量destOffset,包括:步骤S301,判断所述任一条指令的源操作数符号chainDest的数据类型,若不为标量则执行步骤S303,若是标量,则表示所述任一条指令中没有数据结构的嵌套,判断index序列的成员个数,若成员个数不为1则返回错误信息并结束所有步骤,若成员个数为1则继续步骤S302;步骤S302:使用C库中的sizeof函数计算标量所占的字节大小,与寄存器大小对齐后记标量大小为scalSize,在编译器对象中的指令链表末尾插入一条mul指令,mul指令的源操作数分别是scalSize和index[0],mul指令的目的操作数符号记为destOffset,destOffset为scalSize和index[0]的乘积,在物理上表示索引元素相对基地址base的地址偏移,操作结束后执行步骤S4;所述步骤S303,包括:判断所述任一条指令中的源操作数符号的数据类型,若不是结构体则执行步骤S304,若是结构体类型,则遍历结构体的每一层的每个成员所占的字节大小,其中数据结构层次一直划分到第n层为止,n为index序列的成员个数;计算每个成员相对于其第一层父结构的字节偏移,计算方式为将每个成员的前面所有成员大小相加即为每个成员的字节偏移,对于第m层的第index[m]个元素,m≤n,索引元素相对基地址base的地址偏移destOffset计算方法为,其中offset[i]表示的是第i层第index[i]个元素相对于其第一层父结构的偏移,根据SPIR-V标准,对于结构体类型index索引值为常量,在编译器中计算出offset[i]的值,并生成一个额外的立即数符号来保存offset[i]的值,立即数符号用destOffset来表示,执行完毕后跳转到步骤S4;所述步骤S304,包括:判断所述任一条操作指令的源操作数符号的数据类型,若不是数组、矩阵或者向量类型则执行步骤S4,若是数组、矩阵或者向量类型,获取数组、矩阵或者向量结构成员的间隔stride,即相邻两个成员起始地址间隔的字节大小;根据SPIR-V标准,对于数组、矩阵或者向量类型,index[i]为常量或者变量,若index[i]为常量,对于第p层的第index[p]个元素,p≤n,在编译器中直接计算索引元素的实际偏移量,其计算方法为,用立即数符号destOffset来保存索引元素的实际偏移量;对于index[i]是变量的情况,需要使用GPU指令完成计算任务,计算方法总共包含n+1条乘法操作和n条加法操作,在编译器对象中的指令链表末尾按顺序插入n+1条乘法指令和n条加法指令,每条指令的操作数分别对应每个加法操作或者乘法操作的操作数,最后一条指令的目的操作数destOffset表征索引元素相对于base的地址偏移,执行完毕后跳转到步骤S4。

全文数据:

权利要求:

百度查询: 武汉凌久微电子有限公司 基于GPU指令集的SPIR-V链式操作指令处理方法

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