首页> 中国专利> 用于在并行计算环境中开发软件的方法

用于在并行计算环境中开发软件的方法

摘要

本发明公开一种用于在并行计算环境中开发软件的方法。所述方法包括以下步骤:开发所述软件的顺序实现和并行实现;以及对照所述软件的所述顺序实现的结果来检验所述软件的所述并行实现的结果。

著录项

  • 公开/公告号CN103593179A

    专利类型发明专利

  • 公开/公告日2014-02-19

    原文格式PDF

  • 申请/专利权人 通用电气航空系统有限责任公司;

    申请/专利号CN201310357753.3

  • 发明设计人 E.D.比勒;B.T.奥基平蒂;

    申请日2013-08-16

  • 分类号G06F9/44;G06F9/38;

  • 代理机构中国专利代理(香港)有限公司;

  • 代理人徐予红

  • 地址 美国密执安州

  • 入库时间 2024-02-19 22:10:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-12

    未缴年费专利权终止 IPC(主分类):G06F 8/20 专利号:ZL2013103577533 申请日:20130816 授权公告日:20190301

    专利权的终止

  • 2019-03-01

    授权

    授权

  • 2015-07-22

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20130816

    实质审查的生效

  • 2014-02-19

    公开

    公开

说明书

技术领域

软件开发过程已经得到发展,从而在程序的整个生命周期内提高 软件产品的生产率和质量。随着个人和商用计算处理器已从单核处理 单元(CPU)发展成多核CPU和图形处理单元(GPU),计算机软件 正从高度顺序向高度并行过渡。

背景技术

图1是具有单指令流和单数据流的顺序处理计算机架构10的示 意性流程图。顺序处理是指在硬件架构上执行计算机代码,在所述硬 件架构中,单处理器执行来自指令池12的单指令流,以便操作存储 在数据池16中的数据。由软件开发人员编程的软件的顺序实现存在 于指令池12中。当程序执行时,单串行指令流会从指令池12发送到 单处理单元(PU)14。PU14以单串行流的形式接收来自数据池16 的数据。在作为计算机架构的费林(Flynn)分类法要素的文献中,顺 序处理架构10的表示称为单指令流单数据流(SISD)。此架构最知 名的实例便是二十世纪八十年代和九十年代的PC中使用的传统单处 理器机器。

图2是具有单指令流和多数据流的并行处理计算机架构20的示 意性流程图。并行处理是指其中可以同时执行不同计算的任何计算机 架构。在一个并行处理架构中,执行并行计算机代码,其中多个处理 器执行来自指令池22的单指令流,以便操作存储在数据池26中的多 个数据流。由软件开发人员编程的软件的并行实现存在于指令池22 中。当程序执行时,单串行指令流会从指令池22发送到一组处理单 元(PU)24。PU24各自接收来自数据池26的数据流。在作为计算 机架构的费林分类法要素的文献中,这种并行处理架构20的表示称 为单指令流多数据流(SIMD)。SIMD架构在GPU和大多数多核CPU 中实施。

在典型的软件开发过程中,程序员挑选处理环境并针对该选定的 环境进行开发。因此,负责创建一个将在并行计算平台上运行的应用 程序的开发人员将开发并行计算平台上的软件产品的并行实现。已知 计算机程序的并行实现比顺序实现更难编写,这是因为并发的计算增 加了出现额外类型的软件错误和资源管理问题的潜在可能性。例如, 并行程序可能会遭受一种被称为竞态条件的故障类型,借此,归因于 多个处理器执行的操作之间的临界时间依赖性,计算机程序的并行实 现便会出现异常行为。这些类型的错误可能极难跟踪,因此,解决起 来非常耗时。

软件开发过程已经得到发展,从而在程序的整个生命周期内提高 软件产品的生产率和质量。通常,这些方法以软件开发生命周期模型 为基础,并且为开发人员提供计划,以便在开发和建立计算机程序时 跟进。由于几十年来在个人计算机行业中占优势的计算机硬件架构具 有串行性质,因此,顺序处理已经塑造了计算机科学家用来开发计算 机代码的软件开发过程。图形处理单元和多核中央处理单元(CPU) 出现并可用之后,将并行计算带入了商用和个人计算的主流。因此, 对于并行软件的开发和推广而言,软件开发过程不足且低效。

图3是用于软件开发的顺序设计过程的示意性流程图,该顺序设 计过程称为瀑布模型30。瀑布模型30是众所周知的设计过程,自硬 件设计方法改编而成,并且用于软件开发,其中该过程的各个阶段均 在下一阶段开始前完成。瀑布模型30的阶段是需求32、设计34、实 现36、检验38以及维护40。每个步骤连续连接到下一步骤,因此, 整个开发过程在当前步骤完成之后前进到下一步骤,并且通常会在随 后的步骤之前显现先前的步骤,因而前进过程类似于瀑布。

用于软件开发的瀑布模型30的初始步骤是需求阶段32。需求阶 段32连续连接到设计阶段34,因此,在设计阶段34可以开始之前, 需求阶段32必须要先完成。设计阶段34连续连接到实现阶段36。实 现阶段36连续连接到检验阶段38。检验阶段38连续连接到维护阶段 40。维护阶段40完成之后,所述开发过程便完成了。

通常,需求阶段32的目标是描述软件的目的,以及开发出软件 需求说明。软件需求说明是对软件系统的完整描述,其中所述软件系 统定义了待开发软件的功能需求和非功能需求。所述软件的功能需求 是一组描述软件如何工作的输入、行为和输出。所述功能需求通常在 需求阶段32中记载为计算和用例。所述软件的非功能需求描述所述 软件将呈现出的特性,例如,速度、稳定性、容量,以及可移植性。 所述非功能需求是将会决定所述系统架构的标准。

设计阶段34是计划软件解决方案的过程,所述软件解决方案将 满足先前在需求阶段32明确说明的目的和需求。在设计阶段34期间, 软件开发人员将会考虑功能需求和非功能需求,并且开发出一个软件 模型,所述软件模型将详述待实施的软件的基础设计。软件设计期间 的典型考虑因素有相容性、调制性、可靠性、可用性、鲁棒性等。所 述软件模型的基础设计将描述一定的层次或框架,而所述层次或框架 描述了所述软件架构。所述软件架构将描述各个软件部件或模块,以 及所述模块互连的方式。设计阶段34的输出是所述软件模型的文献 资料,并且可能是明文描述、流程图,或者采用如统一建模语言(UML) 等建模语言的层次描述。

实现阶段36是软件开发周期中的阶段,其中计算机代码实际上 被编写。来自设计阶段的技术描述被实现为软件程序或部件。通过成 为来自设计阶段34的软件设计的直接实现,所述程序意图符合需求 阶段32的软件需求。

软件开发周期的检验阶段38是这样的过程:其中对照软件需求 和设计来测试所实施的软件,以证明所述程序已经正确建立并且符合 规范。软件检验是一个有条不紊的过程,其中写入一些测试,以证实 软件是按照说明执行的。如果所述软件并未通过确认测试,那么对所 述程序进行调试,以找到并减少缺陷。瀑布开发过程30的检验阶段 38完成之后,安装并维护所述软件。在软件系统已经安装在最终用户 平台上之后,软件开发过程的维护阶段40出现。此时,最终用户将 会确认先前未知的错误或性能问题。通常,在使用现场系统时,随着 最终用户的软件需求发生改变,根据瀑布模型30开发的软件系统开 始演化。因此,维护阶段40是这样的阶段:其中响应于最终用户的 动态需要,软件系统远离根据瀑布模型30开发的软件需求和设计。

发明内容

本发明涉及一种用于在并行计算环境中开发软件的方法。所述方 法包括以下步骤:在顺序处理环境中开发所述软件的顺序实现;检验 所述软件的所述顺序实现是否如预期那样工作;在并行处理环境中开 发所述软件的所述顺序实现的并行实现;以及对照所述软件的所述顺 序实现的结果来检验所述软件的所述并行实现的结果。

作为优选,其进一步包括以下步骤:维护所述软件的所述顺序实现和 所述软件的所述并行实现。

