Pytorch:CUDA Semantics(语义)
CUDA Semantics 文章大部分内容来自 PyTorch-CUDA Semantics ,如若侵权请联系本人进行删除,本文仅用作个人学习之用,不做他用,转载请注明出处。 基本介绍 pytorch提供 torch.cuda 来创建和运行CUDA操作。 torch.cuda 会一直跟踪当前选中的GPU,所有分配的CUDA tensors都会默认在该GPU上创建分配内存空间。但是,仍然可以通过 torch.cuda.device 来改变选中的GPU(即去选择另外一个GPU)。 一旦一个tensor被分配了空间,则可以操作这个tensor,而不需要管选中了哪个GPU(根据我的理解是:这个Tensor创建的时候已经指定了在哪个GPU上创建,所以之后并不需要再关心)。在这个tensor上的相关计算后的结果仍会保存在该tensor所在的GPU的存储空间中。 默认情况下,跨GPU的运算操作是不被允许的,除了 copy_() 、 to() 、 cuda() 等涉及存储拷贝的函数。除非启用了点对点存储访问(peer-to-peer memory access),否则任何尝试在不同的GPU上执行相关计算的操作都会引发错误。 代码示例: cuda = torch . device ( 'cuda' ) # 默认的CUDA设备 cuda0 = torch . device ( 'cuda:0' )