[发明专利]用于转换多线程程序代码的设备和方法有效
申请号: | 201410184147.0 | 申请日: | 2014-05-04 |
公开(公告)号: | CN104133668B | 公开(公告)日: | 2019-05-03 |
发明(设计)人: | 金圣建;刘东勋;李振锡;黄锡重 | 申请(专利权)人: | 三星电子株式会社 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京铭硕知识产权代理有限公司 11286 | 代理人: | 苏银虹;韩明星 |
地址: | 韩国京畿*** | 国省代码: | 韩国;KR |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 转换 多线程 程序代码 设备 方法 | ||
1.一种用于转换多线程程序代码的方法,所述方法包括:
根据同步点将多线程程序代码划分为多个语句;
通过基于在所述多个语句中各自包括的指令的数量合并一个或更多个相邻语句来产生至少一个循环组,使得产生的所述至少一个循环组中的每一个循环组中的指令的数量接近或等于另一个循环组;
扩展或重命名所述多个语句中的变量,使得在产生的所述至少一个循环组中包括的每个语句针对不同工作组的工作项被执行;
用工作项合并循环分别封闭产生的所述至少一个循环组中的每一个循环组,
其中,所述方法还包括:基于由多线程程序代码所使用的存储器的容量来计算产生的所述至少一个循环组的可执行的工作组的数量。
2.如权利要求1所述的方法,其中,多线程程序代码是开放计算语言OpenCL内核代码或统一计算装置架构CUDA内核代码。
3.如权利要求1所述的方法,其中,同步点包括:多线程程序代码的入口点、屏障函数和控制结构的入口点中的至少一个。
4.如权利要求1所述的方法,
其中,产生所述至少一个循环组的步骤包括:通过基于在所述多个语句中各自包括的指令的数量和根据计算出的可执行的工作组的数量合并所述一个或更多个相邻语句来产生所述至少一个循环组,使得产生的所述至少一个循环组中的每一个循环组中的指令的数量接近或等于另一个循环组,且使得产生的所述至少一个循环组中的每一个循环组的语句的数量不超过计算出的工作组的数量。
5.如权利要求1所述的方法,还包括:
以预定方案对转换后的代码进行优化。
6.如权利要求5所述的方法,其中,优化的步骤包括:通过采用循环优化和标量优化中的至少一种对转换后的代码进行优化。
7.如权利要求1所述的方法,还包括:
添加用于在所述多个语句中设置变量以指示存储了将要执行的工作组的存储器偏移量的变量轮换代码。
8.如权利要求1所述的方法,还包括:
转换所述多个语句之中的语句的代码,使得所述语句仅仅针对有效的工作组被执行。
9.如权利要求8所述的方法,其中,转换语句的代码的步骤包括:使用条件语句或论断来转换语句的代码。
10.如权利要求7所述的方法,还包括:
用工作组交错循环来封闭工作项合并循环和变量轮换代码,使得所述多个语句中的每个语句针对所有工作组被执行。
11.如权利要求1所述的方法,其中,划分的步骤包括:当多线程程序代码包括屏障函数时,将多线程程序代码划分为屏障函数之前的语句和屏障函数之后的语句。
12.如权利要求1所述的方法,其中,划分的步骤包括:当多线程程序代码包括在条件语句中包含的屏障函数时,将多线程程序代码划分为条件语句之前的语句和条件语句之后的语句,并将条件语句的内部划分为屏障函数之前的语句和屏障函数之后的语句。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于三星电子株式会社,未经三星电子株式会社许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410184147.0/1.html,转载请声明来源钻瓜专利网。