【发布时间】:2019-09-19 02:11:30
【问题描述】:
我正在尝试在 CUPY 中使用多个 GPU 并行化多个矩阵乘法。
Cupy 加速矩阵乘法(例如 $A\times B$)。 我想知道我是否有四个方阵 A、B、C、D。我想在两个不同的本地 GPU 上计算 AB 和 CD。我如何在 CUPY 中做到这一点?
例如在张量流中,
for i in xrange(FLAGS.num_gpus):
with tf.device('/gpu:%d' % i):
在 CUPY 中是否有类似的方法。 Cupy 的问题在于它会立即执行代码,因此它无法运行下一行(例如 $C\times D$),直到当前行完成(例如 $A\times B$)。
感谢托斯的帮助。现在新的问题是, 假设我有十个这样的矩阵对存储在两个 3d numpy 数组中(比如?*?* 10)。如何编写一个循环来存储乘法的结果?
anumpy #size(1e5,1e5,10)
bnumpy #size(1e5,1e5,10)
for i in range(10):
#say I have 3 gpus
with cupy.cuda.Device(i % 3):
a = cupy.array(anumpy[:,:,i])
b = cupy.array(bnumpy[:,:,i])
ab[:,:,math.floor(i/3)] = a @ b
如何将这 3 个 ab 组合到不同的设备中? 我可以在不同的 GPU 中拥有同名的数组吗?
【问题讨论】: