【发布时间】:2014-01-31 04:20:55
【问题描述】:
我正在使用带有 cuda 5.5 的推力来进行整数向量排序。 排序 100*1024*1024 int 应该分配 400MB 内存,但 nvidia-smi 总是显示“Memory-Usage 105MB / 1023MB”。(我的测试 GPU 是 GTX260M)
排序 150*1024*1024 会出现分配错误:
terminate called after throwing an instance of 'thrust::system::detail::bad_alloc'
what(): std::bad_alloc: out of memory
Aborted (core dumped)
在分配数组之前,我正在使用它返回的 cudaMemGetInfo 检查内存:
GPU 内存使用量:已用 = 105.273682,可用 = 918.038818 MB,总计 = 1023.312500 MB
我可以在开始 gpu 分析之前检查我的整数数组的最大可用内存吗?
编辑:
好的,在排序之前我的内存使用是关于这个的。 GPU 内存使用量:已用 = 545.273682,可用 = 478.038818 MB,总计 = 1023.312500 MB
在我看来排序算法需要一些额外的内存。
【问题讨论】:
-
我猜您的 GetInfo 有问题。如前所述,您首先分配 400MB,然后尝试再分配 600MB,这对于您的略低于 1000MB 的设备来说太多了。
-
好的,我检查了 nvidia-smi 没有显示正确的用法。
标签: c++ arrays memory cuda thrust