我已经在我的系统中在不同的pci插槽中安装了两个GPU(2xNvidia Quadro 410)。为了解决这两个GPU上的Martix乘法问题,我如何分割输入矩阵,使每个GPU处理/计算输出矩阵的一部分,然后返回它。就像。对于两个矩阵A,B各为10x10阶,然后计算输出矩阵C= and,这样,在第一GPU和第二GPU计算的另一半(即50到b)中,应计算出100个元素(10×10)中的50个元素。我正在尝试在OpenCL上实现它。但是,任何算法都是受欢迎的,这将帮助我找到解决方案。
发布于 2016-05-05 05:07:33
通常,如果有矩阵X (大小为axb,第一行)和Y(大小为bxc),
X * Y = vcat(X[0:a/2,0:b] * Y, X[a/2:a,0:b] * Y)在这个伪码中,vcat是垂直级联(将一个矩阵放在另一个矩阵上,例如,4x3矩阵与2x3矩阵连接将产生6x3矩阵),:表示范围,[]表示索引。
vcat的两个参数都可以在不同的GPU上计算,并且可以通过将输出指向输出缓冲区的不同子区域(假设我们有C顺序数组)来实现级联。X的初始分裂也可以通过使用不同的子区域来实现(因为它是沿着一行划分的)。
https://stackoverflow.com/questions/37042518
复制相似问题