1.一种gpu加速的多数据多线程sha-256计算实现方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种gpu加速的多数据多线程sha-256计算实现方法,其特征在于,所述步骤1构建的sha-256算法消息扩展的并行模型,使用gpu对整块数据采用地址偏移方法区別数据块,为不同的数据块分配不同的线程,数据块对j取值范围从16-63的w[j]数组采用双线程并行计算模式实现sha-256算法消息扩展的并行。
3.根据权利要求1所述的一种gpu加速的多数据多线程sha-256计算实现方法,其特征在于,所述步骤2构建的sha-256算法循环迭代的并行模型,利用8个线程同时处理a、b、…、h的迭代计算任务:a、b、…、h分別首先获取中间变量数组h对应位置的数值,再根据计算结果更新h,如此循环64次,完成一个数据块的迭代计算部分。
4.根据权利要求1所述的一种gpu加速的多数据多线程sha-256计算实现方法,其特征在于,所述步骤3优化的数据存储模型,将a、b、…、h存储在共享存储器中,共享存储器中的数据在计算完成后再拷贝回全局存储器,将64个常数k[i](i=0,1,2…63)存储在常数存储器,在迭代更新h数组中计算a、b、…、h时被使用。
5.根据权利要求1所述的一种gpu加速的多数据多线程sha-256计算实现方法,其特征在于,所述步骤3优化的数据流模型,使用两个不同的kernel函数分别计算消息扩展部分与之后的迭代更新h数组部分;
6.根据权利要求1所述的一种gpu加速的多数据多线程sha-256计算实现方法,其特征在于,所述步骤4构建的完整cpu-gpu异构结构任务和数据流具体包括:
7.根据权利要求6所述的一种gpu加速的多数据多线程sha-256计算实现方法,其特征在于,所述步骤4.2具体为:cpu从磁盘读取数据信息,确定数据长度,根据数据长度分配内存来存储数据,之后基于数据长度分配好需要的显存,需要分配的显存有数据部分、w数组部分和结果数组部分,此外还需要在内存里分配相应结果数组部分以提供空间存储gpu计算出的结果;最后为每个待处理的数据创建好相应的cuda流,并且同时确定需要处理的总的数据个数。
8.根据权利要求6所述的一种gpu加速的多数据多线程sha-256计算实现方法,其特征在于,步骤4.3所述sha-256算法,包括:cpu先对数据进行预处理,进行补位填充;之后,利用前一步中为数据已经创建好的流,将处理完的数据异步传输给gpu,gpu开始异步计算;cpu在调用gpu执行异步操作后开始处理下一个数据的补位与填充部分。
9.根据权利要求6所述的一种gpu加速的多数据多线程sha-256计算实现方法,其特征在于,所述步骤4.4具体过程为:gpu直接从显存的数据部分读取数据,计算完后存到显存的w数组部分;随着cpu不断处理完多个数据的补位填充并且完成数据传输后,会有多个流等待着gpu来处理,当硬件未达到满载时,多个数据的多个流被gpu同时计算。
10.根据权利要求6所述的一种gpu加速的多数据多线程sha-256计算实现方法,其特征在于,所述步骤4.5中,gpu通过线程id来寻找显存中对应的w数组以及结果数组的地址,之后每个线程开始执行相同代码,在过程中访问常数存储器,读取其中的k数组,并使用共享存储器存储部分中间变量。