Pytorch学习笔记—5:将张量存储到GPU

Pytorch学习笔记—5:将张量存储到GPU本文介绍了张量存储到GPU的方法_pytorch如何将数据放到gpu

Pytorch学习笔记---5:将张量存储到GPU"

    在一般时候,当我们谈及存储时,我们指的是CPU上面的RMA。Pytorch张量也可以存储在另一种处理器上:GPU。每个Pytorch张量都可以存储到GPU上,以快速进行大规模并行计算。接下来,所有在张量上执行的操作将使用Pytorch附带的特定于GPU的例程来执行。

    Pytorch支持各种GPU:

    到2019年年中,Pytorch的主要版本只在支持CUDA的GPU上提供加速功能。Pytorch可以运行在AMD的ROCm上(ROCm的源代码可以在GitHub中找到),在GitHub上Pytorch主分支已提供了对AMD的支持,但到目前为止,你需要自己编译该源代码。

一、管理张量的设备属性—–decive

    除了dtype,Pytorch张量还有设备(device)的概念,即张量数据在计算机上的位置。下面我们将通过指定构造函数的相应参数在GPU上创建一个张量:

points_gpu = torch.tensor([[4.0, 1.0], [5.0, 3.0], [2.0, 1.0]], device='cuda')

我们也可以使用to()方法将在CPU上面的张量复制到GPU上:

points_gpu = points.to(device='cuda')

这样将返回一个新的张量,该张量具有相同的数字数据,但存储在GPU的RAM上,而不是常规的RAM上。现在数据被存储在本地GPU上,当我们对张量执行各种运算时将被加速。几乎在所有情况下,基于CPU和GPU的张量都公开相同的面向用户的API,这使得编写代码更加容易,开发者无需关注大量的数字运算将会在哪种设备上运行。

多GPU的情况:

    当我们的机器有多个GPU的时候,我们也可以通过从0开始传递一个整数来确定存储张量的GPU,例如:

points_gpu = points.to(device='cuda:0')

在此基础上,对张量执行的任何操作,例如将所有元素乘一个常数,都将在GPU上执行:

points = 2 * points             # 在CPU上运行
points_gpu = 2 * points_gpu     # 在GPU上运行

注意:一旦计算结果出来,张量points_gpu不会返回到CPU。

以下是上述代码产生的操作:

  ● 张量points被复制到GPU

  ● 在GPU上分配一个新的张量,用来存储乘法运算的结果

  ● 返回该GPU存储的张量的句柄

二、返回CPU

    为了将张量移回CPU,我们需要向to()方法提供一个cpu参数:

points_cpu = points_gpu.to(device='cpu')

    我们也可以使用简写的cpu()或cuda()方法来替代to()方法实现相同的目标:

points_gpu = points.cuda()
points_gpu = points.cuda(0)    
points_cpu = points_gpu.cpu()

值得一提的是,通过使用to()方法,我们可以同时通过device和dtype参数来更改位置和数据类型

今天的文章Pytorch学习笔记—5:将张量存储到GPU分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/85786.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注