java应用2g内存,在GTX1080上使用~2.2GB内存后,CUDA内存不足消息

我在使用JCuda的GTX1080 GPU上进行矩阵乘法,使用CUDA 8.0版本为0.8.0RC . 我将两个矩阵A和B以行主矢量形式加载到设备中,并从设备读取产品矩阵 . 但我发现我的设备内存耗尽了我的预期 . 例如,如果矩阵A的尺寸为100000 * 5000 = 5亿个条目= 2GB值的浮点值,则:

cuMemAlloc(MatrixA, 100000 * 5000 * Sizeof.FLOAT);

工作良好 . 但是,如果我将数量或行从100000增加到110000,我会在此调用上得到以下错误(这是在矩阵B和C的内存分配之前进行的,因此这些不是问题的一部分):

Exception in thread "main" jcuda.CudaException: CUDA_ERROR_OUT_OF_MEMORY

at jcuda.driver.JCudaDriver.checkResult(JCudaDriver.java:344)

at jcuda.driver.JCudaDriver.cuMemAlloc(JCudaDriver.java:3714)

at JCudaMatrixMultiply.main(JCudaMatrixMultiply.java:84) (my code)

问题是在设备上分配这个大小的矩阵应该只需要大约2.2GB,而GTX1080有8GB的内存,所以我不明白为什么我的内存不足 . 有没有人对此有任何想法?确实,我正在使用JCuda 0.8.0RC和CUDA 8的发布版本,但我尝试下载RC版本的CUDA 8(8.0.27)以与JCuda 0.8.0RC一起使用,并且在使用它时遇到了一些问题 . 但是,如果版本兼容性可能是问题,我可以再试一次 .

当然,100000 * 5000的矩阵非常大,我不需要在我的神经网络项目上使用更大的矩阵一段时间,但我想确信我可以在这个新的上使用所有8GB的内存卡 . 谢谢你的帮助 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值