【问题标题】:CUDA out of memory with matrix multiplyCUDA 内存不足,矩阵乘法
【发布时间】:2019-07-23 00:20:11
【问题描述】:

我正在尝试将 3 个矩阵相乘,但 CUDA 内存不足。

# A: 3000 x 100 (~2MB)
# B: 100 x 100  (~0.05MB)
# C: 100 x 3MM  (~2GB)

A = np.random.randn(3000, 100)
B = np.random.randn(100, 100)
C = np.random.randn(100, 3e6)

A_gpu = torch.from_numpy(A).cuda()
B_gpu = torch.from_numpy(B).cuda()
C_gpu = torch.from_numpy(C).cuda()

R_gpu = (A_gpu @ B_gpu @ C_gpu)

Cuda 正在为此操作请求大约 90GB 的内存。我不明白为什么。

【问题讨论】:

    标签: python numpy machine-learning pytorch


    【解决方案1】:

    乘以矩阵,您的输出大小将是 3,000 x 3,000,000 矩阵!所以尽管AB 相对较小,但输出R 是巨大的:9G 个元素。此外,我怀疑您的矩阵中的dtypefloat64 而不是float32(因为您使用numpy 来初始化它们)。所以R_gpu的9G元素中的每一个需要8个字节;为 R_gpu 带来至少 72GB GPU 内存。我怀疑中间结果和其他一些东西会占用更多的 GPU 内存。

    【讨论】:

      猜你喜欢
      • 2017-10-12
      • 2020-12-22
      • 2021-07-08
      • 2012-05-06
      • 2011-09-07
      • 2012-12-09
      • 1970-01-01
      • 2016-02-22
      • 2012-02-07
      相关资源
      最近更新 更多