一种并行计算的方法及终端技术

技术编号:14521221 阅读:68 留言:0更新日期:2017-02-02 00:07
本发明专利技术涉及数据处理技术领域,特别涉及一种并行计算的方法及终端,用以解决目前Android操作系统中大整数乘法运算的执行速度较慢的问题。其中,该方法包括:终端将第一字符串划分成M个第一元素,第一元素的长度不大于Z,将第二字符串划分成N个第二元素,第二元素的长度不大于Z,其中,Z是终端根据执行引擎所占用的内存的大小确定的,并调用多个处理器,对第一元素和第二元素进行乘法运算,得到N×M的矩阵,通过调用多个处理器对N×M的矩阵中预设对角线上的元素进行加法运算,得到第一临时结果数组;根据第一临时结果数组输出运算结果。这种技术方案由于终端在运算时能够实现并行运算,因而提高了大整数的乘法运算的计算速度。

【技术实现步骤摘要】

本专利技术涉及数据处理
,特别涉及一种并行计算的方法及终端
技术介绍
目前,大整数的加法、乘法、模运算不仅是有限域中元素的加法、减法、乘法、模运算的基础,而且还是椭圆曲线密码体制的运算基础。一次椭圆曲线上的运算,可能需要调用多至几十次的大整数运算。因此,提高大整数运算的执行速度,对于提高椭圆曲线密码体制的执行效率具有非常重要的意义。同时,大整数运算还具有很多数值计算的应用,对于以大整数运算作为基础的应用,寻找快速有效的大整数计算方法也非常必要。其中,大整数是指数值超过了程序设计语言中一般整数类型变量表示范围的整数,位数一般在几百或几千位。在大整数的各种运算中,加法和减法相对简单,乘法最为困难,模运算可以转化为乘法实现。目前的大整数乘法计算方法中,大部分是基于串行算法的。在Android操作系统平台上采用这些方法时,利用的是CPU(CentralProcessingUnit,中央处理器)的计算资源。现有的大整数乘法并行计算技术主要利用的是CUDA(ComputeUnifiedDeviceArchitecture,通用并行计算架构)框架。该框架是一种运算平台,能够使设备中的GPU(GraphicsProcessingUnit,图形处理器)解决复杂的计算问题。但是,由于在Android操作系统中不支持CUDA框架,因此无法对大整数乘法进行并行计算,导致对大整数乘法计算较慢。
技术实现思路
本专利技术提供一种并行计算的方法和终端,用以解决目前Android操作系统中大整数乘法运算的执行速度较慢的问题。第一方面,提供一种并行计算的方法,包括:终端将第一字符串划分成M个第一元素,所述第一元素的长度不大于Z,将第二字符串划分成N个第二元素,所述第二元素的长度不大于Z,其中,Z是所述终端根据执行引擎所占用的内存的大小确定的,M是正整数,N是正整数;所述终端调用多个处理器,对所述第一元素和所述第二元素进行乘法运算,得到N×M的矩阵,其中,所述终端通过所述执行引擎调用多个处理器,并且每个处理器执行的乘法运算不同;所述终端通过调用多个处理器对N×M的矩阵中预设对角线上的元素进行加法运算,得到第一临时结果数组;所述终端根据所述第一临时结果数组输出运算结果。结合第一方面,在第一方面的第一种可能的实现方式中,所述终端根据所述第一临时结果数组输出运算结果,具体包括:所述终端将所述第一临时结果数组转化为第二临时结果数组,所述第二临时结果数组包括多个第二临时结果,所述第二临时结果的长度不大于Z;针对任一第二临时结果,所述终端判断所述第二临时结果的长度是否等于Z位;若所述第二临时结果的长度小于Z,所述终端在所述第二临时结果的左侧加零使得所述第二临时结果的长度达到Z后转化为字符串的格式,得到运算结果;若所述第二临时结果的长度等于Z,所述终端将所述第二临时结果转化为字符串的格式,得到运算结果;所述终端根据所述第二临时结果在所述第二数组中的偏移量,依次输出运算结果。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述第一临时结果数组包括多个第一临时结果;所述终端将所述第一临时结果数组转化为第二临时结果数组,具体包括:所述终端判断第一临时结果的长度是否大于Z;若所述第一临时结果的长度不大于Z,所述终端将所述第一临时结果设置为第二临时结果;若所述第一临时结果的长度大于Z,所述终端将所述第一临时结果的第一部分设置为第二临时结果,将所述第一临时结果的第二部分除以10Z,得到进位结果;所述终端确定所述第一临时结果在所述第一临时数组中的偏移量加一后对应的第一临时结果,将所述进位结果与确定的第一临时结果相加,重新判断第一临时结果的长度是否大于Z;其中,所述第一部分为第一临时结果中长度为Z的部分,所述第二部分为第一临时结果中长度大于Z的部分。结合第一方面或第一方面第一种可能的实现方式或第一方面第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述终端调用多个处理器,对所述第一元素和所述第二元素进行乘法运算,具体包括:所述终端根据处理器的负载的大小,确定用于执行所述乘法运算的多个处理器;所述终端调用确定的多个处理器,对所述第一元素和所述第二元素进行乘法运算。结合第一方面或第一方面第一种可能的实现方式或第一方面第二种可能的实现方式或第一方面第三种可能的实现方式,在第一方面的第四种可能的实现方式中,Z满足下列公式:Z=floor((Llog2)/2)其中,Z为输入的字符串划分成元素的最大长度;L为执行引擎所占用的内存的大小。结合第一方面或第一方面第一种可能的实现方式或第一方面第二种可能的实现方式或第一方面第三种可能的实现方式或第一方面第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述第一元素和所述第二元素满足十进制数形式。结合第一方面或第一方面第一种可能的实现方式或第一方面第二种可能的实现方式或第一方面第三种可能的实现方式或第一方面第四种可能的实现方式或第一方面第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述执行引擎为RenderScript执行引擎。第二方面,提供了一种终端,该终端包括:元素划分模块,用于将第一字符串划分成M个第一元素,所述第一元素的长度不大于Z,将第二字符串划分成N个第二元素,所述第二元素的长度不大于Z,其中,Z是根据执行引擎所占用的内存的大小确定的,M是正整数,N是正整数;乘法运算模块,用于调用多个处理器,对所述第一元素和所述第二元素进行乘法运算,得到N×M的矩阵,其中,所述乘法运算模块通过所述执行引擎调用多个处理器,并且每个处理器执行的乘法运算不同;加法运算模块,用于通过调用多个处理器对N×M的矩阵中预设对角线上的元素进行加法运算,得到第一临时结果数组;结果输出模块,用于根据所述第一临时结果数组输出运算结果。结合第二方面,在第二方面的第一种可能的实现方式中,所述结果输出模块,具体用于:将所述第一临时结果数组转化为第二临时结果数组,所述第二临时结果数组包括多个第二临时结果,所述第二临时结果的长度不大于Z;针对任一第二临时结果,判断所述第二临时结果的长度是否等于Z位;若所述第二临时结果的长度小于Z,在所述第二临时结果的左侧加零使得所述第二临时结果的长度达到Z后转化为字符串的格式,得到运算结果;若所述第二临时结果的长度等于Z,将所述第二临时结果转化为字符串的格式,得到运算结果;根据所述第二临时结果在所述第二数组中的偏移量,依次输出运算结果。结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第一临时结果数组包括多个第一临时结果,所述结果输出模块,具体用于:判断第一临时结果的长度是否大于Z;若所述第一临时结果的长度不大于Z,将所述第一临时结果设置为第二临时结果;若所述第一临时结果的长度大于Z,将所述第一临时结果的第一部分设置为第二临时结果,将所述第一临时结果的第二部分除以10Z,得到进位结果;确定所述第一临时结果在所述第一临时数组中的偏移量加一后对应的第一临时结果,将所述进位结果与确定的第一临时结果相加,重新判断第一临时结果的长度是否大于Z;其中,所述第一部分为第一临时结果中长度为Z的部分,所述第二部分为第本文档来自技高网...

