CN109375991B - 一种将单进程改造为多进程的方法及系统 - Google Patents
一种将单进程改造为多进程的方法及系统 Download PDFInfo
- Publication number
- CN109375991B CN109375991B CN201710681351.7A CN201710681351A CN109375991B CN 109375991 B CN109375991 B CN 109375991B CN 201710681351 A CN201710681351 A CN 201710681351A CN 109375991 B CN109375991 B CN 109375991B
- Authority
- CN
- China
- Prior art keywords
- program
- batch
- independent
- thread
- batch processing
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Abstract
本发明提供了一种将单进程改造为多进程的方法和系统,该方法包括:计算实体程序改造步骤,改造单进程模块中的单线程计算实体程序,以使改造后的单线程计算实体程序可接受命令行参数;批处理程序生成步骤,改造后的单线程计算实体程序接受不同取值的命令行参数,生成批处理程序并存储于批处理文件中;独立进程生成步骤,基于批处理程序,利用批处理命令调用单线程计算实体程序,以生成对应不同取值的命令行参数的多个独立进程;独立进程执行步骤,将多个独立进程交由操作系统来执行并自动调度处理。本发明可以充分利用操作系统性能,提高计算速度。
Description
技术领域
本发明属于并行计算技术领域,具体地说,尤其涉及一种将单进程改造为多进程的方法和系统。
背景技术
现今的计算机硬件具有比以前强大得多的计算能力。近年来,CPU无论在主频率上还是处理器核数上,都在飞速发展。在硬件技术不断发展的同时,软件技术也要求同时进步,以充分发挥硬件的性能。
目前,并行计算技术已经有了长足的发展。针对计算机体系和开发语言,产生了多种并行编程模型。但是,现有并行编程技术往往比较复杂,学习这些技术和实际开发都有较大的成本,影响了在实际计算中的应用。特别是利用传统方法开发的单进程计算软件,要进行并行计算改造,其代价几乎等于重新开发。
目前,主要的操作系统,如Windows是抢先式多任务、多线程操作系统,都支持多进程计算。操作系统可以自动调度管理多个进程的运行。计算机高级语言有着广泛的应用,积累了大量的程序模块。但是,这些程序模块往往是单线程的,对其进行多线程改造需要借助新的编程技术和依赖新的编译系统。要在运行这些程序时充分发挥硬件的能力,提高计算速度,还需要在计算软件的开发上应用与传统单进程不同的技术。
发明内容
为解决以上问题,本发明提供了一种将单进程改造为多进程的方法和系统,用以充分利用操作系统性能,提高计算速度。
根据本发明的一个方面,提供了一种将单进程改造为多进程的方法,包括:
计算实体程序改造步骤,改造单进程模块中的单线程计算实体程序,以使改造后的单线程计算实体程序可接受命令行参数;
批处理程序生成步骤,使所述改造后的单线程计算实体程序接受不同取值的命令行参数,生成批处理程序并存储于批处理文件中;
独立进程生成步骤,基于所述批处理程序,利用批处理命令调用所述单线程计算实体程序,以生成对应不同取值的命令行参数的多个独立进程;
独立进程执行步骤,将所述多个独立进程交由操作系统来执行并自动调度处理。
根据本发明的一个实施例,在批处理程序生成步骤中,采用高级编程语言生成所述批处理程序。
根据本发明的一个实施例,在独立进程执行步骤中,采用支持多进程计算的操作系统来并行执行所述多个独立进程。
根据本发明的一个实施例,所述单线程计算实体程序的前后循环计算结果不相互依赖。
根据本发明的一个实施例,所述单线程计算实体程序采用高级编程语言编写。
根据本发明的另一个方面,还提供了一种将单进程改造为多进程的系统,包括:
计算实体程序改造单元,其配置为改造单进程模块中的单线程计算实体程序,以使改造后的单线程计算实体程序可接受命令行参数;
批处理程序生成单元,其配置为使所述改造后的单线程计算实体程序接受不同取值的命令行参数,生成批处理程序并存储于批处理文件中;
独立进程生成单元,其配置为基于所述批处理程序,利用批处理命令调用所述单线程计算实体程序,以生成对应不同取值的命令行参数的多个独立进程;
独立进程执行单元,其配置为将所述多个独立进程交由操作系统来执行并自动调度处理。
根据本发明的一个实施例,所述批处理文件生成单元具体用于采用高级编程语言生成所述批处理程序。
根据本发明的一个实施例,所述独立进程执行单元具体用于采用支持多进程计算的操作系统来并行执行所述多个独立进程。
根据本发明的一个实施例,所述单线程计算实体程序前后循环计算结果不相互依赖。
根据本发明的一个实施例,所述单线程计算实体程序采用高级编程语言编写。
本发明的有益效果:
本发明通过一种简易的单进程改造为多进程的方法,不需要复杂的并行计算技术,不需要对原有单线程程序进行并行化改造,可以充分利用计算机性能,成倍提高计算速度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要的附图做简单的介绍:
图1是根据本发明的一个实施例的一种将单进程改造为多进程的方法流程图;
图2是根据本发明的一个实施例的多进程改造示意图;
图3是根据本发明的一个实施例的一种将单进程改造为多进程的系统结构图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
现有的并行计算技术可以充分发挥计算机的性能,但是在编程上采取的技术与传统单线程方法很不相同,虽然通过对原有高级语言程序进行改造可以达到要求,但其代价很大。
因此,本发明针对现有传统高级语言编程的单进程单线程模块,利用现有Windows等操作系统可以支持多进程的特点,提供了一种将单进程改造为多进程的简单易行的方法,用以提高计算速度。如图1所示为根据本发明的一个实施例的一种将单进程改造为多进程的方法流程图,以下参考图1来对本发明进行详细说明。
首先是步骤S110,计算实体程序改造步骤,即改造单进程模块中的单线程计算实体程序,以使改造后的单线程计算实体程序可接受命令行参数。现有技术中的单进程模块通常采用传统高级语言编程,一个单进程模块中至少包括一个单线程实体计算程序。本发明改造的对象即为具有单线程的单进程模块,利用现有高级编程语言均具有接受命令行参数的功能,将原来不能接受命令行参数的单线程计算实体改造为可接受命令行参数。
如图2所示为根据本发明的一个实施例的多进程改造示意图,其中,原单线程程序A表示某单进程模块中的一个单线程实体计算程序。该程序A为一循环实体计算程序,计算实体表示该程序A的实体计算程序中程序执行部分。对程序A进行改造,得到改造的单线程程序B。改造的单线程程序B能够接受命令行参数m,并将命令行参数m赋值给计算实体来进行计算。此处,原单线程程序A与改造的单线程程序B中的计算实体相同,不需要对原单线程程序A中的计算实体进行修改。
以上将原单线程程序A改造为单线程程序B的方法,只需对单进程模块中的原有实体计算程序稍作改造,使之接受命令行参数,从而只计算原来循环计算中的一项或一部分任务,并产生所对应的输出。因为是简化改造,而且无需改动计算核心部分,所以这样的修改是容易实现的。
接着是步骤S120,批处理程序生成步骤,即改造后的单线程计算实体程序接受不同取值的命令行参数,生成批处理程序并存储于批处理文件中。优选地,采用高级语言编程生成批处理程序,例如可以采用FORTRAN、Visual Basic等高级编程语言生成批处理程序。由于是由高级语言生成批处理程序,所以具有与高级编程语言编写的单进程模块完全一样的灵活性,不需要人工干预。
批处理文件是扩展名为.bat的文本文件,包含一条或多条命令,由DOS或Windows系统内嵌的命令解释器来解释运行。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本程序),可以简化日常或重复性任务。批处理的本质是一系列DOS命令按一定顺序排列而形成的集合。因此,根据不同取值的命令行参数,可以生成多个顺序执行的命令,并保存在批处理文件中。在执行时,批处理命令可以根据批处理文件中保存的命令顺序执行。
接着是步骤S130,独立进程生成步骤,即基于批处理程序,利用批处理命令调用单线程计算实体程序,以生成对应不同取值的命令行参数的多个独立进程。具体的,可以利用操作系统自带的系统语句执行批处理命令,如采用START/b语句根据批处理文件调用一系列带有不同参数的实体计算程序,这样就可以形成对应不同取值的命令行参数的多个独立进程。如图2所示,在打开批处理文件R.bat之后,对应于不同取值的命令行参数,采用批处理命令START/b进行并行处理。一个并行处理的过程为一个独立的进程,并行处理完毕关闭处理文件R.bat。
进程是能独立运行的基本单位,同时也是系统分配资源和调度的独立单位,任何进程都可以同其他进程一起并发执行。因此,将一项任务由单进程改造为多进程执行,可以充分利用计算机性能,提高计算速度。另外,由于多个进程之间不共享内存,还避免了内存冲突等一般多线程并行编程中容易遇到的问题。但是,由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。因此,在本发明中,要求并行执行的各独立进程内部的计算实体程序前后循环计算结果不相互依赖。
最后是步骤S140,独立进程执行步骤,即将多个独立进程交由操作系统来执行并自动调度处理。优选地,采用支持多进程计算的操作系统来并行执行多个独立进程,这样就可以成倍提高计算速度。执行完毕后,检测实体计算程序生成的结果文件,据此在屏幕输出运算进度情况并在计算结束后退出程序。
以下通过一个具体的实施例来对本发明进行验证说明。在盆地模拟流程中,有一个单进程模块是用于计算各层的生烃量或者排烃量,其功能是把各细分层的计算结果累计到地质概念的层位中去。由于层位很多,原先的单进程计算,只能使用一部分CPU负载。采用本发明的方法后,使得计算效率大幅度提高,CPU负载可以达到90%以上。计算的速度与CPU的核数增加基本一致,可以充分发挥计算机的性能。以4核计算机为例,针对某一个相同的算例,原先需要35秒,改造后9秒就完成了,CPU负载峰值可以达到100%。
根据本发明的另一个方面,还提供了一种将单进程改造为多进程的系统,包括计算实体程序改造单元、批处理程序生成单元、独立进程生成单元和独立进程执行单元,如图3所示。其中,计算实体程序改造单元用于改造单进程模块中的单线程计算实体程序,以使改造后的单线程计算实体程序可接受命令行参数。批处理程序生成单元用于使改造后的单线程计算实体程序接受不同取值的命令行参数,生成批处理程序并存储于批处理文件中。独立进程生成单元用于基于批处理程序,利用批处理命令调用单线程计算实体程序,以生成对应不同取值的命令行参数的多个独立进程。独立进程执行单元用于将多个独立进程交由操作系统来执行并自动调度处理。
根据本发明的一个实施例,该批处理文件生成单元采用高级编程语言生成批处理程序。
根据本发明的一个实施例,独立进程执行单元采用支持多进程计算的操作系统来并行执行多个独立进程。
根据本发明的一个实施例,该单线程计算实体程序前后循环计算结果不相互依赖。
根据本发明的一个实施例,该单线程计算实体程序采用高级编程语言编写。
本发明通过建立一个简易的多进程程序,使得原来单进程运行的计算程序实现了多进程运行,可以充分利用计算机性能,提高了计算的速度。本发明的单进程改造为多进程的方法简单、易学、易用,不需要学习复杂的多进程技术,同时由于各进程不共享内存,也避免了内存冲突等一般多进程编程中容易碰到的问题。利用本发明所述的方法,在实际软件开发中,对部分原有计算软件模块进行加速改造,已取得了较好的效果,成倍提高了计算速度。
虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (10)
1.一种将单进程改造为多进程的方法,包括:
计算实体程序改造步骤,改造单进程模块中的单线程计算实体程序,以使改造后的单线程计算实体程序可接受命令行参数;
批处理程序生成步骤,使所述改造后的单线程计算实体程序接受不同取值的命令行参数,生成批处理程序并存储于批处理文件中;
独立进程生成步骤,基于所述批处理程序,利用批处理命令调用所述单线程计算实体程序,以生成对应不同取值的命令行参数的多个独立进程;
独立进程执行步骤,将所述多个独立进程交由操作系统来执行并自动调度处理。
2.根据权利要求1所述的方法,其特征在于,在批处理程序生成步骤中,采用高级编程语言生成所述批处理程序。
3.根据权利要求1所述的方法,其特征在于,在独立进程执行步骤中,采用支持多进程计算的操作系统来并行执行所述多个独立进程。
4.根据权利要求1所述的方法,其特征在于,所述单线程计算实体程序的前后循环计算结果不相互依赖。
5.根据权利要求1所述的方法,其特征在于,所述单线程计算实体程序采用高级编程语言编写。
6.一种将单进程改造为多进程的系统,包括:
计算实体程序改造单元,其配置为改造单进程模块中的单线程计算实体程序,以使改造后的单线程计算实体程序可接受命令行参数;
批处理程序生成单元,其配置为使所述改造后的单线程计算实体程序接受不同取值的命令行参数,生成批处理程序并存储于批处理文件中;
独立进程生成单元,其配置为基于所述批处理程序,利用批处理命令调用所述单线程计算实体程序,以生成对应不同取值的命令行参数的多个独立进程;
独立进程执行单元,其配置为将所述多个独立进程交由操作系统来执行并自动调度处理。
7.根据权利要求6所述的系统,其特征在于,所述批处理文件生成单元具体用于采用高级编程语言生成所述批处理程序。
8.根据权利要求6所述的系统,其特征在于,所述独立进程执行单元具体用于采用支持多进程计算的操作系统来并行执行所述多个独立进程。
9.根据权利要求6所述的系统,其特征在于,所述单线程计算实体程序前后循环计算结果不相互依赖。
10.根据权利要求6所述的系统,其特征在于,所述单线程计算实体程序采用高级编程语言编写。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710681351.7A CN109375991B (zh) | 2017-08-10 | 2017-08-10 | 一种将单进程改造为多进程的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710681351.7A CN109375991B (zh) | 2017-08-10 | 2017-08-10 | 一种将单进程改造为多进程的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109375991A CN109375991A (zh) | 2019-02-22 |
CN109375991B true CN109375991B (zh) | 2021-07-27 |
Family
ID=65404178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710681351.7A Active CN109375991B (zh) | 2017-08-10 | 2017-08-10 | 一种将单进程改造为多进程的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109375991B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111654674B (zh) * | 2020-06-04 | 2021-10-22 | 上海鸢安智能科技有限公司 | 基于单个ffmpeg进程并行处理多个视频源的方法、软件系统、终端 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1732433A (zh) * | 2001-06-28 | 2006-02-08 | 英特尔公司 | 能够隐式地多线程执行单线程程序的多线程处理器 |
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
CN101916203A (zh) * | 2010-08-18 | 2010-12-15 | 优视科技有限公司 | 服务于移动通讯的终端软件平台的编译方法及系统 |
CN103605498A (zh) * | 2013-12-05 | 2014-02-26 | 用友软件股份有限公司 | 单线程任务的多线程执行方法及系统 |
CN105426256A (zh) * | 2015-11-03 | 2016-03-23 | 中国电子科技集团公司第二十八研究所 | 一种基于多进程协同的大批量实时目标并行处理方法 |
CN105487924A (zh) * | 2015-11-30 | 2016-04-13 | 中国建设银行股份有限公司 | 一种批处理控制方法及装置 |
CN105528257A (zh) * | 2016-01-08 | 2016-04-27 | 腾讯科技(深圳)有限公司 | 一种单进程数据处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155600B2 (en) * | 2003-04-24 | 2006-12-26 | International Business Machines Corporation | Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor |
-
2017
- 2017-08-10 CN CN201710681351.7A patent/CN109375991B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1732433A (zh) * | 2001-06-28 | 2006-02-08 | 英特尔公司 | 能够隐式地多线程执行单线程程序的多线程处理器 |
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
CN101916203A (zh) * | 2010-08-18 | 2010-12-15 | 优视科技有限公司 | 服务于移动通讯的终端软件平台的编译方法及系统 |
CN103605498A (zh) * | 2013-12-05 | 2014-02-26 | 用友软件股份有限公司 | 单线程任务的多线程执行方法及系统 |
CN105426256A (zh) * | 2015-11-03 | 2016-03-23 | 中国电子科技集团公司第二十八研究所 | 一种基于多进程协同的大批量实时目标并行处理方法 |
CN105487924A (zh) * | 2015-11-30 | 2016-04-13 | 中国建设银行股份有限公司 | 一种批处理控制方法及装置 |
CN105528257A (zh) * | 2016-01-08 | 2016-04-27 | 腾讯科技(深圳)有限公司 | 一种单进程数据处理方法及装置 |
Non-Patent Citations (1)
Title |
---|
多进程下子程序综合方法研究;胡燕翔等;《计算机工程》;20061231;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109375991A (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103336718B (zh) | 一种gpu线程调度优化方法 | |
JP5411587B2 (ja) | マルチスレッド実行装置、マルチスレッド実行方法 | |
US9310875B2 (en) | Instruction that specifies an application thread performance state | |
JP2011507112A5 (zh) | ||
CN101441564B (zh) | 为程序定制的可重构加速器实现方法 | |
CN105159654A (zh) | 基于多线程并行的完整性度量散列算法优化方法 | |
CN107479981B (zh) | 一种基于异步调用实现同步调用的处理方法及装置 | |
US20160179484A1 (en) | Code Generating Method, Compiler, Scheduling Method, Scheduling Apparatus and Scheduling System | |
Tang et al. | Scheduling computation graphs of deep learning models on manycore cpus | |
Sunitha et al. | Performance improvement of CUDA applications by reducing CPU-GPU data transfer overhead | |
Choi et al. | Graphics-aware power governing for mobile devices | |
CN109375991B (zh) | 一种将单进程改造为多进程的方法及系统 | |
CN111026444A (zh) | 一种gpu并行阵列simt指令处理模型 | |
WO2019153681A1 (zh) | 一种智能指令调度器 | |
Rubini et al. | Scheduling analysis from architectural models of embedded multi-processor systems | |
CN105378652A (zh) | 线程共享资源分配方法及装置 | |
Pereira et al. | Extending OpenACC for efficient stencil code generation and execution by skeleton frameworks | |
US20130179864A1 (en) | Deadlock free synchronization synthesizer for must-happen-before relations in parallel programs and method thereof | |
WO2019136983A1 (zh) | 一种低延迟指令调度器 | |
KR101420592B1 (ko) | 컴퓨터 시스템 | |
WO2019153683A1 (zh) | 一种可配置且具弹性的指令调度器 | |
US9870599B2 (en) | Analysis system and method for reducing the control flow divergence in the Graphics Processing Units (GPUs) | |
Shekhar et al. | Comparison of parallel programming models for multicore architectures | |
Udupa et al. | Synergistic execution of stream programs on multicores with accelerators | |
Khatami et al. | Using hpx and op2 for improving parallel scaling performance of unstructured grid applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |