Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用cudaMalloc3DArray无法释放GPU内存 我使用C++,GTX1070_C++_Matlab_Cuda_Gpu_Mex - Fatal编程技术网

使用cudaMalloc3DArray无法释放GPU内存 我使用C++,GTX1070

使用cudaMalloc3DArray无法释放GPU内存 我使用C++,GTX1070,c++,matlab,cuda,gpu,mex,C++,Matlab,Cuda,Gpu,Mex,我正在分配cuda阵列,如下所述: //variables: Vdepth = 200, Vheight = 100, Vwidth = 100, device = 0 VolumeId = 0 cudaExtent volumeSize = make_cudaExtent(Vdepth, Vheight, Vwidth); cudaArray *d_volumeArray = NULL; cudaChannelFormatDesc channelDesc = cudaCreateChannel

我正在分配cuda阵列,如下所述:

//variables: Vdepth = 200, Vheight = 100, Vwidth = 100, device = 0 VolumeId = 0
cudaExtent volumeSize = make_cudaExtent(Vdepth, Vheight, Vwidth);
cudaArray *d_volumeArray = NULL;
cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<texture_type>();
VERIFY_CALL( cudaMalloc3DArray(&d_volumeArray, &channelDesc, volumeSize) );
cu_VolArray[device][VolumeId] = d_volumeArray;
使用GPUz,分配将增加100MB的GPU内存,释放将减少10MB-如何清除扩展内存

整个代码在MATLAB(2012a)中通过mex运行。
这些“卡滞”内存块导致我的MATLAB在尝试
清除mex\u name

时卡滞(卡滞在“忙”)CUDA有许多其他内存需求,这些内存需求导致您观察到的额外内存消耗。请在标记为Duplicate的位置阅读更多信息,说明只有在CUDA上下文被破坏时才会释放额外内存。尽管存在活动上下文,但固定内存消耗仍然在GPUHi上分配—我明白这一点。我的问题是为什么“clear mex”没有释放它,以及如何释放它,这就是为什么我认为您错误地将此标记为重复。这不是您最初问的问题。我已经将您的问题编辑为您所说的内容,并且正在尝试问和编辑标记。如果我有任何误解,请随意进一步编辑
    VERIFY_CALL(cudaFreeArray(cu_VolArray[device][VolumeId]));
    cu_VolArray[device][VolumeId] = NULL;