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

文档序号:9471303阅读:来源:国知局
示列号, index表示索引值,N表示数据块的列数;
[0167] 第二公式包括:
m表示行值,index表示索引值,N表示数据块的列 数。
[0168] 可选的,第二判断单元012可以具体用于:
[0169] 将此次half-warp线程束所访问每个元素对应的索引值中的最小索引值按照第 一公式得到的第一列号,与上一次half-warp线程束所访问每个元素对应的索引值中的最 大索引值按照第一公式得到的第二列号进行比较;
[0170] 若第一列号与第二列号相等,且将最小索引值和最大索引值满足第三公式,则确 定访问模式为依次访问;
[0171] 若第一列号与第二列号相差为1,且最大索引值按照第二公式得到的行值为〇,最 小索引值按照第二公式得到的行值为M-1,则确定访问模式为依次访问;
[0172] 第三公式包括:
[0173]
,max Index表示最大索引值,min Index表示最小 索引值。
[0174] 可选的,转置单元013可以具体用于:
[0175] 将数据块的标志位更新为第二标识,并将当前half-warp线程束访问的元素通过 局部内存进行转置,并存至新的数据空间中。
[0176] 可选的,转置单元013可以具体用于:
[0177] 获取数据块的空间大小,在全局内存中分配同等大小的数据空间,同时分配局部 内存用于存储待转置的元素;
[0178] 将当前half-warp线程束访问的元素进行转置,并将转置后的元素存储在局部内 存中;
[0179] 将转置后的元素形成的转置数据块写回全局内存分配的同等大小的数据空间;
[0180] 其中,局部内存的大小为:
[0181]Block_dim*(Block_dim+l)*sizeof(typeofData)
[0182]Block_dim表示当前half-warp线程束的线程个数,sizeof(typeofData)表示数 据块中的一个元素的存储空间大小。
[0183] 可选的,第二判断单元012还可以用于:
[0184] 在判断单元判断访问模式是否为按列依次访问之前,根据当前half-warp线程束 访问的每个元素的索引值中的最大值,判断此次访问是否结束;
[0185] 若当前half-warp线程束访问的每个元素的索引值中的最大值满足:maxlndex= M*N_1,则确定此次访问结束;
[0186] 其中,maxlndex表示当前half-warp线程束访问的每个元素的索引值中的最大 值。
[0187] 可选的,访问单元014还可以用于:
[0188] 若访问模式不为按列依次访问,则访问未进行转置处理之前的数据块。
[0189] 本发明实施例提供一种设备,包括第一判断单元、第二判断单元、转置单元以及访 问单元,第一判断单元用于在访问只读全局内存数据块时,根据数据块的标志位判断数据 块是否已进行转置,第二判断单元用于若未进行转置,则判断访问模式是否为按列依次访 问,转置单元用于若访问模式为按列依次访问,则在访问数据块的同时对数据块进行转置, 得到转置数据块并对转置数据块进行存储,第二判断单元还用于若已进行转置,则判断访 问模式是否为按列依次访问,访问单元用于若访问模式为按列依次访问,则访问转置数据 块,若访问模式不为按列依次访问,则访问转置之前的数据块,解决了现有技术中,访问全 局内存过程中,可能会出现按列访问时非合并访问的情况,而导致的全局内存访问带宽降 低的问题。
[0190] 实施例四
[0191] 本发明实施例提供一种设备02,如图4所示,包括:总线021、连接到总线021的处 理器022、存储器023、接收器024和发射器025,其中,该存储器023用于存储指令和数据, 其中,处理器022执行该指令用于在访问存储器023的只读全局内存数据块时,根据数据块 的标志位判断数据块是否已进行转置;处理器022执行该指令还用于若未进行转置,则判 断访问模式是否为按列依次访问,若访问模式为按列依次访问,则在访问存储器023的数 据块的同时对数据块进行转置,得到转置数据块并对转置数据块进行存储,处理器022执 行该指令还用于若已进行转置,则判断访问模式是否为按列依次访问,若访问模式为按列 依次访问,则访问转置数据块,使得访问转置数据块时能够进行合并访问,若访问模式不为 按列依次访问,则访问转置之前的数据块。
[0192] 在本发明实施例中,可选的,处理器022在判断访问模式是否为按列访问之前,还 用于:
[0193] 在GPU编译平台的访问语句前插入桩代码,桩代码用于指示判断访问模式是否为 按列依次访问。
[0194] 在本发明实施例中,可选的,处理器022执行指令根据数据块的标志位判断数据 块是否已进行转置包括:
[0195] 若标志位为第一标识,则确定数据块未进行转置;
[0196] 若标志位为第二标识,则确定数据块已进行转置。
[0197] 在本发明实施例中,可选的,处理器022执行指令判断访问模式是否为按列依次 访问包括:
[0198] 判断访问模式是否为按列访问;
[0199] 若判断访问模式为按列访问,则再判断访问模式是否为依次访问。
[0200] 在本发明实施例中,可选的,处理器022执行指令判断访问模式是否为按列访问 包括:
[0201] 获取当前half-warp线程束访问数据块时所访问的每个元素的索引值,根据索引 值并按照第一公式获取每个元素对应的列号;
[0202] 若每个元素对应的列号相等,且相邻索引值之间相差为N,N表示数据块的列数, 则确定访问模式为按列访问;
[0203] 若每个元素对应的列号中有两个列号相差为1,同时列号相等的相邻索引值相差 为N,其中的列号大者对应的每个元素按照第二公式得出的行号中最小值为0,列号小者对 应的每个元素按照第二公式得出的行号中最大值为M-l,M表示数据块的行数,则确定访问 模式为按列访问;
[0204] 其中,第一公式包括
[0205] 第二公式包括:
m表示行号,columnlndex表示列号,index表示索 引值,N表示数据块的列数。
[0206] 在本发明实施例中,可选的,处理器022执行指令判断访问模式是否为依次访问 包括:
[0207] 将此次half-warp线程束所访问每个元素对应的索引值中的最小索引值按照第 一公式得到的第一列号,与上一次half-warp线程束所访问每个元素对应的索引值中的最 大索引值按照第一公式得到的第二列号进行比较;
[0208] 若第一列号与第二列号相等,且最小索引值和最大索引值满足第三公式,则确定 访问模式为依次访问;
[0209] 若第一列号与第二列号相差为1,且最小索引值按照第二公式得到的行号为0,最 大索引值按照第二公式得到的行号为M-1,则确定访问模式为依次访问;
[0210] 第三公式包括:
[0211]maxIndex表示最大索引值,minIndex表示最小 索引值。
[0212] 在本发明实施例中,可选的,处理器022执行指令在访问数据块的同时对数据块 进行转置,得到转置数据块并对转置数据块进行存储包括:
[0213] 将数据块的标志位更新为第二标识,并将当前half-warp线程束访问的元素通过 局部内存进行转置,并存至新的数据空间中。
[0214] 在本发明实施例中,可选的,处理器022执行指令将当前half-warp线程束访问的 元素通过局部内存进行转置,并存至新的数据空间中包括:
[0215] 获取数据块的空间大小,在全局内存中分配同等大小的数据空间,同时分配局部 内存用于存储待转置的元素;
[0216] 将当前half-warp线程束访问的元素进行转置,并将转置后的元素存储在局部内 存中;
[0217] 将转置后的元素形成的转置数据块写回全局内存分配的同等大小的数据空间;
[0218] 其中,局部内存的大小为:
[0219] Block_dim*(Block_dim+l)*sizeof(type of Data)
[0220] Block_dim表示当前half-warp线程束的线程个数,sizeof (type of Data)表示数 据块中的一个元素的存储空间大小。
[0221] 在本发明实施例中,可选的,处理器022执行指令还用于:
[0222] 在判断访问模式是否为按列依次访问之前,根据当前half-warp线程束访问的每 个元素的索引值中的最大值,判断此次访问是否结束;
[0223] 若当前half-warp线程束访问的每个元素的索引值中的最大值满足:maxlndex = M*N_1,则确定此次访问结束;
[0224] 其中,maxlndex表示当前half-warp线程束访问的每个元素的索引值中的最大 值。
[0225] 在本发明实施例中,可选的,处理器022执行指令还用于:
[0226] 若访问模式不为按列依次访问,则访问未进行转置处理之前的数据块。
[0227] 本发明实施例提供一种设备,包括总线、连接到总线的处理器、存储器、接收器和 发射器,其中,该存储器用于存储指令和数据,其中,处理器执行该指令用于在访问存储器 的只读全局内存数据块时,根据数据块的标志位判断数据块是否已进行转置;处理器执行 该指令还用于若未进行转置,则判断访问模式是否为按列依次访问,若访问模式为按列依 次访问,则在访问存储器的数据块的同时对数据块进行转置,得到转置数据块并对转置数 据块进行存储,处理器执行该指令还用于若已进行转置,则判断访问模式是否为按列依次 访问,若访问模式为按列依次访问,则访问转置数据块,使得访问转置数据块时能够进行合 并访问,若访问模式不为按列依次访问,则访问转置之前的数据块,解决了现有技术中,访 问全局内存过程中,按列访问时可能会出现非合并访问的情况,而导致的全局内存访问带 宽降低的问题。
[0228] 在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其 它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅 仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结 合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的 相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通 信连接,可以是电性,机械或其它的形式。
[0229]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以 是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1