当前位置: 首页 > 专利查询>浙江大学专利>正文

一种程序自动并行化的方法技术

技术编号:5224461 阅读:207 留言:0更新日期:2012-04-11 18:40
一种程序自动并行化的方法,该方法包括如下步骤:(1)获取源程序,通过分析源程序获取包括循环和分支部的并行部分;(2)将源程序中并行部分分成多个并行模块,每个并行模块通过线程分配给不同的处理器进行处理;(3)将经过并行扩展的源程序编译成可执行的代码。本发明专利技术具有的有益效果是:提供简单的程序并行化环境,充分设计简单化、安全性、可移植性方面的独特优势,具有很高的运行安全性以及开发过程中的高可重用性,大大降低了多平台开发成本,能充分利用好硬件资源,提高程序性能,加速计算过程。

【技术实现步骤摘要】

本专利技术涉及并行程序设计领域、编译器设计领域,特别涉及一种程序自动并行化 的方法。
技术介绍
目前,计算机的核数不断增加,要体现多核的优势,需要充分利用好多核的硬件资 源,所以必须实现多核并行计算。并行编程是一种很好的实现方法,但是并行编程很难,这 使得习惯于串行编程的程序员很难适应并行编程模式。并行编程的难点在于程序员很难确 定在程序的什么地方实现并行,而且多线程并行程序的高度非常麻烦,各线程之间数据依 赖关系的处理,及并行级别的选择,这些都是影响并行编程实现的难点,那么就需要一种方 法能够使得并行编程容易实现。Intel、AMD等公司都提出了基于自身处理器架构的多核并行编程方案,它们的方 案局限于固定的硬件结构,采用不同程序库来实现,但这些并没有减轻程序员的负担。在应 用程序中,还是需要程序员对程序的并行结构进行设计,而且这些程序可移植性差,当移植 到别的机器上时,可能要修改代码才能重新实现并行,这些都是一些低效的方法。
技术实现思路
为了解决多核硬件环境中并行编程复杂和可移植性差等问题,提高多核硬件资源 的利用效率,减轻多核并行程序员的编程负担,本专利技术的目的在于提供一种平台独立的串 行程序自动并行化的方法。本专利技术解决技术问题所采用的技术方案是,该方法包括如下步骤(1)获取源程序,通过分析源程序获取包括循环和分支部的并行部分;(2)将源程序中并行部分分成多个并行模块,每个并行模块通过线程分配给不同 的处理器进行处理;(3)将经过并行扩展的源程序编译成可执行的代码。所述线程分配采用流水线并行方式,将并行部分分解成多个执行阶段,每个执行 阶段分配给一个处理器执行。所述并行部分按照依赖关系分成多个执行阶段。所述线程分配采用猜测性并行方式,当并行部分是循环时,预先设定循环次数,将 每次循环作为一个线程分配给一个处理器进行处理。本专利技术具有的有益效果是首先,提供简单的程序并行化环境,充分设计简单化、 安全性、可移植性方面的独特优势,具有很高的运行安全性以及开发过程中的高可重用性, 大大降低了多平台开发成本;其次,依据平台而实现并行化编译的技术,使得多核处理器的 性能优势得到发挥,无论是在高性能服务器,还是普通计算机或是在嵌入式平台,都能充分 利用好硬件资源,提高程序性能,加速计算过程;再次,该并行化技术简化了并行程序设计,使得串行程序的作者们不需要过多关注于并行编程,他们只需按照原有的思维进行代码编 写就行。这种方式突出了多核环境中程序并行化,编程简单化,程序可移植性好。最后本发 明引入线程级的并行化和软件流水线式并行化。附图说明图1是本专利技术一种实施例的流程图;图2是本专利技术一种实施例的执行流程图。具体实施例方式以下结合附图对本专利技术提供的程序自动并行化的方法作进一步详细描述图1是本专利技术一种实施例的整体流程图,该方法包括如下步骤第一步、获取源程序,通过分析源程序获取包括循环和分支部的并行部分;第二步、将源程序中并行部分分成多个并行模块,每个并行模块通过线程分配给 不同的处理器进行处理;第三步、将经过并行扩展的源程序编译成可执行的代码。其中,获取源程序中的包括循环和分支部的并行部分,可以采用常用的判断方法, 例如源程序中有while,for, if等程序中的关键字,则认定为有并行部分。本专利技术的程序自动并行化,可以采用流水线并行方式或者猜测性并行方式。其中 流水线并行方式是将并行部分分解成多个执行阶段,每个执行阶段分配给一个处理器执 行。将并行部分分成几个执行阶段,每个处理器完成一个执行阶段的工作。当执行阶段之 间存在依赖关系时,各个执行阶段每次执行的数据需要相互传递。本专利技术的猜测性并行方式是指,当并行部分是循环时,预先设定循环次数,将每次 循环作为一个线程分配给一个处理器进行处理。本专利技术的方法可以由并行化编译器模块、并行代码执行硬件模块、程序并行化扩 展模块三个模块实现。以下具体描述一下三个模块的功能以及并行化过程。1)三大模块功能。并行代码执行硬件模块是执行并行程序的平台,程序并行化扩 展模块是修改程序使它具有并行功能,并行编译器模块就是将程序编译成可在硬件上运行 的代码。①并行化编译器模块这是串行程序自动并行化的主要实现功能部分,并行化过程也是在编译过程中完 成,所以编译模块在整个技术框架中作用最大。它独立与任何平台,一般当编译器安装好在 机器上后,便会获取一些硬件信息,依据此信息给出并行化参数。通常一台机器的硬件结构 很少改变,所以并行化方案可以用在以后的并行化编译中,每次并行化都可使用这个方案。 除了并行化功能以外,它和其他编译器功能上差不多,为硬件生成可执行代码。并行编译器不同于一般的编译器的地方是,一般编译器将程序编译成顺序执行的 机器代码,而它能够将程序编译成可并行的机器代码,因为目前CPU的核越来越多,程序并 行运行可以充分利用多核资源,大大加速程序运行。并行化功能就是将程序员编写的顺序 执行程序并行化,寻找出程序中可并行的代码部分,使它们在各核上同时运行。②并行代码执行硬件模块可以采用多核硬件结构,包括高性能服务器,普通个人机,嵌入式系统等,这是执行并行化后的可执行程序的功能部件。要让程序并行执行,首先 硬件得要有并行执行的功能,这是程序并行化的基础。③程序并行化扩展模块这是一种串行程序自动并行化技术,不需要程序员过多关注并行设计,但是程序 并行还是要修改一部分代码,这个修改功能就是由并行化扩展模块完成。这个修改是指根 据编译器给的并行化方案,在预编译阶段做一些处理以达到并行化的效果。将代码中的循环部、各分支部分等分成多个并行模块,每个模块构成一个线程,这 些线程能在各核上并发执行,要处理各模块的协同关系。模块之间相互依赖相互合作,编译器是平台独立性,但是要根据机器硬件结构来 生成一个最优的并行化方案;编译器将经过并行化扩展模块扩展后的程序编译成可在硬件 上执行的二进制代码,所以编译器依赖于扩展模块;同样,并行批扩展模块是需要编译器所 给定的并行化方案进行扩展,它要依赖于编译器。在不同架构的机器上,需要重新编译,因 为机器之间的硬件不同,所需要的最优并行化方案也不一样。2)并行化过程并行化过程是指将程序并行编译,其实就是编译成可执行的机器代码,编译过程 中将程序的一些部分进行并行化处理。图2是本专利技术一种实施例的执行流程图。①当程序编译时的实现步骤编译指编译器将程序源码转换成能够在硬件是执行的二进制代码;I.获取硬件信息,在编译器安装时,就可提取硬件的相关信息,包括处理器指令结 构、核的数量等保存在配置文件中,参数一般是在编译器安装时就会检测到并配置好,这些 配置参数作为并行化编译过程中所需要的参数。II.在编译器给出并行化方案后,需要对源程序做些修改,就是在源程序中的循环 和分支部分进行修改,每个分支作为一个线程去执行,这样可以同时在多个核上执行多个 分支,比顺序程序中按顺序执行分支要快很多,也就是并行化扩展。串行程序并行化的方法 有两种,其一是线程猜测性并行,这种技术是当程序中有循环时,并行执行各次循环,在最 优情况下,可一次性执行完循环;另一方法是软件分解流水线并行,把一次循环分解成多个 执行阶段,并行执行循环中的各阶段,在同一时刻执行不同循环的不同阶段。线程猜测并行 技术要求各循环本文档来自技高网...

【技术保护点】
一种程序自动并行化的方法,其特征在于该方法包括如下步骤:(1)获取源程序,通过分析源程序获取包括循环和分支部的并行部分;(2)将源程序中并行部分分成多个并行模块,每个并行模块通过线程分配给不同的处理器进行处理;(3)将经过并行扩展的源程序编译成可执行的代码。

【技术特征摘要】
一种程序自动并行化的方法,其特征在于该方法包括如下步骤(1)获取源程序,通过分析源程序获取包括循环和分支部的并行部分;(2)将源程序中并行部分分成多个并行模块,每个并行模块通过线程分配给不同的处理器进行处理;(3)将经过并行扩展的源程序编译成可执行的代码。2.根据权利要求1所述的程序自动并行化的方法,其特征在于所述线程分配采用流 水线并行方式...

【专利技术属性】
技术研发人员:陈天洲虞保忠乐金明乔福明马建良
申请(专利权)人:浙江大学
类型:发明
国别省市:86[中国|杭州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利