【技术保护点】
一种并行计算的方法,其特征在于,该方法包括:终端将第一字符串划分成M个第一元素,所述第一元素的长度不大于Z,将第二字符串划分成N个第二元素,所述第二元素的长度不大于Z,其中,Z是所述终端根据执行引擎所占用的内存的大小确定的,M是正整数,N是正整数;所述终端调用多个处理器,对所述第一元素和所述第二元素进行乘法运算,得到N×M的矩阵,其中,所述终端通过所述执行引擎调用多个处理器,并且每个处理器执行的乘法运算不同;所述终端通过调用多个处理器对N×M的矩阵中预设对角线上的元素进行加法运算,得到第一临时结果数组;所述终端根据所述第一临时结果数组输出运算结果。

【技术特征摘要】
1.一种并行计算的方法,其特征在于,该方法包括:终端将第一字符串划分成M个第一元素,所述第一元素的长度不大于Z,将第二字符串划分成N个第二元素,所述第二元素的长度不大于Z,其中,Z是所述终端根据执行引擎所占用的内存的大小确定的,M是正整数,N是正整数;所述终端调用多个处理器,对所述第一元素和所述第二元素进行乘法运算,得到N×M的矩阵,其中,所述终端通过所述执行引擎调用多个处理器,并且每个处理器执行的乘法运算不同;所述终端通过调用多个处理器对N×M的矩阵中预设对角线上的元素进行加法运算,得到第一临时结果数组;所述终端根据所述第一临时结果数组输出运算结果。2.如权利要求1所述的方法,其特征在于,所述终端根据所述第一临时结果数组输出运算结果,具体包括:所述终端将所述第一临时结果数组转化为第二临时结果数组,所述第二临时结果数组包括多个第二临时结果,所述第二临时结果的长度不大于Z;针对任一第二临时结果,所述终端判断所述第二临时结果的长度是否等于Z位;若所述第二临时结果的长度小于Z,所述终端在所述第二临时结果的左侧加零使得所述第二临时结果的长度达到Z后转化为字符串的格式,得到运算结果;若所述第二临时结果的长度等于Z,所述终端将所述第二临时结果转化为字符串的格式,得到运算结果;所述终端根据所述第二临时结果在所述第二数组中的偏移量,依次输出运算结果。3.如权利要求2所述的方法,其特征在于,所述第一临时结果数组包括
\t多个第一临时结果;所述终端将所述第一临时结果数组转化为第二临时结果数组,具体包括:所述终端判断第一临时结果的长度是否大于Z;若所述第一临时结果的长度不大于Z,所述终端将所述第一临时结果设置为第二临时结果;若所述第一临时结果的长度大于Z,所述终端将所述第一临时结果的第一部分设置为第二临时结果,将所述第一临时结果的第二部分除以10Z,得到进位结果;所述终端确定所述第一临时结果在所述第一临时数组中的偏移量加一后对应的第一临时结果,将所述进位结果与确定的第一临时结果相加,重新判断第一临时结果的长度是否大于Z;其中,所述第一部分为第一临时结果中长度为Z的部分,所述第二部分为第一临时结果中长度大于Z的部分。4.如权利要求1至3任一所述的方法,其特征在于,所述终端调用多个处理器,对所述第一元素和所述第二元素进行乘法运算,具体包括:所述终端根据处理器的负载的大小,确定用于执行所述乘法运算的多个处理器;所述终端调用确定的多个处理器,对所述第一元素和所述第二元素进行乘法运算。5.如权利要求1至4任一所述的方法,其特征在于,Z满足下列公式:Z=floor((Llog2)/2)其中,Z为输入的字符串划分成元素的最大长度;L为执行引擎所占用的内存的大小。6.如权利要求1至5任一所述的方法,其特征在于,所述第一元素和所述第二元素满足十进制数形式。7.如权利要求1至6任一所述...

【专利技术属性】
技术研发人员:程相国咸鹤群
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1