离开函数时消耗的CUDA内存

离开函数时消耗的CUDA内存,cuda,Cuda,我的gtx1060内存不足,所以我开始检查可用内存。我有一个函数在GPU上用推力向量进行大量计算,然后还有第二个函数处理函数_1的结果 我在函数_1结束时检查了内存,从函数_1返回后立即检查了内存,空闲内存有很大不同 void debug\u check\u gpu\u内存() { 无浮点数、总点数、已用点数; 无尺寸,总尺寸; cudaMemGetInfo(免费和总计); 自由m=(uint)自由t/1048576.0; 总数=总数/1048576.0; 已用的=总的-自由的; cout多亏了

我的gtx1060内存不足,所以我开始检查可用内存。我有一个函数在GPU上用推力向量进行大量计算,然后还有第二个函数处理函数_1的结果

我在函数_1结束时检查了内存,从函数_1返回后立即检查了内存,空闲内存有很大不同

void debug\u check\u gpu\u内存()
{
无浮点数、总点数、已用点数;
无尺寸,总尺寸;
cudaMemGetInfo(免费和总计);
自由m=(uint)自由t/1048576.0;
总数=总数/1048576.0;
已用的=总的-自由的;

cout多亏了@Robert_Crovella的评论,我删除了令人不快的类型演员,问题就消失了。这不是CUDA的问题,这是类型演员的问题


我一直在使用Cuda论坛帖子中的代码,结果证明它不是64位安全的在您使用的编程语言中,强制转换优先于算术。即使表达式求值是从左到右进行的,强制转换也会在除法运算之前进行。将
size\u t
强制转换为
uint
对于此处的数字范围来说是个坏主意(>4GB)如果要关闭问题,请删除答案,然后可以将问题标记为删除