【技术实现步骤摘要】
:本专利技术涉及向量处理器技术,以及将Python代码自动编译成SIMD指令集的方法。
技术介绍
:随着多媒体技术的发展,对计算的需求越来越高,通用处理器的标量设计难以高效的完成计算任务。随着Intel的MMX,SSE等,AMD的3Dnow!扩展指令集的普及,以及基于GPU的CUDA,基于Cell处理器的SPE等技术的出现,针对向量处理器的编程变得越来越重要。SIMD(单指令多数据)式的向量处理器模式将在未来的应用中占用越来越重要的位置。然而,向量处理器在一个指令周期中处理多个数据的特点,决定了其程序开发方式与传统的标量处理器很不一样,例如,向量处理器难以用分支这种方式对数据进行不同的处理。向量处理器也需要合理的安排数据,使其充分向量化。随着向量处理器的发展,问题的并发规模也需要从几个到上千路并发的这么大尺度中变化。因为基于向量处理器的SIMD编程对编程人员的要求较高,随着硬件成本的降低和普及,支持SIMD的硬件已经随处可见,降低SIMD的开发门槛变成一个亟需解决的问题。基于该背景,本专利技术给出一种编程模型,使得程序员利用Python这样的高层脚本语言,即可写出能够以极快速度运行的SIMD代码。
技术实现思路
:本专利技术所要解决的技术问题是提供一种基于向量处理器将Python代码自动编译成SIMD指令集的方法。本专利技术所述的基于向量处理器的在线编译方法,其特征在于包括以下步骤:1)运用Python代码的map、filter、zip和range函数,将问题以list comprehension的表达方式定义为一组数据和一组处理函数;2)将Python代码 ...
【技术保护点】
一种基于向量处理器的在线编译方法,其特征在于包括以下步骤: 1)运用Python代码的map、filter、zip和range函数,将问题以list comprehension的表达方式定义为一组数据和一组处理函数; 2)将P ython代码编译成code对象,进行数据流分析,获取函数体的func_code属性,该属性为PyCode对象,通过dis库中的dis函数,对这个属性进行解析,将Python字节码翻译成对应的操作符; 3)获取到操作符之后,对其进行扫 描,分别处理以下两种过程:if分支结构以及循环结构: 对于循环结构,将循环中对数列元素的单独操作,提炼成针对整个队列的操作,包括:通过map函数将一个操作映射到列表上的对应操作的向量模型;通过zip函数将若干个列表关联在一起进行操作的 所对应的向量模型;再根据这些关系,产生相对应的SIMD指令,并给对应的SIMD实现编译,动态产生符合Python要求的动态链接库,由Python动态载入并执行; 对于if分支结构,首先计算分支条件,然后计算左分支和右分支,最终根据分支 条件的结 ...
【技术特征摘要】
1、一种基于向量处理器的在线编译方法,其特征在于包括以下步骤:1)运用Python代码的map、filter、zip和range函数,将问题以list comprehension的表达方式定义为一组数据和一组处理函数;2)将Python代码编译成code对象,进行数据流分析,获取函数体的func_code属性,该属性为PyCode对象,通过dis库中的dis函数,对这个属性进行解析,将Python字节码翻译成对应的操作符;3)获取到操作符之后,对其进行扫描,分别处理以下两种过程:if分支结构以及循环结构:对于循环结构,将循环中对数列元素的单独操作,提炼成针对整个队列的操作,包括:通过map函数将一个操作映射到列表上的对应操作的向量模型;通过zip函数将若干个列表关联在一起进行操作的所对应的向量模型;再根据这些关系,产生相对应的SIMD指令,并给对应的SIMD实现编译,动态产生符合Python要求的动态链接库,由Python动态载入并执行;对于if分支结构,首先计算分支条件,然后...
【专利技术属性】
技术研发人员:吕琦,李文中,陆桑璐,陈道蓄,
申请(专利权)人:南京大学,
类型:发明
国别省市:84[中国|南京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。