PyTorch 关于多 GPUs 时的指定使用特定 GPU.

PyTorch 中的 Tensor,Variable 和 nn.Module(如 loss,layer和容器 Sequential) 等可以分别使用 CPU 和 GPU 版本,均是采用 .cuda() 方法.

如:

import torch

a = torch.Tensor(2, 3)
if torch.cuda.is_available(): # 判断是否支持 CUDA
a.is_cuda # False
a = a.cuda() # 放到 GPU 上
a.is_cuda # True
a.get_device() # 默认使用 GPU-0

采用 .cuda() 方法默认使用的是 GPU-0,等价于 .cuda(0).

 

1. GPU ID 指定

当需要指定使用多张 GPUs 中的特定 GPU 时,可以采用 .cuda(1) 方法,但需要对大量的 Tensor、Variable等进行修改.

参考网络上的方法,替代方案主要有:

[1] - 使用 torch.cuda.set_device(id) 函数

import torch
torch.cuda.set_device(id) # id=0, 1, 2 等

[2] - 采用类似 Tensorflow 指定 GPU 的方式,使用 CUDA_VISIBLE_DEVICES

# 使用终端命令行运行的 GPU 指定方式
CUDA_VISIBLE_DEVICES=1 python python_script.py
# 在 python 脚本中的 GPU 指定方式
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "2"

参考:PyTorch中使用指定的GPU

 

2. torch.device

如:

import torch

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
a_cpu = torch.Tensor(2, 3)
# tensor([[0.0000e+00, 0.0000e+00, 1.2771e-40],
# [9.0079e+15, 1.6751e-37, 2.9775e-41]])
a_cpu.device
# device(type='cpu') a_cuda = a.to(device)
# tensor([[-2.1800e-01, 4.5737e-41, 2.3351e-37],
# [ 0.0000e+00, 4.4842e-44, 0.0000e+00]], device='cuda:0')
a_cuda.device
# device(type='cuda', index=0) # 查看当前 gpu id
curr_gpuid = torch.cuda.current_device()
# 0

												

Pytorch - GPU ID 指定 pytorch gpu 指定的更多相关文章

  1. (原)PyTorch中使用指定的GPU

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6836568.html PyTorch默认使用从0开始的GPU,如果GPU0正在运行程序,需要指定其他G ...

  2. pytorch中设定使用指定的GPU

    转自:http://www.cnblogs.com/darkknightzh/p/6836568.html PyTorch默认使用从0开始的GPU,如果GPU0正在运行程序,需要指定其他GPU. 有如 ...

  3. Tensorflow、Pytorch、Keras的多GPU使用

    Tensorflow.Pytorch.Keras的多GPU的并行操作 方法一 :使用深度学习工具提供的 API指定 1.1 Tesorflow tensroflow指定GPU的多卡并行的时候,也是可以 ...

  4. 如何监控GPU使用情况并杀死指定其中进程

    仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 有时候我们常常会有一个需求是监控GPU指定情况,并且需要根据需要杀死GPU进程 这里介绍几个与之相关的指令: ...

  5. TensorFlow指定使用GPU 多块gpu

    持续监控GPU使用情况命令: $ watch -n 10 nvidia-smi1一.指定使用某个显卡如果机器中有多块GPU,tensorflow会默认吃掉所有能用的显存, 如果实验室多人公用一台服务器 ...

  6. TensorFlow指定GPU使用及监控GPU占用情况

    查看机器上GPU情况 命令: nvidia-smi 功能:显示机器上gpu的情况 命令: nvidia-smi -l 功能:定时更新显示机器上gpu的情况 命令:watch -n 3 nvidia-s ...

  7. Linux服务器配置GPU版本的pytorch Torchvision TensorFlow

    最近在Linux服务器上配置项目,项目需要使用GPU版本的pytorch和TensorFlow,而且该项目内会同时使用TensorFlow的GPU和CPU. 在服务器上装环境,如果重新开始,就需要下载 ...

  8. 根据指定id取出数组中指定对象

    // 需求:根据Id取出数组中指定的对象 let arr = [ { id: 1, rotationAngle: 330, target: '目标1' }, { id: 2, rotationAngl ...

  9. keras & tensorflow 列出可用GPU 和 切换CPU & GPU

    列出可用GPU from tensorflow.python.client import device_lib print(device_lib.list_local_devices()) from ...

随机推荐

  1. 使用setTimeout函数解决栈溢出问题

    下面的代码,如果队列太长会导致栈溢出,怎样解决这个问题并且依然保持循环部分: var list = readHugeList(); var nextListItem = function() { va ...

  2. jnhs-netbeans maven Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean (default-clean) on project

    w 无法完成清理 出现这种错误,通常是由于启动了另一个tomcat 进程或者运行的javaw.exe进程,导致报错. 直接运行工程启动后再清理就好了 或者 重启大法

  3. 洛谷P2468 [SDOI2010]粟粟的书架

    来了来了,随便拽一道题写题解[大雾] 最近发现自己基础奇差于是开始复习之前学过的东西,正好主席树我几乎完全没学会,然后打开洛谷试炼场… 发现了这么一道二合一的题. 这道题其实分成两个部分,前50%是一 ...

  4. T2848 列车调度(二分或dp)

    题目背景 自行脑补, 题目描述 有N辆列车,标记为1,2,3,…,N.它们按照一定的次序进站,站台共有K个轨道,轨道遵从先进先出的原则.列车进入站台内的轨道后可以等待任意时间后出站,且所有列车不可后退 ...

  5. Vue--系统指令(基础)

    Vue概念:vue是mvvm模式的,直接操作dom开销较大,先获取dom,修改里边的内容,但是用vue的话,直接视图和模型绑定,不管是视图的数据发生改变还是模型的数据发生改变,其都是关联的,不需要直接 ...

  6. js中保存成图片并下载

    1.保存canvas中绘制的内容为图片 HTML代码: <canvas id="canvas" width="400" height="400& ...

  7. 合唱队形 ( 双向LIS )

    #include <iostream> #include <stdio.h> #include <algorithm> using namespace std; ] ...

  8. 【JZOJ5093】【GDSOI2017第四轮模拟day3】字符串匹配 哈希

    题面 对于一个字符集大小为C的字符串P,我们可以将任意两种字符在P中的位置进行互换,例如P=abcba,我们交换a,b就变为bacab,交换a,d就变为dbcbd,交换可以进行任意次.若交换后P变为了 ...

  9. 【JZOJ3598】【CQOI2014】数三角形

    Mission 对于100%的数据1<=m,n<=1000 Solution 鬼题,ans=C3(n∗m)−Ans,其中Ans表示三点共线的数目: 枚举最长边的向量(x,y),容易算出贡献 ...

  10. 跟阿根一起学Java Web开发二:使用Ajax技术及XML与JSON实现输出

    如今B/S结构的系统使用Ajax技术是再平常只是的了.今天我们就来探讨下在JSPGenSDF第四版中:怎样使用Ajax技术.怎样输出XML文件及JSON格式数据输出. 怎样搭建一个最基础的JSPGen ...