指定GPU

方法 1:在代码中设置

import os

os.environ["CUDA_VISIBLE_DEVICES"] = "0"

import random
import numpy as np
import torch

def seed_torch(seed=42):
    random.seed(seed)
    os.environ["PYTHONHASHSEED"] = str(seed)
    np.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)
    torch.backends.cudnn.benchmark = False
    torch.backends.cudnn.deterministic = True

seed = 42
seed_torch(seed)

# 之后的代码
# ...

方法 2:在命令行中设置

CUDA_VISIBLE_DEVICES=0 python your_script.py --cfg your_config.yaml

### 如何在代码中指定使用特定的GPU设备 在深度学习框架PyTorch中,可以通过多种方式实现对特定GPU设备的选择和配置。以下是几种常见的方法及其具体实现: #### 方法一:通过 `torch.cuda.set_device` 设置默认GPU 此函数允许开发者手动设置当前进程所使用的默认GPU设备。例如: ```python import torch torch.cuda.set_device(1) # 设置第1号GPU作为默认设备 x = torch.tensor([1, 2, 3], device=torch.device('cuda')) # 创建张量,默认位于第1号GPU上 print(x.device) # 输出 cuda:1 ``` 这种方法适用于单GPU场景,并且需要确保目标GPU可用[^1]。 #### 方法二:利用环境变量 `CUDA_VISIBLE_DEVICES` 控制可见GPU范围 通过修改操作系统中的环境变量 `CUDA_VISIBLE_DEVICES`,可以限定程序能够访问的GPU列表。这种方式不仅影响PyTorch的行为,还会影响其他基于CUDA的应用程序。例如: ```python import os os.environ["CUDA_VISIBLE_DEVICES"] = "2" # 只让程序看到第2号GPU device = torch.device("cuda") # 默认指向重新映射后的第一个GPU(即原来的第2号) y = torch.randn(2, 3).to(device) print(y.device) # 输出 cuda:0,但实际上对应的是物理上的第2号GPU ``` 如果希望同时启用多个GPU,则可以用逗号分隔对应的索引值[^2][^3]: ```python os.environ["CUDA_VISIBLE_DEVICES"] = "0,1" devices = [torch.device(f'cuda:{i}') for i in range(torch.cuda.device_count())] for dev in devices: print(dev) # 分别打印 cuda:0 和 cuda:1 ``` #### 方法三:直接定义并传递具体的 `torch.device` 对象 对于更加灵活的操作来说,推荐直接构建一个精确描述目标硬件位置的对象实例传入相关函数调用之中。如下所示: ```python if torch.cuda.is_available(): selected_gpu_id = 3 target_device = torch.device(f'cuda:{selected_gpu_id}') else: target_device = 'cpu' model = SomeModel().to(target_device) # 将模型迁移到选定的GPU上 input_data = torch.randn(batch_size, input_dim).to(target_device) # 同样迁移输入数据到同一块卡上 output = model(input_data) ``` 这里需要注意的一点是,所有参与运算的部分都应当处于相同的逻辑地址空间之下;否则可能会引发跨节点通信异常等问题. 另外值得注意的是,在实际开发过程中还需要考虑诸如Docker容器隔离机制等因素的影响——当运行于此类受限环境中时,可能额外需要完成一些前置准备工作才能正常暴露宿主机端的真实图形处理器资源给内部应用使用[^4]. 最后提醒一下,在多人共享集群环境下作业调度期间合理规划各自独占时间段内的计算单元分配情况尤为重要,以免因争抢而导致任务失败或者效率低下等情况发生[^5].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值