CN104657111A - 一种并行计算方法和装置 - Google Patents

一种并行计算方法和装置 Download PDF

Info

Publication number
CN104657111A
CN104657111A CN201310589149.3A CN201310589149A CN104657111A CN 104657111 A CN104657111 A CN 104657111A CN 201310589149 A CN201310589149 A CN 201310589149A CN 104657111 A CN104657111 A CN 104657111A
Authority
CN
China
Prior art keywords
data
computing module
thread
computing
parallel
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.)
Pending
Application number
CN201310589149.3A
Other languages
English (en)
Inventor
车万毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Founder Information Industry Holdings Co Ltd
Founder Mobile Media Technology Beijing Co Ltd
Original Assignee
Founder Information Industry Holdings Co Ltd
Founder Mobile Media Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Founder Information Industry Holdings Co Ltd, Founder Mobile Media Technology Beijing Co Ltd filed Critical Founder Information Industry Holdings Co Ltd
Priority to CN201310589149.3A priority Critical patent/CN104657111A/zh
Publication of CN104657111A publication Critical patent/CN104657111A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)

Abstract

本发明提供一种并行计算方法和装置,所述方法包括:获取进行并行计算的计算模块的数量;创建与所述计算模块数量相同数目的线程;将预先存储的待计算的数据平均分配到各线程中;各计算模块同时计算各对应线程中的数据。本发明提供的并行计算方法和装置,通过将计算的数据分配到与计算模块数量相同数目的线程中,使得所有计算模块都会在并行计算时处理计算数据,避免了现有的当有多个计算模块进行并行计算时,实际只有部分计算模块参与并行计算而导致计算效率低下的缺陷。

Description