作为优选,其进一步包括以下步骤:确定所述软件的需求;以及 确定所述软件的设计;其中这些步骤在以下所述步骤之前执行:在所 述顺序处理环境中开发所述软件。

作为优选,其中在并行处理环境中开发所述软件的所述顺序实现的并 行实现的所述步骤通常与以下所述步骤同时执行:检验所述软件的所 述顺序实现是否如预期那样工作。

作为优选,其中所述并行处理环境包括至少一个GPU。

作为优选,其中所述并行处理环境包括至少一个多核处理器。

作为优选,其中所述顺序处理环境包括至少一个CPU。

作为优选,其中对照所述软件的所述顺序实现的结果来检验所述 软件的所述并行实现的结果的所述步骤包括以下步骤中的至少一者: (a)对所述软件的所述并行实现的所述结果执行可信度测试,并且将 所述结果与所述顺序实现的所述结果相比较;(b)对所述软件的所 述并行实现的所述结果执行至少一个单元测试,并且将所述结果与所 述顺序实现的所述结果相比较;(c)对所述软件的所述并行实现的所 述结果执行至少一个边角测试,并且将所述结果与所述顺序实现的所 述结果相比较;以及(d)对所述软件的所述并行实现的所述结果执 行至少一个边缘测试,并且将所述结果与所述顺序实现的所述结果相 比较。

作为优选,其进一步包括以下步骤:检测所述软件的运行时间状 态是否可以支持并行处理。

作为优选,其进一步包括以下步骤:基于所述检测所述软件的运 行时间状态是否可以支持并行处理的步骤所给出的信号,在并行处理 模式下运行所述软件。

附图说明

在附图中:

图1是具有单指令流和单数据流的现有技术顺序处理计算机架构 的示意性流程图。

图2是具有单指令流和多数据流的现有技术并行处理架构的示意 性流程图。

图3是用于软件开发的现有技术顺序设计过程的示意性流程图, 所述顺序设计过程称为瀑布模型。

图4是根据本发明的一项实施例的用于同时开发顺序和并行软件 的并行设计过程的示意性流程图。

图5是根据本发明的一项实施例的用于对照顺序代码实现来检验 并行代码实现的示意性流程图。

具体实施方式

在背景技术和以下描述中,出于解释说明的目的,列出了许多具 体细节来帮助彻底理解本说明书中描述的技术。然而,所属领域的技 术人员将明自,可以在没有这些具体细节的情况下实践示例性实施 例。在其他情况下,图示了结构和装置,以便于描述这些示例性实施 例。

参考附图来描述所述示例性实施例。这些附图示出了实施本说明 书中描述的模块、方法或计算机程序产品的具体实施例的某些细节。 然而,附图不应被解释为施加了附图中可能出现的任何限制。所述方 法和计算机程序产品可以设在任何机器可读媒体上,以完成它们的操 作。所述实施例可以使用现有的计算机处理器来实施,或者由为此目 的或另一目的而并入的专用计算机处理器来实施,或由硬连线系统来 实施。

如上所述,本说明书中描述的实施例可以包括计算机程序产品, 所述计算机程序产品包括用于在其上存储或携载机器可执行指令或 数据结构的机器可读媒体。此类机器可读媒体可以是任何可用的媒 体,所述媒体可以由通用或专用计算机或者具有处理器的其他机器访 问。例如,此类机器可读媒体可以包括RAM、ROM、EPROM、 EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存装置, 或者任何其他媒体,其中所述任何其他媒体可以用来以机器可执行指 令或数据结构的形式携载或存储所需程序代码,并且可以由通用或专 用计算机或者具有处理器的其他机器访问。当信息通过网络或另一通 信连接(硬连线、无线,或者硬连线或无线的组合)传送或提供到机 器时,所述机器会适当地将所述连接视作机器可读媒体。因此,任何 此类连接均适当地称为机器可读媒体。上述内容的组合也在机器可读 媒体的范围内。例如,机器可执行指令包括指令和数据,所述指令和 数据会导致通用计算机、专用计算机或专用处理机来执行某一功能或 功能的组合。

将在方法步骤的一般背景下描述实施例,所述方法步骤在一项实 施例中可以由程序产品实施,所述程序产品包括程序代码等机器可执 行指令,例如,所述机器可执行指令采用在网络环境中由机器执行的 程序模块的形式。通常,程序模块包括具有执行特定任务的技术效果 或者实施特定抽象数据类型的例行程序、程序、对象、部件、数据结 构等。机器可执行指令、相关数据结构以及程序模块表示用于执行本 说明书中揭示的方法步骤的程序代码的实例。此类可执行指令或相关 数据结构的特定顺序表示用于实施此类步骤中描述的功能的对应行 为的实例。

在网络环境中,使用连接到一个或多个具有处理器的远程计算机 的逻辑连接,可以实践实施例。逻辑连接可以包括局域网(LAN)和 广域网(WAN),此处所述LAN和WAN是实例且并不限于此。此 类网络环境在办公室范围或企业范围的计算机网络、内联网和互联网 中都很平常,并且可以使用多种多样不同的通信协议。所属领域的技 术人员将了解,此类网络计算环境通常涵盖许多类型的计算机系统配 置,包括个人计算机、手持式装置、多处理器系统、基于微处理器或 可编程的消费性电子产品、网络PC、小型计算机、大型计算机等等。

还可以在分布式计算环境中实践实施例,其中由通过通信网络 (借助硬连线链路、无线链路,或者硬连线链路或无线链路的组合) 链接起来的本地和远程处理装置来执行任务。在分布式计算环境中, 程序模块可以位于本地和远程存储装置中。

用于实施全部或部分示例性实施例的示例性系统可能包括采用 计算机形式的通用计算装置,包括处理单元、系统存储器以及系统总 线,所述系统总线将包括所述系统存储器在内的各种系统部件连接到 所述处理单元。所述系统存储器可以包括只读存储器(ROM)和随机 存取存储器(RAM)。所述计算机还可以包括用于从磁硬盘中读取和 对其写入的磁硬盘驱动器、用于从移动磁盘中读取或对其写入的磁盘 驱动器,以及用于从CD-ROM或其他光学媒体等移动光盘中读取或 对其写入的光盘驱动器。所述驱动器及其相关机器可读媒体提供对机 器可执行指令、数据结构、程序模块,以及用于计算机的其他数据的 非易失性存储。

所述实施例中揭示的方法的技术效果包括提高并行处理应用程 序开发的效率。而且,考虑到无论顺序还是并行,多个硬件平台上的 应用程序的开发人员均无法以其他方式使用调试选项,所述方法对现 有软件和硬件调试技术做出改进。通过自动选择应用程序的最佳运行 时间状态,在现场平台上实施此项技术将提高系统的鲁棒性。

图4示出了根据本发明的一项实施例的模型100,其中根据本说 明书中提供的说明性实例,参考图1到图3图示并描述的现有技术瀑 布模型30已经得到改进。模型100是用于在并行计算环境中开发软 件的软件设计过程。该开发过程增加了称为瀑布模型30的顺序设计 过程,所述瀑布模型通常用在顺序处理软件开发中。所增加的阶段表 明同时开发软件程序的顺序和并行实现。所述过程则表明用于对照顺 序实现来检验并行实现的方法。

修正的瀑布模型100的阶段是需求110、设计112、顺序实现114、 顺序检验116、并行实现118、对照顺序实现的并行检验120,以及维 护122。需求阶段110连续连接到设计阶段112。设计阶段112连续 连接到顺序实现阶段114。顺序实现阶段114随后连接到顺序检验阶 段116和并行实现阶段118。顺序检验阶段116和并行实现阶段118 均连接到对照顺序实现的并行检验阶段120。对照顺序实现的并行检 验阶段120连续连接到维护阶段122。

修正的瀑布模型100的需求阶段110实施为瀑布模型30的需求 阶段32。除了瀑布模型30的设计阶段34的过程之外,修正瀑布模型 100的设计阶段112包括开发人员的额外草率分析,以确定哪些(如 果有的话)顺序算法将被转换成并行算法以用于并行实现。用于确定 哪些(如果有的话)顺序算法将被转换成并行算法以用于并行实现的 分析限于设计阶段112,这是因为当算法在计算机代码中实施时,需 求阶段110的初始需求以及设计阶段112的假设和需求可能改变。

