一种全局内存访问的方法和设备的制造方法

文档序号:9471303阅读:592来源:国知局
一种全局内存访问的方法和设备的制造方法
【技术领域】
[0001] 本发明涉及计算机领域,尤其涉及一种全局内存访问的方法和设备。
【背景技术】
[0002] 图形处理器(GraphicProcessingUnit,GPU)在对全局内存进行访问时,通常有两 种情况:一种是按行的顺序访问数据块,另一种是按列的顺序访问数据块。在按行访问数据 块时,一般情况下,各个线程访问的数据地址是连续的,通常会进行合并访问,但是在按列 访问数组时,由于访问的数据地址不连续,会出现非合并访问的情况。其中,合并访问是指 当访问的数据地址连续时,GPU通常将多个线程的内存访问尽量合并到较少的内存请求命 令中,存储器进行一次传输就可以处理多个线程的访存请求。
[0003] 其中,GPU全局内存的访问是否满足合并访问条件,是对图形处理器通用计算技术 (GeneralPurposeComputingonGraphicsProcessingUnits,GPGPU)程序性能影响最明显 的因素之一。在计算能力1.0/1.I的GPU硬件上,是否满足合并访问条件在很多情况下会 使GPGPU程序的速度产生高达一个数量级的差异,对存储器带宽性能有很大影响。
[0004] 现有技术中,对于计算能力为I.X的设备,half-warp(由warp中的前16个或者 后16个线程组成)的16个线程对全局内存进行装载或者存储访问时,当按列依次访问某 一块连续的只读全局内存地址空间时,由于线程束依次访问的数据地址不连续,会出现非 合并访问的情况,就会造成half-warp中的16个线程会访问16次全局内存,使得全局内存 的访问带宽会降到最低。

【发明内容】