一种并行计算方法和装置
技术领域
本发明涉及计算机领域,具体涉及一种并行计算方法和装置。
背景技术
目前无论是个人PC设备还是移动终端,多核(双核、四核和八核)CPU芯片已经较为普及。这些多核心CPU为提高软件的并行计算执行提供了条件。
现有的单核CPU在进行复杂运算时,只能逐一的读取数据进行计算,随着计算数据越来越庞大,计算的时间也越来越长,为了提高单核CPU的计算效率现在多采取以下方式:多级流水线、超标量执行、乱序执行、单指令流多数据流SIMD和超长指令字处理器,以期待能够提高单核CPU的计算效率。
现有技术的不足之处在于:单核CPU的条件下,由于受限于先天的硬件条件,多线程并发执行实际上是一种伪并发。因为在我们的单次计算过程中,只有极少的数据传递,或io使用,CPU处于空闲的时段极少,因此,其本质上在单核CPU上还是单向顺序执行的,对计算效率来说,提高的空间非常有限。
而对于现有的多核CPU来说,虽然可以使用多线程并发的手段来实现真正的并发计算,但是由于没能指定CPU中哪个核心执行哪次运算,在进行复杂运算时,也会出现如下情况:多核CPU中只有某一核进行计算,而其他的核心并不参与,而造成在计算过程中,效率仍然较低的问题;而且会出现创建线程不合理,造成线程间切换过于频繁,造成计算过程中所使用的系统开销甚至有可能超过计算本身的开销的问题。
所以现在的复杂计算在多核心CPU上执行时,相对于单核心CPU而言,计算效率的提升非常有限,并不能发挥出多核心CPU的优势。
发明内容
为克服上述缺陷,本发明实施例提供一种并行计算方法和装置。
第一方面,本发明实施例提供一种并行计算方法,所述方法包括如下步骤:
获取进行并行计算的计算模块的数量;
创建与所述计算模块数量相同数目的线程;
将预先存储的待计算的数据平均分配到各线程中;
各计算模块同时计算各对应线程中的数据。
优选地,所述方法还包括:
获取所述待计算的数据;
将所述待计算的数据分别存储在独立的存储空间中。
优选地,所述方法还包括:
各计算模块将计算结果返回到预先指定的独立存储空间中。
优选地,所述计算模块是多核心CPU。
优选地,所述计算模块是云计算服务器。
第二方面,本发明实施例提供一种并行计算装置,所述装置包括:
第一获取模块,用于获取进行并行计算的计算模块的数量;
创建模块,用于创建与所述计算模块数量相同数目的线程;
第一处理模块,用于将预先存储的待计算的数据平均分配到各线程中;
第二处理模块,用于各计算模块同时计算各对应线程中的数据。
优选地,所述装置还包括:
第二获取模块,用于获取所述待计算的数据;
存储模块,用于将所述待计算的数据分别存储在独立的存储空间中。
优选地,所述存储模块还用于:
各计算模块将计算结果返回到预先指定的独立存储空间中。
优选地,所述计算模块是多核心CPU。
优选地,所述计算模块是云计算服务器。
本发明实施例提供的并行计算方法和装置,通过将计算的数据分配到与计算模块数量相同数目的线程中,使得所有计算模块都会在并行计算时处理计算数据,避免了现有的当有多个计算模块进行并行计算时,实际只有部分计算模块参与并行计算而导致计算效率低下的缺陷;而且只处理对应线程中的数据,在处理完后就等待下一步的指令,从而在并行计算的过程中不会在多个线程间切换,很好的控制了并行计算过程中的系统开销;再者,通过本方法描述的过程进行并行计算时可以大大提高计算效率,从而相对于单核CPU而言,发挥出多核心CPU的核心数量多的优势。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1表示并行计算方法的实施例流程图。
图2表示并行计算方法的实施例的示意图。
图3表示并行计算方法的实施例的执行示意图。
图4表示并行计算装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
并行计算方法的实施例的流程如图1所示,所述方法包括如下步骤:
步骤100.获取进行并行计算的计算模块的数量;
步骤101.创建与所述计算模块数量相同数目的线程;
步骤102.将预先存储的待计算的数据平均分配到各线程中;
步骤103.各计算模块同时计算各对应线程中的数据。
通过上述的操作,通过将计算的数据分配到与计算模块数量相同数目的线程中,使得所有计算模块都会在并行计算时处理计算数据,避免了现有的当有多个计算模块进行并行计算时,实际只有部分计算模块参与并行计算而导致计算效率低下的缺陷。
现有的单核CPU在进行数据计算的过程中,由于数据是单向执行的,为了节约所计算的数据都会使用同一地址的存储空间(如内存、寄存器)中,当有新数据写入存储空间时,就会覆盖存储空间中之前存储的数据,但在并行计算时,将所有计算数据都存储到同一存储空间会造成计算数据在读取过程中的错误而导致得不到想要的计算结果。
在本实施例中,所述方法还包括:
获取所述待计算的数据;
将所述待计算的数据分别存储在独立的存储空间中。
本实施例通过将计算数据分别存储在独立的存储空间中,保证了各计算数据在并行计算前不会被修改,确保了计算模块读取的计算数据的准确性。
现有在进行复杂计算中,一般计算数据都会使用同一地址的存储空间(如内存、寄存器),计算结果就是在存储空间中所计算的最后一个数值;而在并行计算中,由于计算结果是由多个计算模块完成的,如果将多个计算结果存储到同一地址的存储空间时,在后面计算完成的计算结果会覆盖掉在前面计算完成的计算结果,而导致得到的计算结果不准确。
为了避免上述的缺陷,在本实施例中,通过如下方式存储各计算模块的计算结果:
各计算模块将计算结果返回到预先指定的独立存储空间中。
通过上述的操作,将各计算模块的计算结果存储到预先指定的独立存储空间中,避免了在后面计算完成的计算结果会覆盖掉在前面计算完成的计算结果的缺陷,保证了计算结果的准确性。
本实施例提供的并行计算方法可以用于各种需要复杂计算的场合,如:图象处理,向量运算,加解密编解码,物理计算,神经网络计算等。
本实施例提供的并行计算方法,可在任何有并行计算条件的场合应用,如:多核心CPU和云计算服务器中,简要说明如下:
多核心CPU在应用本实施例提供的方法进行并行计算时,以4核心CPU为例,首先创建4个线程,然后将计算数据平均分配到各创建的线程当中,4个CPU的核心同时对对应线程中的数据进行计算,并将计算结果存储到不同地址的内存当中。
云计算服务器在应用本实施例提供的方法进行并行计算时,以网络中共有8台云计算服务器为例,将计算数据平均分配到8台云计算服务器中,8台云计算服务器同时对所分配到的计算数据进行计算,得到计算结果后,将计算结果返回独立的存储空间中。
以对浮点数进行三角计算∑sinx为例,对本实施例所提供的并行计算方法做进一步描述。
步骤1.将待计算浮点数x0、x1、x2、…xn按照浮点型的组织形式,依次读入到已分割为独立互不干扰的n个空间且分别地址独立的内存中;
步骤2.计算CPU当前的核心数,并取得CPU数量;
步骤3.根据CPU数量,创建相同数量的线程;
步骤4.将待计算浮点数平均分配到各个线程中的栈空间中;
步骤5.将线程与指定的CPU对应,各CPU独立进行sin运算,并将计算结果返回到预先指定的内存空间中;
步骤6.将计算结果分别从指定的内存空间中取出,执行加法运算,完成加法运算后返回最终计算结果。
按照如上处理,充分利用了多核CPU的并行计算能力,采用指定计算,利用CPU各核的独立高速缓存与独立运算计算指令,最终达到了高速计算的目的。
通过以下实施例对并行计算方法做进一步描述。
并行计算方法的又一实施例的组成如图2所示,以核心CPU为并行计算的执行主体为例。用多线程来把任务代码并行化,从而利用多个CPU核的计算能力来完成任务。因此,在系统中设计了一个线程池,用于把一个任务拆分成多个线程,从而可以使用多个CPU同时处理这一个任务。
具体地,并行计算方法的又一实施例的执行过程如图3所示,操作系统调度主程序a.out开始运行,a.out加载必要的系统资源和用户资源开始执行加载的任务。以4核心CPU为例,a.out在线程池中将加载的任务分成可以被并行执行的任务线程T1、T2、T3和T4。在初始阶段CPU0和CPU1两个核心先分别加载任务线程T1和T2进行处理,然后CPU2和CPU3再分别加载T3和T4进行处理,直到完成该任务的所有任务线程。
进一步地,每个任务线程都有自己的数据,但在4核心CPU执行任务线程的过程中,各任务线程都共享整个a.out所加载的系统资源和用户资源。这样就节省了拷贝系统资源给每个任务线程的开销。这样同一任务的任务线程之间可以并行执行子程序。而且,任务线程之间通过全局内存进行通信,这个需要同步构造来确保多个任务线程不会同时更新同一块全局内存。任务线程执行完了就自动销毁,但是主程序a.out在应用程序完成之前一直存在,维护必要的共享资源。
基于上述描述,本实施例提供的并行计算方法,通过将计算的数据分配到与计算模块数量相同数目的线程中,使得所有计算模块都会在并行计算时处理计算数据,避免了现有的当有多个计算模块进行并行计算时,实际只有部分计算模块参与并行计算而导致计算效率低下的缺陷;而且只处理对应线程中的数据,在处理完后就等待下一步的指令,从而在并行计算的过程中不会在多个线程间切换,很好的控制了并行计算过程中的系统开销;再者,通过本方法描述的过程进行并行计算时可以大大提高计算效率,从而相对于单核CPU而言,发挥出多核心CPU的核心数量多的优势。
并行计算装置的结构示意图如图4所示,所述装置包括:
第一获取模块10,用于获取进行并行计算的计算模块的数量;
创建模块20,用于创建与所述计算模块数量相同数目的线程;
第一处理模块30,用于将预先存储的待计算的数据平均分配到各线程中;
第二处理模块40,用于各计算模块同时计算各对应线程中的数据。
进一步地,所述装置还包括:
第二获取模块,用于获取所述待计算的数据;
存储模块,用于将所述待计算的数据分别存储在独立的存储空间中。
可选地,所述存储模块还用于:
各计算模块将计算结果返回到预先指定的独立存储空间中。
所述计算模块是多核心CPU。
所述计算模块是云计算服务器。
本实施例中提供的并行计算装置的功能和处理流程,可以参见上面提供的并行计算方法的实施例的流程,此处不再赘述。
基于上述描述,本实施例提供的并行计算装置,通过将计算的数据分配到与计算模块数量相同数目的线程中,使得所有计算模块都会在并行计算时处理计算数据,避免了现有的当有多个计算模块进行并行计算时,实际只有部分计算模块参与并行计算而导致计算效率低下的缺陷;而且只处理对应线程中的数据,在处理完后就等待下一步的指令,从而在并行计算的过程中不会在多个线程间切换,很好的控制了并行计算过程中的系统开销;再者,通过本方法描述的过程进行并行计算时可以大大提高计算效率,从而相对于单核CPU而言,发挥出多核心CPU的核心数量多的优势。
本领域普通技术人员可以理解:实现上述方法各实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种并行计算方法,其特征在于,所述方法包括如下步骤:
获取进行并行计算的计算模块的数量;
创建与所述计算模块数量相同数目的线程;
将预先存储的待计算的数据平均分配到各线程中;
各计算模块同时计算各对应线程中的数据。
2.根据权利要求1所述的并行计算方法,其特征在于,所述方法还包括:
获取所述待计算的数据;
将所述待计算的数据分别存储在独立的存储空间中。
3.根据权利要求1所述的并行计算方法,其特征在于,所述方法还包括:
各计算模块将计算结果返回到预先指定的独立存储空间中。
4.根据权利要求1-3任一项所述的并行计算方法,其特征在于,
所述计算模块是多核心CPU。
5.根据权利要求1-3任一项所述的并行计算方法,其特征在于,
所述计算模块是云计算服务器。
6.一种并行计算装置,其特征在于,所述装置包括:
第一获取模块,用于获取进行并行计算的计算模块的数量;
创建模块,用于创建与所述计算模块数量相同数目的线程;
第一处理模块,用于将预先存储的待计算的数据平均分配到各线程中;
第二处理模块,用于各计算模块同时计算各对应线程中的数据。
7.根据权利要求6所述的并行计算装置,其特征在于,所述装置还包括:
第二获取模块,用于获取所述待计算的数据;
存储模块,用于将所述待计算的数据分别存储在独立的存储空间中。
8.根据权利要求7所述的并行计算装置,其特征在于,所述存储模块还用于:
各计算模块将计算结果返回到预先指定的独立存储空间中。
9.根据权利要求6-8任一项所述的并行计算装置,其特征在于,
所述计算模块是多核心CPU。
10.根据权利要求6-8任一项所述的并行计算装置,其特征在于,
所述计算模块是云计算服务器。
CN201310589149.3A 2013-11-20 2013-11-20 一种并行计算方法和装置 Pending CN104657111A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310589149.3A CN104657111A (zh) 2013-11-20 2013-11-20 一种并行计算方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310589149.3A CN104657111A (zh) 2013-11-20 2013-11-20 一种并行计算方法和装置

