CuPy内存不足

夏娃

我一直在测试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)

这表明我的内存不足。是否可以选择将数据部分发送到设备并按批次执行操作?

Corochann

我认为没有办法为一个数组部分发送数据。

而且我之前也遇到过同样的问题,这可能是由于杯状Einsum效率尚未优化而引起的。https://github.com/cupy/cupy/issues/19#issuecomment-322972682

如果你可以尝试通过更换您的einsum功能transposereshapematmul等,请尝试这些。

我猜

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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章