matlab清空gpu内存,当CUDA失败时,让MATLAB释放GPU

我编写了我从MATLAB MEX文件中调用的CUDA代码 . 我没有使用任何MATLAB的GPU库或功能 . 我的代码只是接受C类型变量的CUDA代码而我只使用mex将 mwtypes 转换为C类型,然后调用独立的自编写CUDA代码 .

问题是,有时候,特别是在开发阶段,CUDA失败了(因为我犯了一个错误) . 大多数CUDA调用通常都被 gpuErrchk(cudaDoSoething(cuda)) ,defined as调用:

// Uses MATLAB functions but you get the idea.

#define gpuErrchk(ans) { gpuAssert((ans), __FILE__, __LINE__); }

inline void gpuAssert(cudaError_t code, const char *file, int line, bool abort=true)

{

if (code != cudaSuccess)

{

mexPrintf("GPUassert: %s %s %d\n", cudaGetErrorString(code), file, line);

if (abort){

//cudaDeviceReset(); //This does not make MATLAB release it

mexErrMsgIdAndTxt("MEX:myfun", ".");

}

}

}

虽然这可以按预期工作,但是会出现错误

GPUassert:遇到非法内存访问somefile.cu 208

在大多数情况下,MATLAB之后不会发布GPU . 这意味着即使我更改代码并重新编译,下一次调用代码也会导致错误:

GPUassert:所有支持CUDA的设备都忙或不可用somefile.cu firs_cuda_line

消除此错误的唯一方法是重新启动MATLAB . 这只是令人烦恼并阻碍了开发/测试过程 . 这不是我在开发Visual Studio时发生的事情 .

在错误提出之前和之后我都试过 cudaDeviceReset() ,但无济于事 .

What can I do/try to make MATLAB release the GPU after a GPU runtime error?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Deep Learning Toolbox™提供了一个框架,用于设计和实现具有算法,预训练模型和应用程序的深度神经网络。您可以使用卷积神经网络(ConvNets,CNN)和长期短期记忆(LSTM)网络对图像,间序列和文本数据进行分类和回归。应用程序和图表可帮助您可视化激活,编辑网络体系结构以及监控培训进度。 对于小型训练集,您可以使用预训练的深层网络模型(包括SqueezeNet,Inception-v3,ResNet-101,GoogLeNet和VGG-19)以及从TensorFlow™-Keras和Caffe导入的模型执行传输学习。 了解深度学习工具箱的基础知识 深度学习图像 从头开始训练卷积神经网络或使用预训练网络快速学习新任务 使用间序列,序列和文本进行深度学习 为间序列分类,回归和预测任务创建和训练网络 深度学习调整和可视化 绘制培训进度,评估准确性,进行预测,调整培训选项以及可视化网络学习的功能 并行和云中的深度学习 通过本地或云中的多个GPU扩展深度学习,并以交互方式或批量作业培训多个网络 深度学习应用 通过计算机视觉,图像处理,自动驾驶,信号和音频扩展深度学习工作流程 深度学习导入,导出和自定义 导入和导出网络,定义自定义深度学习图层以及自定义数据存储 深度学习代码生成 生成MATLAB代码或CUDA ®和C ++代码和部署深学习网络 函数逼近和聚类 使用浅层神经网络执行回归,分类和聚类 间序列和控制系统 基于浅网络的模型非线性动态系统; 使用顺序数据进行预测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值