Publications (1)

Publication Number Publication Date
CN104657111A true CN104657111A (zh) 2015-05-27

Family

ID=53248302

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310589149.3A Pending CN104657111A (zh) 2013-11-20 2013-11-20 一种并行计算方法和装置

Country Status (1)

Country Link
CN (1) CN104657111A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018120016A1 (zh) * 2016-12-30 2018-07-05 上海寒武纪信息科技有限公司 用于执行lstm神经网络运算的装置和运算方法
CN109033184A (zh) * 2018-06-27 2018-12-18 中国建设银行股份有限公司 数据处理方法及装置
CN109409513A (zh) * 2018-10-10 2019-03-01 广州市百果园信息技术有限公司 一种基于神经网络的任务处理方法及相关设备
CN110096308A (zh) * 2019-04-24 2019-08-06 北京探境科技有限公司 一种并行存储运算装置及其方法
CN110704517A (zh) * 2018-06-21 2020-01-17 北京国双科技有限公司 一种生成任务的方法、装置、存储介质及处理器
CN112818663A (zh) * 2021-01-15 2021-05-18 北京有竹居网络技术有限公司 用于语言模型的处理方法、文本生成方法、装置及介质
CN113064702A (zh) * 2021-03-04 2021-07-02 山东英信计算机技术有限公司 一种加速部署内存模块配置spd信息的方法及装置
CN113391887A (zh) * 2020-03-11 2021-09-14 北京国电智深控制技术有限公司 一种处理工业数据的方法及系统
CN113905273A (zh) * 2021-09-29 2022-01-07 上海阵量智能科技有限公司 任务执行方法和设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070067606A1 (en) * 2005-08-18 2007-03-22 Hsin-Ying Lin Heterogeneous parallel processing based on processor performance
CN101131652A (zh) * 2006-08-21 2008-02-27 英业达股份有限公司 多核多中央处理器的执行线程分配方法
CN102446117A (zh) * 2011-09-06 2012-05-09 北京数码大方科技有限公司 多线程数据的保存方法及装置
CN102955555A (zh) * 2011-08-19 2013-03-06 苏州简约纳电子有限公司 一种多线程处理方法和装置
US20130179896A1 (en) * 2009-01-27 2013-07-11 Adobe Systems Incorporated Multi-thread processing of an XML document

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070067606A1 (en) * 2005-08-18 2007-03-22 Hsin-Ying Lin Heterogeneous parallel processing based on processor performance
CN101131652A (zh) * 2006-08-21 2008-02-27 英业达股份有限公司 多核多中央处理器的执行线程分配方法
US20130179896A1 (en) * 2009-01-27 2013-07-11 Adobe Systems Incorporated Multi-thread processing of an XML document
CN102955555A (zh) * 2011-08-19 2013-03-06 苏州简约纳电子有限公司 一种多线程处理方法和装置
CN102446117A (zh) * 2011-09-06 2012-05-09 北京数码大方科技有限公司 多线程数据的保存方法及装置

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018120016A1 (zh) * 2016-12-30 2018-07-05 上海寒武纪信息科技有限公司 用于执行lstm神经网络运算的装置和运算方法
CN110704517A (zh) * 2018-06-21 2020-01-17 北京国双科技有限公司 一种生成任务的方法、装置、存储介质及处理器
CN109033184A (zh) * 2018-06-27 2018-12-18 中国建设银行股份有限公司 数据处理方法及装置
RU2771008C1 (ru) * 2018-10-10 2022-04-25 Биго Текнолоджи Пте. Лтд. Способ и устройство для обработки задач на основе нейронной сети
CN109409513A (zh) * 2018-10-10 2019-03-01 广州市百果园信息技术有限公司 一种基于神经网络的任务处理方法及相关设备
WO2020073742A1 (zh) * 2018-10-10 2020-04-16 广州市百果园信息技术有限公司 一种基于神经网络的任务处理方法及相关设备
CN109409513B (zh) * 2018-10-10 2021-03-12 广州市百果园信息技术有限公司 一种基于神经网络的任务处理方法及相关设备
CN110096308A (zh) * 2019-04-24 2019-08-06 北京探境科技有限公司 一种并行存储运算装置及其方法
CN113391887A (zh) * 2020-03-11 2021-09-14 北京国电智深控制技术有限公司 一种处理工业数据的方法及系统
CN113391887B (zh) * 2020-03-11 2024-03-12 北京国电智深控制技术有限公司 一种处理工业数据的方法及系统
CN112818663A (zh) * 2021-01-15 2021-05-18 北京有竹居网络技术有限公司 用于语言模型的处理方法、文本生成方法、装置及介质
CN113064702A (zh) * 2021-03-04 2021-07-02 山东英信计算机技术有限公司 一种加速部署内存模块配置spd信息的方法及装置
CN113064702B (zh) * 2021-03-04 2023-01-13 山东英信计算机技术有限公司 一种加速部署内存模块配置spd信息的方法及装置
CN113905273A (zh) * 2021-09-29 2022-01-07 上海阵量智能科技有限公司 任务执行方法和设备
CN113905273B (zh) * 2021-09-29 2024-05-17 上海阵量智能科技有限公司 任务执行方法和设备

