发明名称 一种基于GPU和CPU混合平台的高速无损数据压缩方法
摘要 本发明公开了一种基于GPU和CPU混合平台的高速无损数据压缩方法,包括:CPU读取待压缩数据文件,将该待压缩数据文件从内存拷贝到GPU的全局存储器中,设置GPU上的线程块组bk[a],每个线程块中的线程个数b,设置压缩字典窗口的长度为c,并设置指向第一个压缩字典窗口的头部指针为p_dic_h,设置预读窗口大小为d,指向第一个预读窗口的指针p_pre_r,该指针的初始值设置为p_dic_h-c,初始化工作线程组threads[a*b],以及(a*b/2)/c个gMatrix矩阵,其大小为c*d,调用工作线程组threads[a*b]中的(a*b/2)个线程处理待压缩数据文件中q=(a*b/2)/c个长度为c+d的数据,在q个结果矩阵gMatrix的每一个中寻找具有最多连续1的斜线段,确定每个结果矩阵的三元结果数组locations[p]。本发明能够大大提高海量数据的压缩速率。
申请公布号 CN103427844A 申请公布日期 2013.12.04
申请号 CN201310321071.7 申请日期 2013.07.26
申请人 华中科技大学 发明人 金海;郑然;周斌
分类号 H03M7/30(2006.01)I 主分类号 H03M7/30(2006.01)I
代理机构 华中科技大学专利中心 42201 代理人 朱仁玲
主权项 一种基于GPU和CPU混合平台的高速无损数据压缩方法,其特征在于,包括以下步骤:(1)CPU读取待压缩数据文件,将该待压缩数据文件从内存拷贝到GPU的全局存储器中;(2)设置GPU上的线程块组bk[a],每个线程块中的线程个数b,其中a为线程块的总数;(3)设置压缩字典窗口的长度为c,并设置指向第一个压缩字典窗口的头部指针为p_dic_h;(4)设置预读窗口大小为d,指向第一个预读窗口的指针p_pre_r,该指针的初始值设置为p_dic_h‑c;(5)初始化工作线程组threads[a*b],以及(a*b/2)/c个gMatrix矩阵,其大小为c*d;(6)调用工作线程组threads[a*b]中的(a*b/2)个线程处理待压缩数据文件中q=(a*b/2)/c个长度为c+d的数据;(7)在q个结果矩阵gMatrix的每一个中寻找具有最多连续1的斜线段,确定每个结果矩阵的三元结果数组locations[p],数组中的每个元素存储有三元结果(x,y,length),其中p为该结果矩阵中斜线段的数量,且等于c+d–1,x表示斜线段相对于其所在结果矩阵对应的压缩字典的偏移量,y表示该斜线段相对于其所在结果矩阵对应的预读窗口的偏移量,length表示该斜线段的长度;(8)寻找每个gMatrix对应的locations[p]数组中具有最大length值的元素:设置线程T3,其线程编号为th3,T3是线程组threads[a*b]中第0个线程至第(q‑1)个线程中的一个,T3线程负责寻找每个gMatrix矩阵对应的三元结果数组locations[p]中具有最大length值的元素,并将其对应的 参数x、y与length存入全局的匹配结果数组match[q],该数组中的每个元素也存储有三元结果(x,y,length);(9)根据匹配结果数组match[q]对待压缩数据文件进行压缩;(10)判断指针p_pre_r是否已经到待压缩数据文件的尾部,如果是,则过程结束;否则,向前滑动字典窗口和预读窗口,即设置p_pre_r=p_pre_r+q*d,p_dic_h=p_dic_h+q*d,然后返回步骤(6)。
地址 430074 湖北省武汉市洪山区珞喻路1037号