【matlab网络学习】GPU 计算不支持的警告原因与检测GPU是否使用
·
问题由来
使用Matlab进行网络学习时,出现下列报错。搜索后得知原因与检测方法,记录如下
NOTICE: Jacobian training not supported on GPU. Training function set to TRAINSCG.
原因探索与解决
当完成CUDA下载与CUNN后,在生成的网络中直接使用GPU进行加速,简单的方法就是把“useGPU”参数设为“yes”,但由于使用的是默认训练函数,就会看到GPU出现警告,GPU计算不支持雅可比训练,只支持梯度训练。因此,训练函数自动变为梯度训练函数。
net2 = train(net1,x,t,'useGPU','yes')
y = net2(x,'useGPU','yes')
为了避免通知,可以把训练函数改变为梯度训练函数。
net1.trainFcn = 'trainscg';
检测GPU是否使用
可以使用“gpuDeviceCount”查看系统的GPU数量,同时可以使用函数“gpuDevice”按索引查询GPU的特性。
gpuDeviceCount
gpuDevice(1)
ans =
1
ans =
CUDADevice - 属性:
Name: 'NVIDIA GeForce RTX 3060'
Index: 1
ComputeCapability: '8.6'
SupportsDouble: 1
DriverVersion: 12.3000
ToolkitVersion: 11
MaxThreadsPerBlock: 1024
MaxShmemPerBlock: 49152
MaxThreadBlockSize: [1024 1024 64]
MaxGridSize: [2.1475e+09 65535 65535]
SIMDWidth: 32
TotalMemory: 8.5894e+09
AvailableMemory: 7.3668e+09
MultiprocessorCount: 28
ClockRateKHz: 1777000
ComputeMode: 'Default'
GPUOverlapsTransfers: 1
KernelExecutionTimeout: 1
CanMapHostMemory: 1
DeviceSupported: 1
DeviceAvailable: 1
DeviceSelected: 1
对于GPU有没有使用,则是使用“showResources”函数即可,此函数可以显示计算资源
net2 = train(net1,x,t,'useGPU','yes','showResources','yes')
y = net2(x,'useGPU','yes','showResources','yes')
Computing Resources:
GPU device #1, NVIDIA GeForce RTX 3060
注意:当任何输入参数是gpuArray时,许多MATLAB函数都会在GPU上自动执行。
如果有其他关于并行计算与matlab多个GPU计算的问题可以看如下的链接
[1] https://www.mathworks.com/help/deeplearning/ug/neural-networks-with-parallel-and-gpu-computing.html
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)