Similar Documents

Publication Publication Date Title
CN104657111A (zh) 一种并行计算方法和装置
CN102902512B (zh) 一种基于多线程编程及消息队列的多线程并行处理方法
US10095657B2 (en) Processor, accelerator, and direct memory access controller within a core reading/writing local synchronization flag area for parallel
KR102432380B1 (ko) 워프 클러스터링을 수행하는 방법
US7937567B1 (en) Methods for scalably exploiting parallelism in a parallel processing system
US8417918B2 (en) Reconfigurable processor with designated processing elements and reserved portion of register file for interrupt processing
CN105487838A (zh) 一种动态可重构处理器的任务级并行调度方法与系统
CN105164638A (zh) 控制由计算系统执行的任务
CN102708009B (zh) 一种基于cuda实现多任务共享gpu的方法
US11163677B2 (en) Dynamically allocated thread-local storage
US8615770B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
CN104375805A (zh) 采用多核处理器仿真可重构处理器并行计算过程的方法
US20140143524A1 (en) Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus
CN110300959B (zh) 用于动态运行时任务管理的方法、系统、设备、装置和介质
CN103870350A (zh) 一种基于watchdog的微处理器多核加固方法
US10152328B2 (en) Systems and methods for voting among parallel threads
Moustafa et al. 3D cartesian transport sweep for massively parallel architectures with PARSEC
US8413151B1 (en) Selective thread spawning within a multi-threaded processing system
US8959497B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
CN115033374A (zh) 一种多核可编程控制器的任务到线程匹配方法
Vasil’ev et al. Hardware implementation of high-performance fuzzy computations based on programmable logic integrated circuits
Krömer et al. An implementation of differential evolution for independent tasks scheduling on GPU
CN103714511A (zh) 一种基于gpu的分支处理方法及装置
US9158580B2 (en) Data flows and their interaction with control flows
CN115904643A (zh) 图任务调度方法、执行设备、存储介质及程序产品

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20150527