PyTorch中的CUDA怎么使用


本篇内容主要讲解“PyTorch中的CUDA怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PyTorch中的CUDA怎么使用”吧!CUDA(Compute Unified Device Architecture)是NVIDIA推出的异构计算平台,PyTorch中有专门的模块torch.cuda来设置和运行CUDA相关操作。本地安装环境为Windows10,Python3.7.8和CUDA 11.6,安装PyTorch最新稳定版本1.12.1如下:1.查看PyTorch版本2.查看GPU设备是否可用3.PyTorch默认使用设备是CPU4.查看所有可用的cpu设备的数量这里CPU设备数量指的是逻辑处理器的数量。5.查看所有可用的gpu设备的数量6.获取gpu设备的名称7.通过device=”cpu:0″指定cpu:0设备8.通过torch.device指定cpu:0设备9.使用索引的方式,默认使用CUDA设备10.通过torch.device(“cuda:0)指定cuda:0设备默认情况下创建Tensor是在CPU设备上的,但是可以通过copy_、to、cuda等方法将CPU设备中的Tensor转移到GPU设备上。当然也是可以直接在GPU设备上创建Tensor的。torch.tensor和torch.Tensor的区别是,torch.tensor可以通过device指定gpu设备,而torch.Tensor只能在cpu上创建,否则报错。输出结果如下:cpu
cuda:0
cuda:0
cpu
tensor([[1., 4., 7.],
[3., 6., 9.],
[2., 5., 8.]])主要说明下这个copy_()方法,实现如下:就是从src中拷贝元素到self的tensor中,然后返回self。以gpu_tensor3 = cpu_tensor.copy_(gpu_tensor2)为例,就是把gpu中的gpu_tensor2拷贝到cpu中的cpu_tensor中。输出结果,如下:cuda:0
tensor([[0.7061, 0.2161, 0.8219, 0.3354],
[0.1697, 0.1730, 0.1400, 0.2825],
[0.1771, 0.0473, 0.8411, 0.2318]], device=’cuda:0′)
tensor([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]], device=’cuda:0′)Steam是CUDA命令线性执行的抽象形式,分配给设备的CUDA命令按照入队序列的顺序执行。每个设备都有一个默认的Steam,也可以通过torch.cuda.Stream()创建新的Stream。如果不同Stream中的命令交互执行,那么就不能保证命令绝对按顺序执行。下面的这个例子不同的Stream就可能会产生错误。这个例子存在的问题是torch.sum()可能会在torch.randn()之前就执行。为了保证Stream中的命令绝对按顺序执行,接下来使用Synchronize同步方法解决上面例子的问题:解决问题的思路就是通过torch.cuda.Stream.synchronize(default_stream)等待创建A的stream执行完毕,然后再执行新的Stream中的指令。
除此之外,使用memory_cached方法获取缓存内存的大小,使用max_memory_cached方法获取最大缓存内存的大小,使用max_memory_allocated方法获取最大分配内存的大小。可以使用empty_cache方法释放无用的缓存内存。缓存就是当计算机内存不足的时候,就会把内存中的数据存储到硬盘上。固定缓冲区就是说常驻内存,不能把这部分数据缓存到硬盘上。可以直接使用pin_memory方法或在Tensor上直接调用pin_memory方法将Tensor复制到固定缓冲区。为什么要做固定缓冲区呢?目的只有一个,就是把CPU上的固定缓冲区拷贝到GPU上时速度快。Tensor上的is_pinned方法可以查看该Tensor是否加载到固定缓冲区中。输出结果如下所示:id: 1605289350472
id: 1605969660408
id: 1605969660248
tensor([[免费云主机域名 1., 2., 4.],
[ 5., 7., 9.],
[ 3., 7., 10.]], device=’cuda:0′)
is_pinned: False/True说明:通过id()查看对象的内存地址。自动设备感知本质上就是有GPU时就使用GPU,没有GPU时就使用CPU,即一套代码适配CPU和GPU设备。GPU是否存在是通过torch.cuda.is_available()判断的。常见的写法如下:输出结果如下所示:tensor([1, 2, 3], device=’cuda:0′)在Module对象上调用to()方法可以把模型也迁移到GPU设备上,如下所示:从上述输出参数中可以看到param都是device=’cuda:0’上的tensor,所以可以说模型通过to()迁移到GPU设备上了。到此,相信大家对“PyTorch中的CUDA怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: php代码如何删除非空目录

这篇“php代码如何删除非空目录”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php代码如何删除非空目录”文章吧。 php代码删除非空目录的方法…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/30 19:17
下一篇 03/30 19:17

相关推荐