[发明专利]可重构处理器的高级语言的并行化和循环优化方法及系统在审
申请号: | 201610018726.7 | 申请日: | 2016-01-12 |
公开(公告)号: | CN105700933A | 公开(公告)日: | 2016-06-22 |
发明(设计)人: | 田丰硕;绳伟光;何卫锋 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 上海思微知识产权代理事务所(普通合伙) 31237 | 代理人: | 屈蘅 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 可重构 处理器 高级 语言 并行 循环 优化 方法 系统 | ||
技术领域
本发明涉及基于通用可重构处理器的高级语言的自动并行化和循环优化的 方法和系统的实现。
背景技术
随着在单个芯片上的计算的操作数和操作符越来越多,并行化的和多核的 处理器体系结构已经成为了主流。在以往的处理器计算模式中,通常分为以下 两类。传统的以冯·诺依曼处理器为基础的通用计算具有极强的灵活性,但是 其指令流驱动的执行方式、有限的运算单元和存储带宽使其整体性能和功耗并 不理想。专用计算可以针对特定的应用优化结构和电路,无需指令集,其执行 速度快,功耗低。但专用计算系统存在着致命的缺陷,灵活性和扩展性很差, 对不断演化的更加复杂的应用往往不能通过简单的扩展来完成。可重构计算就 是在这种背景下出现的一种将软件的灵活性和硬件的高效性结合在一起的计算 方式。
对于一个可重构处理器,它包括了一个通用的处理器和若干个可重构的计 算单元。通用处理器用来控制可重构计算单元的计算过程,并行任务调度和执 行串行任务。可重构计算单元负责根据配置信息来进行重构和计算。由此,可 重构架构可以适应不同的算法和应用的计算。虽然现在已经有了很多种可重构 的计算架构,但是原始C语言并不能满足并行计算的需要,而如何更高效的编 程来尽可能的激发出PEA的高效性已经成为了一个显而易见的难题和挑战。
对于一种可重构架构,需要实现一个与它相匹配的任务编译器和一个并行 化扩展后的C语言版本。CUDA允许开发者利用图形计算单元(GPU)来进行特定 用途的编程。但是它的编程过程非常繁琐,需要程序员自己去进行内存分配和 循环优化。OpenMP支持对C、C++和Fortran语言的多核编程。尽管它在程序中 添加了很多并行化的标记,但是它仅仅能够进行多线程的优化和计算。以上这 两种并行语言都不能在可重构架构上进行任务调度。
发明内容
本发明的目的在于提供一种可重构处理器的高级语言的并行化和循环优化 方法及系统,能够将C语言自动转化成为GR-C语言并且实现针对于具体可重构 架构的循环优化,从而使得可重构架构的性能提升。
为解决上述问题,本发明提供一种可重构处理器的高级语言的并行化和循 环优化方法,包括:
获取decls.h文件,根据所述decls.h文件得到输入和输出中间文件,从 所述输入和输出中间文件得到task函数和pea函数的参数信息;
从C代码中提取出kernel函数部分,利用多面体模型对提出的kernel函 数部分进行优化,以生成kernel函数部分的GR-C语言;
根据所述参数信息将所述kernel函数部分的GR-C语言写回到C代码的 kernel函数部分,以生成最终的GR-C代码。
进一步的,在上述方法中,从C代码中提取出kernel函数部分,利用多面 体模型对提出的kernel函数部分进行优化,以生成kernel函数部分的GR-C语 言,包括:
输入C代码的静态依赖分析,将所述C代码的静态依赖分析转化为多面体 模型;
对所述多面体模型进行优化,以得到并行化的多面体模型;
根据所述并行化的多面体模型生成kernel函数部分的GR-C语言。
进一步的,在上述方法中,根据所述并行化的多面体模型生成kernel函数 部分的GR-C语言,包括:
使用CLooG工具将所述并行化的多面体模型生成kernel函数部分的GR-C 语言。
进一步的,在上述方法中,输入C代码的静态依赖分析包括:
使用LooPo架构来进行代码扫描和依赖分析。
进一步的,在上述方法中,对所述多面体模型进行优化,以得到并行化的 多面体模型的步骤中,
基于PLUTO模型进行了改写,得到仿射优化转换的框架;
使用PipLib作为ILP计算器;
根据所述框架和ILP计算器对所述多面体模型进行优化,以得到并行化的 多面体模型。
进一步的,在上述方法中,对所述多面体模型进行优化的步骤中,采用如 下循环优化顺序对提出的kernel函数部分进行优化:
首先,将所有状态分离,并且按照依赖关系和循环边界进行分组;
然后,对每个组进行循环融合,将合适的状态融合到一起;
然后,针对每组的操作数需要的执行周期来确定循环展开的参数;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610018726.7/2.html,转载请声明来源钻瓜专利网。