一种并行计算方法和装置的制造方法

文档序号:8339360阅读:286来源:国知局
一种并行计算方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机领域,具体涉及一种并行计算方法和装置。
【背景技术】
[0002]目前无论是个人PC设备还是移动终端,多核(双核、四核和八核)CPU芯片已经较为普及。这些多核心CPU为提高软件的并行计算执行提供了条件。
[0003]现有的单核CPU在进行复杂运算时,只能逐一的读取数据进行计算,随着计算数据越来越庞大,计算的时间也越来越长,为了提高单核CPU的计算效率现在多采取以下方式:多级流水线、超标量执行、乱序执行、单指令流多数据流SMD和超长指令字处理器,以期待能够提高单核CPU的计算效率。
[0004]现有技术的不足之处在于:单核CPU的条件下,由于受限于先天的硬件条件,多线程并发执行实际上是一种伪并发。因为在我们的单次计算过程中,只有极少的数据传递,或1使用,CPU处于空闲的时段极少,因此,其本质上在单核CPU上还是单向顺序执行的,对计算效率来说,提高的空间非常有限。
[0005]而对于现有的多核CPU来说,虽然可以使用多线程并发的手段来实现真正的并发计算,但是由于没能指定CPU中哪个核心执行哪次运算,在进行复杂运算时,也会出现如下情况:多核CPU中只有某一核进行计算,而其他的核心并不参与,而造成在计算过程中,效率仍然较低的问题;而且会出现创建线程不合理,造成线程间切换过于频繁,造成计算过程中所使用的系统开销甚至有可能超过计算本身的开销的问题。
[0006]所以现在的复杂计算在多核心CPU上执行时,相对于单核心CPU而言,计算效率的提升非常有限,并不能发挥出多核心CPU的优势。

【发明内容】

[0007]为克服上述缺陷,本发明实施例提供一种并行计算方法和装置。
[0008]第一方面,本发明实施例提供一种并行计算方法,所述方法包括如下步骤:
[0009]获取进行并行计算的计算模块的数量;
[0010]创建与所述计算模块数量相同数目的线程;
[0011]将预先存储的待计算的数据平均分配到各线程中;
[0012]各计算模块同时计算各对应线程中的数据。
[0013]优选地,所述方法还包括:
[0014]获取所述待计算的数据;
[0015]将所述待计算的数据分别存储在独立的存储空间中。
[0016]优选地,所述方法还包括:
[0017]各计算模块将计算结果返回到预先指定的独立存储空间中。
[0018]优选地,所述计算模块是多核心CPU。
[0019]优选地,所述计算模块是云计算服务器。
[0020]第二方面,本发明实施例提供一种并行计算装置,所述装置包括:
[0021]第一获取模块,用于获取进行并行计算的计算模块的数量;
[0022]创建模块,用于创建与所述计算模块数量相同数目的线程;
[0023]第一处理模块,用于将预先存储的待计算的数据平均分配到各线程中;
[0024]第二处理模块,用于各计算模块同时计算各对应线程中的数据。
[0025]优选地,所述装置还包括:
[0026]第二获取模块,用于获取所述待计算的数据;
[0027]存储模块,用于将所述待计算的数据分别存储在独立的存储空间中。
[0028]优选地,所述存储模块还用于:
[0029]各计算模块将计算结果返回到预先指定的独立存储空间中。
[0030]优选地,所述计算模块是多核心CPU。
[0031]优选地,所述计算模块是云计算服务器。
[0032]本发明实施例提供的并行计算方法和装置,通过将计算的数据分配到与计算模块数量相同数目的线程中,使得所有计算模块都会在并行计算时处理计算数据,避免了现有的当有多个计算模块进行并行计算时,实际只有部分计算模块参与并行计算而导致计算效率低下的缺陷;而且只处理对应线程中的数据,在处理完后就等待下一步的指令,从而在并行计算的过程中不会在多个线程间切换,很好的控制了并行计算过程中的系统开销;再者,通过本方法描述的过程进行并行计算时可以大大提高计算效率,从而相对于单核CPU而言,发挥出多核心CPU的核心数量多的优势。
【附图说明】
[0033]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0034]图1表示并行计算方法的实施例流程图。
[0035]图2表示并行计算方法的实施例的示意图。
[0036]图3表示并行计算方法的实施例的执行示意图。
[0037]图4表示并行计算装置的结构示意图。
【具体实施方式】
[0038]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0039]并行计算方法的实施例的流程如图1所示,所述方法包括如下步骤:
[0040]步骤100.获取进行并行计算的计算模块的数量;
[0041]步骤101.创建与所述计算模块数量相同数目的线程;
[0042]步骤102.将预先存储的待计算的数据平均分配到各线程中;
[0043]步骤103.各计算模块同时计算各对应线程中的数据。
[0044]通过上述的操作,通过将计算的数据分配到与计算模块数量相同数目的线程中,使得所有计算模块都会在并行计算时处理计算数据,避免了现有的当有多个计算模块进行并行计算时,实际只有部分计算模块参与并行计算而导致计算效率低下的缺陷。
[0045]现有的单核CPU在进行数据计算的过程中,由于数据是单向执行的,为了节约所计算的数据都会使用同一地址的存储空间(如内存、寄存器)中,当有新数据写入存储空间时,就会覆盖存储空间中之前存储的数据,但在并行计算时,将所有计算数据都存储到同一存储空间会造成计算数据在读取过程中的错误而导致得不到想要的计算结果。
[0046]在本实施例中,所述方法还包括:
[0047]获取所述待计算的数据;
[0048]将所述待计算的数据分别存储在独立的存储空间中。
[0049]本实施例通过将计算数据分别存储在独立的存储空间中,保证了各计算数据在并行计算前不会被修改,确保了计算模块读取的计算数据的准确性。
[0050]现有在进行复杂计算中,一般计算数据都会使用同一地址的存储空间(如内存、寄存器),计算结果就是在存储空间中所计算的最后一个数值;而在并行计算中,由于计算结果是由多个计算模块完成的,如果将多个计算结果存储到同一地址的存储空间时,在后面计算完成的计算结果会覆盖掉在前面计算完成的计算结果,而导致得到的计算结果不准确。
[0051]为了避免上述的缺陷,在本实施例中,通过如下方式存储各计算模块的计算结果:
[0052]各计算模块将计算结果返回到预先指定的独立存储空间中。
[0053]通过上述的操作,将各计算模块的计算结果存储到预先指定的独立存储空间中,避免了在后面计算完成的计算结果会覆盖掉在前面计算完成的计算结果的缺陷,保证了计算结果的准确性。
[0054]本实施例提供的并行计算方法可以用于各种需要复杂计算的场合,如:图象处理,向量运算,加解密编解码,物理计算,神经网络计算等。
[0055]本实施例提供的并行计算方法,可在任何有并行计算条件的场合应用,如:多核心CPU和云计算服务器中,简要说明如下:
[0056]多核心CPU在应用本实施例提供的方法进行并行计算时,以4核心CPU为例,首先创建4个线程,然后将计算数据平均分配到各创建的线程当中,4个CPU的核心同时对对应线程中的数据进行计算,并将计算结果存储到不同地址的内存当中。
[0057]云计算服务器在应用本实施例提供的方法进行并行计算时,以网络中共有8台云计算服务器为例,将计算数据平均分配到8台云计算服务器中,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1