Я пытаюсь распараллелить множественное умножение матриц, используя несколько графических процессоров в CUPY.
Cupy ускоряет умножение матриц (например, $ A \ times B $).Мне интересно, если у меня есть четыре квадратные матрицы A, B, C, D.Я хочу рассчитать AB и CD на двух разных локальных графических процессорах.Как я могу сделать это в CUPY?
Например, в tenorflow,
for i in xrange(FLAGS.num_gpus):
with tf.device('/gpu:%d' % i):
Есть ли аналогичный способ в CUPY.Особенность Cupy заключается в том, что он выполняет код сразу, поэтому он не может запустить следующую строку (например, $ C \ times D $), пока не закончится текущая строка (например, $ A \ times B $).
Спасибоза помощь Тос.Теперь новый вопрос, скажем, у меня есть десять из этих пар матриц, хранящихся в двух трехмерных массивах (скажем,? *? * 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 в разных устройствах?Могу ли я иметь массивы с одинаковыми именами в разных графических процессорах?