设计阶段112完成之后,顺序实现阶段114开始。类似于瀑布模 型30的实现阶段36,顺序实现阶段114是软件开发周期中的阶段, 其中计算机代码实际上被编写。在顺序实现阶段114中开发的计算机 代码是在顺序处理环境中运行的软件的顺序实现。诸如速度等在需求 阶段32中开发的非功能需求将无需在顺序实现阶段114中得到满足。 在本发明的一项替代实施例中,顺序算法和并行算法各自具有一组需 求,而且顺序实现应符合顺序实现所提及的需求。一旦顺序实现阶段 114完成,更彻底的分析会确定哪些顺序算法将从并行化中受益最大。

顺序检验阶段116在顺序实现阶段114完成之后开始。类似于瀑 布模型30的检验阶段38,顺序检验阶段116的目标是检验软件的顺 序实现是否如预期那样工作。

在顺序检验阶段116发生的同时,并行实现阶段118可以开始。 并行实现阶段118的目标是在并行处理环境中开发所述软件的所述顺 序实现的并行实现。所述并行处理环境可以包括主流硬件架构,例如, 多核CPU和GPU。由于即使算法实现发生很小的变化部会导致并行 实现发生实质改变,因此,并行处理实现阶段118应直到顺序实现阶 段114结束之后才开始。

顺序检验116和并行实现118阶段都完成之后,并行检验120阶 段可以开始。并行检验阶段120对照所述软件的所述顺序实现的结果 来检验所述软件的所述并行实现的结果。

在所述软件的所述并行实现已在并行检验阶段120中检验之后, 修正的瀑布模型100的软件开发过程进入维护阶段122。类似于瀑布 模型30的维护阶段40,修正的瀑布模型100的维护阶段122是软件 项目从软件开发过程到演化式开发的迁移,借此,最终用户发现故障, 并且响应于这些故障和最终用户需求的变化,软件发生增量变化。

图5示出了过程200,所述过程可以用来执行修正的瀑布模型100 的并行代码检验阶段120。在此过程200中,为了检验并行代码实现, 可以开发一系列测试并由软件开发人员来执行这些测试,以将输出和 结果与先前检验的软件的顺序实现进行比较。所述过程可以从并行实 现的可信度测试210开始。随后,所述可信度测试的结果可以与顺序 实现218的结果相比较。成功比较结果之后,所述过程可以继续并行 实现的单元测试212。随后,所述单元测试的结果可以与顺序实现218 的结果相比较。成功比较结果之后,所述过程可以继续并行实现的边 角测试(cornertesting)214。随后,所述边角测试的结果可以与顺序 实现218的结果相比较。成功比较结果之后,所述过程可以继续并行 实现的边缘测试216。随后,所述边缘测试的结果可以与顺序实现218 的结果相比较。

并行实现检验开始之后,软件开发人员可以开发并执行可信度测 试210。可信度测试通常是用来快速检验软件实现的整体功能的非正 式测试方法。由于可能已经针对顺序实现在顺序检验阶段116中开发 了一系列测试,因此,可信度测试210的结果可以与针对顺序检验阶 段116开发的类似测试的结果相比较。

在已经对照顺序实现的结果检验了可信度测试的结果之后,软件 开发人员可以开发并执行单元测试212。单元测试是检验特定软件代 码段的功能的测试软件部件方法。由于可能已经针对顺序实现在顺序 检验阶段116中开发了一系列单元测试,因此,单元测试212的结果 可以与针对顺序检验阶段116开发的类似测试的结果相比较。

在已经对照顺序实现的结果检验了单元测试的结果之后,软件开 发人员可以开发并执行边角测试214。边角测试是测试反常情况的方 法,其中软件必须处理仅在正常操作参数之外的输入。由于可能已经 针对顺序实现在顺序检验阶段116中开发了一系列边角测试,因此, 边角测试214的结果可以与针对顺序检验阶段116开发的类似测试的 结果相比较。

在已经对照顺序实现的结果检验了边角测试的结果之后,软件开 发人员可以开发并执行边缘测试216。边缘测试是测试反常情况的方 法,其中软件必须处理一些输入,而在这些输入中只有单个参数在正 常操作参数之外。由于可能已经针对顺序实现在顺序检验阶段116中 开发了一系列边缘测试,因此,边缘测试216的结果可以与针对顺序 检验阶段116开发的类似测试的结果相比较。

为了对照软件的顺序实现的结果来检验软件的并行实现的结果, 软件开发人员可以对软件的并行实现的结果执行可信度测试,并且将 所述结果与得自顺序检验阶段的顺序实现的结果进行比较。此外,开 发人员将对软件的并行实现的结果执行单元测试、边角测试以及边缘 测试,并且将所述结果与得自顺序检验阶段的顺序实现的结果进行比 较。

将修正的瀑布方法100用作并行软件开发工具,通过让开发人员 确信并快速地测试并行实现,软件开发人员可以开发出更具灵活性的 并行实现。作为软件开发工具,根据本发明的一项实施例的修正的瀑 布方法100允许在顺序检验阶段116完成之后自动生成多个不同的并 行测试场景。由于众所周知,并行实现的可信度测试比较困难且耗时, 因此,根据本发明的一项实施例的修正瀑布方法100为并行实现提供 一种快速而可靠的方式来审查结果,方法是与顺序检验阶段116中的 先前审查的结果进行比较。

通过在将修正的瀑布方法100用作并行软件开发工具的情况下开 发软件,用于并行处理的硬件架构的性能测试和现场调试得到大大提 高。在并行实现与顺序实现之间转换所部署的软件允许对硬件架构进 行基准检查。顺序实现可对硬件的速度进行基线评估。使用顺序实现 基准,开发人员可以在多个不同的硬件架构上对并行实现的基准进行 知情比较(informedcomparisons)。例如,开发人员或最终用户可以 将若干个不同的GPU卡换成硬件系统,并且收集性能指标以用于比 较。此外,所述开发人员或最终用户可以将来自所述GPU卡和集成 有CPU的硬件系统的性能指标进行比较。

同样,通过用修正的瀑布方法100开发软件,现场调试可以得到 提高,这是因为如果现场出现错误,那么开发人员可以将软件的顺序 实现换成并行实现。例如,GPU故障的隔离方式可以是在所述GPU 上运行顺序和并行代码,其中针对顺序代码选择单独的存储地址,以 便隔离所述GPU中的处理链。转换所述实现可以用来隔离硬件或软 件故障等错误。例如,开发人员确定程序在第一硬件配置下工作,而 并不在第二硬件配置下工作。由于能够在两个配置之间转换,开发人 员可以在代码中快速隔离错误的具体功能和目标位置。

修正的瀑布方法100作为并行软件开发工具的另一益处在于软件 产品的部署。由于开发过程造成软件的并行和顺序实现,因此,平台 鲁棒性增加。所述软件开发工具可以经配置以检测所述软件的运行时 间状态是否可支持平台上的并行处理实现,其中所述并行处理实现是 已经针对所述平台部署的。例如,所述软件开发工具可以将顺序实现 部署在具有单核CPU的系统上,而将并行实现部署在基于GPU的系 统上。

修正的瀑布方法100的另一益处在于,在顺序实现和并行实现之 前,可高度重用需求和检验阶段的结果。由于无需单独针对每个所得 实现逐步通过这些阶段,因此,开发人员可以节省时间并且更快地开 发功能实现。类似地,用一组确认结果来比较并检验两个实现也具有 省时的益处。

本说明书使用了各种实例来揭示本发明,包括最佳模式,同时也 让所属领域的任何技术人员能够实践本发明,包括制造并使用任何装 置或系统,以及实施所涵盖的任何方法。本发明的保护范围由权利要 求书界定,并可包括所属领域的一般技术人员想出的其他实例。如果 其他此类实例的结构要素与权利要求书的字面意思相同,或如果此类 实例包括的等效结构要素与权利要求书的字面意思无实质差别,则此 类实例也属于权利要求书的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号