采购了 3 块 1080ti 显卡,使用的时候发现这样的情况:
gpu0 和 2 的显存使用率一模一样,跑程序时 0 的使用率上去了,2 也会跟着上去,指定使用 gpu:0 也没用
这里是不是有什么猫腻?
我意思是有没有可能在显存上做了手脚,比如gpu:0和1实际共享了同一块显存
写一个简单程序试了下,在gpu:0上分配一个超大的变量,结果gpu:2上可用显存也同步变少了
··· from pynvml import * import torch as t
def get_memory(id): handle = nvmlDeviceGetHandleByIndex(id) info = nvmlDeviceGetMemoryInfo(handle) return info.used / info.total * 100
def print_memory(): print('=' * 40) print('gpu:0 {:.2f}%, gpu:1 {:.2f}% gpu:2 {:.2f}%'.format(get_memory(0), get_memory(1), get_memory(2))) print('=' * 40)
nvmlInit() print('NvmlInit done.')
deviceCount = nvmlDeviceGetCount() print('{} gpus detected.'.format(deviceCount))
print_memory()
print('Creating tensor [999, 99, 99, 99] on gpu:0 ..........') a = t.rand(999, 99, 99, 99).to('cuda:0') print('Done.')
print_memory() ···
···
1
327beckham 2018-12-26 13:27:12 +08:00
跑 keras,用环境变量指定显卡,试一下就知道了
|
2
dachuige 2018-12-26 13:31:14 +08:00
跑个挖矿程序试试看看算力就知道了。
|