CuPy не хватает памяти - PullRequest
       41

CuPy не хватает памяти

0 голосов
/ 16 ноября 2018

Я тестировал библиотеку CuPy и сделал простое умножение матриц, используя einsum:

C = cp.einsum('pqrs,rs->pq', A, B)

Размеры A и B: (41, 41, 41, 41) (41, 41), восприимчиво. Я также проверил их размеры, которые составляют 22606088 байт, 13448 байт.

While running the code, I am getting the following error message:
OutOfMemoryError: out of memory to allocate 38000834048 bytes (total 38023468032 bytes)

Это указывает на то, что мне не хватает памяти. Есть ли возможность отправлять данные частично на устройство и выполнять операции в пакетном режиме?

1 Ответ

0 голосов
/ 16 ноября 2018

Я думаю, что нет возможности отправить данные частично для одного массива.

И раньше я сталкивался с той же проблемой, это может быть вызвано тем, что эффективность Cupy Einsum еще не оптимизирована. https://github.com/cupy/cupy/issues/19#issuecomment-322972682

Если вы можете попробовать заменить функцию einsum с помощью transpose, reshape, matmul и т. Д., Попробуйте их.

Я думаю,

C = cp.einsum('pqrs,rs->pq', A, B)

эквивалентно

p, q, r, s = A.shape
A = cp.reshape(A, (p, q, r*s))
B = cp.reshape(B, (1, 1, r*s))
C = cp.sum(A * B, axis=2)
...