CN103593179B - 用于在并行计算环境中开发软件的方法 - Google Patents
用于在并行计算环境中开发软件的方法 Download PDFInfo
- Publication number
- CN103593179B CN103593179B CN201310357753.3A CN201310357753A CN103593179B CN 103593179 B CN103593179 B CN 103593179B CN 201310357753 A CN201310357753 A CN 201310357753A CN 103593179 B CN103593179 B CN 103593179B
- Authority
- CN
- China
- Prior art keywords
- software
- parallel
- sequence
- result
- realized
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
Abstract
本发明公开一种用于在并行计算环境中开发软件的方法。所述方法包括以下步骤:开发所述软件的顺序实现和并行实现;以及对照所述软件的所述顺序实现的结果来检验所述软件的所述并行实现的结果。
Description
技术领域
软件开发过程已经得到发展,从而在程序的整个生命周期内提高软件产品的生产率和质量。随着个人和商用计算处理器已从单核处理单元(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的另一益处在于,在顺序实现和并行实现之前,可高度重用需求和检验阶段的结果。由于无需单独针对每个所得实现逐步通过这些阶段,因此,开发人员可以节省时间并且更快地开发功能实现。类似地,用一组确认结果来比较并检验两个实现也具有省时的益处。
本说明书使用了各种实例来揭示本发明,包括最佳模式,同时也让所属领域的任何技术人员能够实践本发明,包括制造并使用任何装置或系统,以及实施所涵盖的任何方法。本发明的保护范围由权利要求书界定,并可包括所属领域的一般技术人员想出的其他实例。如果其他此类实例的结构要素与权利要求书的字面意思相同,或如果此类实例包括的等效结构要素与权利要求书的字面意思无实质差别,则此类实例也属于权利要求书的范围。
Claims (10)
1.一种用于在并行计算环境中开发软件的方法,所述方法包括以下步骤:
在顺序处理环境中开发所述软件的顺序实现;
检验所述软件的所述顺序实现是否如预期那样工作;
在并行处理环境中开发所述软件的所述顺序实现的并行实现;
对照所述软件的所述顺序实现的结果来检验所述软件的所述并行实现的结果;
其中,所述顺序实现和所述并行实现在不同的硬件架构上。
2.根据权利要求1所述的用于在并行计算环境中开发软件的方法,其进一步包括以下步骤:维护所述软件的所述顺序实现和所述软件的所述并行实现。
3.根据权利要求1所述的用于在并行计算环境中开发软件的方法,其进一步包括以下步骤:
确定所述软件的需求;以及
确定所述软件的设计;
其中这些步骤在以下所述步骤之前执行:在所述顺序处理环境中开发所述软件。
4.根据权利要求1所述的用于在并行计算环境中开发软件的方法,其中在并行处理环境中开发所述软件的所述顺序实现的并行实现的所述步骤通常与以下所述步骤同时执行:检验所述软件的所述顺序实现是否如预期那样工作。
5.根据权利要求1所述的用于在并行计算环境中开发软件的方法,其中所述并行处理环境包括至少一个GPU。
6.根据权利要求1所述的用于在并行计算环境中开发软件的方法,其中所述并行处理环境包括至少一个多核处理器。
7.根据权利要求1所述的用于在并行计算环境中开发软件的方法,其中所述顺序处理环境包括至少一个CPU。
8.根据权利要求1所述的用于在并行计算环境中开发软件的方法,其中对照所述软件的所述顺序实现的结果来检验所述软件的所述并行实现的结果的所述步骤包括以下步骤中的至少一者:
(a)对所述软件的所述并行实现的所述结果执行可信度测试,并且将所述结果与所述顺序实现的所述结果相比较;
(b)对所述软件的所述并行实现的所述结果执行至少一个单元测试,并且将所述结果与所述顺序实现的所述结果相比较;
(c)对所述软件的所述并行实现的所述结果执行至少一个边角测试,并且将所述结果与所述顺序实现的所述结果相比较;以及
(d)对所述软件的所述并行实现的所述结果执行至少一个边缘测试,并且将所述结果与所述顺序实现的所述结果相比较。
9.根据权利要求1所述的用于在并行计算环境中开发软件的方法,其进一步包括以下步骤:检测所述软件的运行时间状态是否可以支持并行处理。
10.根据权利要求9所述的用于在并行计算环境中开发软件的方法,其进一步包括以下步骤:基于所述检测所述软件的运行时间状态是否可以支持并行处理的步骤所给出的信号,在并行处理模式下运行所述软件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/588,485 US9015673B2 (en) | 2012-08-17 | 2012-08-17 | Method for developing software in a parallel computing environment |
US13/588485 | 2012-08-17 | ||
US13/588,485 | 2012-08-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103593179A CN103593179A (zh) | 2014-02-19 |
CN103593179B true CN103593179B (zh) | 2019-03-01 |
Family
ID=48986011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310357753.3A Expired - Fee Related CN103593179B (zh) | 2012-08-17 | 2013-08-16 | 用于在并行计算环境中开发软件的方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9015673B2 (zh) |
EP (1) | EP2698709A1 (zh) |
JP (1) | JP6310206B2 (zh) |
CN (1) | CN103593179B (zh) |
BR (1) | BR102013019517A2 (zh) |
CA (1) | CA2822676A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9015673B2 (en) * | 2012-08-17 | 2015-04-21 | Ge Aviation Systems, Llc | Method for developing software in a parallel computing environment |
US10055263B2 (en) * | 2016-04-01 | 2018-08-21 | Ebay Inc. | Optimization of parallel processing using waterfall representations |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4050339B2 (ja) * | 1994-04-28 | 2008-02-20 | 株式会社東芝 | 並行プログラム作成支援装置及び並行プログラム作成方法並びに並行プログラム実行装置 |
US5860009A (en) * | 1994-04-28 | 1999-01-12 | Kabushiki Kaisha Toshiba | Programming method for concurrent programs and program supporting apparatus thereof |
US7174536B1 (en) * | 2001-02-12 | 2007-02-06 | Iowa State University Research Foundation, Inc. | Integrated interactive software visualization environment |
US7089534B2 (en) * | 2002-05-01 | 2006-08-08 | International Business Machines Corporation | Model based test generation for validation of parallel and concurrent software |
US7159211B2 (en) * | 2002-08-29 | 2007-01-02 | Indian Institute Of Information Technology | Method for executing a sequential program in parallel with automatic fault tolerance |
CN1310150C (zh) * | 2002-11-21 | 2007-04-11 | 中兴通讯股份有限公司 | 一种嵌入式软件测试方法 |
EP1569104A3 (en) * | 2004-01-09 | 2006-05-03 | Interuniversitair Microelektronica Centrum Vzw | An automated method for performing parallelization of sequential code and a computerized system adapted therefore |
US7926046B2 (en) * | 2005-12-13 | 2011-04-12 | Soorgoli Ashok Halambi | Compiler method for extracting and accelerator template program |
US8060879B2 (en) * | 2006-05-30 | 2011-11-15 | Oracle America, Inc. | Predictive log synchronization |
US8132153B2 (en) | 2007-05-09 | 2012-03-06 | Wipro Limited | Quality management framework for a software lifecycle |
US8234621B2 (en) * | 2008-03-12 | 2012-07-31 | Siemens Aktiengesellschaft | Rule based instantiation of software- and system development processes |
FR2931269A1 (fr) * | 2008-05-16 | 2009-11-20 | Ateji Soc Par Actions Simplifi | Procede et systeme de developpement de programmes paralleles |
US8949786B2 (en) * | 2008-12-01 | 2015-02-03 | Kpit Technologies Limited | Method and system for parallelization of sequential computer program codes |
US8413122B2 (en) * | 2009-02-12 | 2013-04-02 | International Business Machines Corporation | System and method for demonstrating the correctness of an execution trace in concurrent processing environments |
JP5504879B2 (ja) * | 2009-12-25 | 2014-05-28 | 富士通株式会社 | マルチスレッド処理方法及びマルチスレッド処理装置 |
CN101963918B (zh) * | 2010-10-26 | 2013-05-01 | 上海交通大学 | 实现cpu/gpu异构平台的虚拟执行环境的方法 |
CN102456175A (zh) * | 2010-10-26 | 2012-05-16 | 镇江精英软件科技有限公司 | 一种软件开发过程管理方法 |
US9069893B2 (en) * | 2011-03-23 | 2015-06-30 | International Business Machines Corporation | Automatic verification of determinism for parallel programs |
US20130174124A1 (en) * | 2011-12-29 | 2013-07-04 | Christina Watters | Version numbering in single development and test environment |
US8533676B2 (en) * | 2011-12-29 | 2013-09-10 | Unisys Corporation | Single development test environment |
US8745585B2 (en) * | 2011-12-29 | 2014-06-03 | Unisys Corporation | Meta-data for single development test environment |
CN102508704A (zh) * | 2011-11-10 | 2012-06-20 | 上海市共进通信技术有限公司 | 计算机软件系统中实现任务分解和并行处理控制的方法 |
US9465632B2 (en) * | 2012-02-04 | 2016-10-11 | Global Supercomputing Corporation | Parallel hardware hypervisor for virtualizing application-specific supercomputers |
US9015673B2 (en) * | 2012-08-17 | 2015-04-21 | Ge Aviation Systems, Llc | Method for developing software in a parallel computing environment |
US10387293B2 (en) * | 2012-10-09 | 2019-08-20 | Securboration, Inc. | Systems and methods for automatically parallelizing sequential code |
-
2012
- 2012-08-17 US US13/588,485 patent/US9015673B2/en active Active
-
2013
- 2013-07-31 BR BRBR102013019517-0A patent/BR102013019517A2/pt not_active Application Discontinuation
- 2013-08-01 CA CA2822676A patent/CA2822676A1/en not_active Abandoned
- 2013-08-05 JP JP2013161940A patent/JP6310206B2/ja not_active Expired - Fee Related
- 2013-08-14 EP EP20130180446 patent/EP2698709A1/en not_active Withdrawn
- 2013-08-16 CN CN201310357753.3A patent/CN103593179B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
BR102013019517A2 (pt) | 2015-01-13 |
US9015673B2 (en) | 2015-04-21 |
CN103593179A (zh) | 2014-02-19 |
JP2014038613A (ja) | 2014-02-27 |
EP2698709A1 (en) | 2014-02-19 |
CA2822676A1 (en) | 2014-02-17 |
US20140053137A1 (en) | 2014-02-20 |
JP6310206B2 (ja) | 2018-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Battina | Artificial intelligence in software test automation: A systematic literature review | |
BR102016018127A2 (pt) | método para projeto com base em modelo de software de segurança crítica | |
US20050160103A1 (en) | System and method for simulating product design and development | |
US20140372989A1 (en) | Identification of a failed code change | |
US11586433B2 (en) | Pipeline release validation | |
US10917456B2 (en) | Application management in an application deployment pipeline | |
CN111198811A (zh) | 一种页面自动化测试的方法、装置、电子设备及存储介质 | |
Mısırlı et al. | Different strokes for different folks: A case study on software metrics for different defect categories | |
CN103593179B (zh) | 用于在并行计算环境中开发软件的方法 | |
US9298858B1 (en) | System and method for reducing models based on a criterion | |
CN113918465A (zh) | 兼容性测试方法、装置、电子设备及可读存储介质 | |
Adorf et al. | How to professionally develop reusable scientific software—and when not to | |
Pitakrat | Hora: Online Failure Prediction Framework for Component-based Software Systems Based on Kieker and Palladio. | |
WO2020055659A1 (en) | Generation and utilization of self-improving data-driven models with selective simulation of 3d object design | |
KR20110067418A (ko) | 자가치유 시스템의 모니터링 및 치유성능 평가를 위한 시스템 및 방법 | |
Ibrahim et al. | Chasing the rainbow: Streamlined tool qualification | |
Li et al. | Quality assurance for component-based systems in embedded environments | |
Cheung et al. | Identifying and addressing uncertainty in architecture-level software reliability modeling | |
Wienke et al. | Continuous regression testing for component resource utilization | |
Kochaleema et al. | Methodology for Integrating Computational Tree Logic Model Checking in Unified Modelling Language Artefacts: A Case Study of an Embedded Controller. | |
Jacob et al. | Regression testing: Tabu search technique for code coverage | |
Ronchieri et al. | A software quality model by using discriminant analysis predictive technique | |
Wedyan et al. | Integration and Unit Testing of Software Energy Consumption | |
Hosseini et al. | A new framework for cloud based application testing | |
KUMAR | AUTOMATED TESTING AND DATA MINING ANALYSIS OF NARRATIVE APPROACH IN SOFTWARE TESTING PROCESS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190301 Termination date: 20210816 |