[0005] 本发明的实施例提供一种全局内存访问的方法和设备,能够解决现有技术中按列 访问时非合并访问导致的存储器访问带宽低下的问题。
[0006] 为达到上述目的,本发明的实施例采用如下技术方案:
[0007] 第一方面,提供了一种全局内存访问的方法,包括:
[0008] 在访问只读全局内存数据块时,根据所述数据块的标志位判断所述数据块是否已 进行转置;
[0009] 若未进行转置,则判断访问模式是否为按列依次访问,若所述访问模式为所述按 列依次访问,则在访问所述数据块的同时对所述数据块进行转置,得到转置数据块并对所 述转置数据块进行存储;
[0010] 若已进行转置,则判断所述访问模式是否为所述按列依次访问,若所述访问模式 为所述按列依次访问,则访问所述转置数据块,使得访问所述转置数据块时能够进行合并 访问,若所述访问模式不为所述按列依次访问,则访问转置之前的数据块。
[0011] 结合第一方面,在第一方面的第一种可能的实现方式中,所述判断访问模式是否 为按列依次访问包括:
[0012] 判断所述访问模式是否为按列访问;
[0013] 若判断所述访问模式为按列访问,则再判断所述访问模式是否为依次访问。
[0014] 结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式 中,所述数据块的标志位为第一标识;
[0015] 所述在访问所述数据块的同时对所述数据块进行转置,得到转置数据块并对所述 转置数据块进行存储包括:
[0016] 将所述数据块的标志位从所述第一标识更新为第二标识,并将所述当前 half-warp线程束访问的元素通过局部内存进行转置,并存至新的数据空间中。
[0017] 结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,判断访问 模式是否为按列访问包括:
[0018] 获取当前half-warp线程束访问所述数据块时所访问的每个元素的索引值,根据 所述索引值并按照第一公式获取每个元素对应的列号;
[0019] 若每个元素对应的列号相等,且相邻索引值之间相差为N,N表示所述数据块的列 数,则确定所述访问模式为所述按列访问;
[0020] 若每个元素对应的列号中有两个列号相差为1,同时列号相等的相邻索引值相差 为N,其中的列号大者对应的每个元素按照第二公式得出的行号中最小值为0,列号小者对 应的每个元素按照所述第二公式得出的行号中最大值为M-I,M表示所述数据块的行数,则 确定所述访问模式为所述按列访问;
[0021] 其中,所述第一公式包括
所述列号,index表示所述索引值,N表示所述数据块的列数;
[0022] 所述第二公式包括:
m表示所述行号,index表示所述索引值,N表 示所述数据块的列数。
[0023] 结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述判断 所述访问模式是否为依次访问包括:
[0024] 将此次half-warp线程束所访问每个元素对应的索引值中的最小索引值按照所 述第一公式得到的第一列号,与上一次half-warp线程束所访问每个元素对应的索引值中 的最大索引值按照所述第一公式得到的第二列号进行比较;
[0025] 若所述第一列号与所述第二列号相等,且所述最小索引值和所述最大索引值满足 第三公式,则确定所述访问模式为所述依次访问;
[0026] 若所述第一列号与所述第二列号相差为1,且所述最大索引值按照所述第二公式 得到的行号为〇,所述最小索引值按照所述第二公式得到的行号为M-1,则确定所述访问模 式为所述依次访问;
[0027]所述第三公式包括:
[0028]
.,'max Index表示所述最大索引值,min Index表示 所述最小索引值。
[0029] 结合第一方面的第二种可能的实现方式,在第五种可能的实现方式中,所述将所 述当前half-warp线程束访问的元素通过局部内存进行转置,并存至新的数据空间中包 括:
[0030] 获取所述数据块的空间大小,在全局内存中分配同等大小的数据空间,同时分配 局部内存用于存储待转置的元素;
[0031] 将所述当前half-warp线程束访问的元素进行转置,并将转置后的元素存储在局 部内存中;
[0032] 将转置后的元素形成的转置数据块写回所述全局内存分配的同等大小的数据空 间;
[0033] 其中,所述局部内存的大小为:
[0034] Block_dim*(Block_dim+l)*sizeof(type of Data)
[0035] Block_dim表示所述当前half-warp线程束的线程个数,sizeof (type of Data)表 示所述数据块中的一个元素的存储空间大小。
[0036] 结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述方法 还包括:
[0037] 在访问所述数据块或所述转置数据块时,根据当前half-warp线程束访问的每个 元素的索引值中的最大值,判断此次访问是否结束;
[0038] 若所述当前half-warp线程束访问的每个元素的索引值中的最大值满足: maxlndex = M*N_1,则确定此次访问结束;
[0039] 其中,maxlndex表示所述当前half-warp线程束访问的每个元素的索引值中的最 大值。
[0040] 结合第一方面,在第七种可能的实现方式中,根据数据块的标志位判断所述数据 块是否已进行转置包括:
[0041] 若所述标志位为所述第一标识,则确定所述数据块未进行转置;
[0042] 若所述标志位为所述第二标识,则确定所述数据块已进行转置。
[0043] 第二方面,提供了一种设备,包括:
[0044] 第一判断单元,用于在访问只读全局内存数据块时,根据所述数据块的标志位判 断所述数据块是否已进行转置;
[0045] 第二判断单元,还用于若未进行转置,则判断访问模式是否为按列依次访问;
[0046] 转置单元,用于若所述访问模式为所述按列依次访问,则在访问所述数据块的同 时对所述数据块进行转置,得到转置数据块并对所述转置数据块进行存储;
[0047] 所述第二判断单元,还用于若已进行转置,则判断所述访问模式是否为所述按列 依次访问;
[0048] 访问单元,用于若所述访问模式为所述按列依次访问,则访问所述转置数据块,使 得访问所述转置数据块时能够进行合并访问,若所述访问模式不为所述按列依次访问,则 访问转置之前的数据块。
[0049] 结合第二方面,在第二方面的第一种可能的实现方式中,所述判断单元具体用 于:
[0050] 判断所述访问模式是否为按列访问;
[0051] 若判断所述访问模式为按列访问,则再判断所述访问模式是否为依次访问。
[0052] 结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式 中,所述数据块的标志位为第一标识;
[0053] 所述转置单元具体用于:
[0054] 将所述数据块的标志位从所述第一标识更新为第二标识,并将所述当前 half-warp线程束访问的元素通过局部内存进行转置,并存至新的数据空间中。
[0055] 结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述判断 单元具体用于:
[0056] 获取当前half-warp线程束访问所述数据块时所访问的每个元素的索引值,根据 所述索引值并按照第一公式获取每个元素对应的列号;
[0057] 若每个元素对应的列号相等,且相邻索引值之间相差为N,N表示所述数据块的列 数,则确定所述访问模式为所述按列访问;
[0058] 若每个元素对应的列号中有两个列号相差为1,同时列号相等的相邻索引值相差 为N,其中的列号大者对应的每个元素按照第二公式得出的行号中最小值为0,列号小者对 应的每个元素按照所述第二公式得出的行号中最大值为M-I,M表示所述数据块的行数,则 确定所述访问模式为所述按列访问;
[0059] 其中,所述第一公式包括
,columnlndex表示 所述列号,index表示所述索引值,N表示所述数据块的列数;
[0060] 所述第二公式包拒
,111表示所述行号,index表示所述索引值,N表 示所述数据块的列数。
[0061] 结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述判断 单元具体用于:
[0062] 将此次half-warp线程束所访问每个元素对应的索引值中的最小索引值按照所 述第一公式得到的第一列号,与上一次half-warp线程束所访问每个元素对应的索引值中 的最大索引值按照所述第一公式得到的第二列号进行比较;
[0063] 若所述第一列号与所述第二列号相等,且将所述最小索引值和所述最大索引值满 足第三公式,则确定所述访问模式为所述依次访问;
[0064] 若所述第一
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1