首页 > 解决方案 > 为每个 GPU 实例化单独的 TensorFlow 会话

问题描述

我试图通过使用多个 GPU 并为每个 GPU 实例化一个单独的会话来加速 Tensorflow 推理。

我为此使用了 Tensorflow 1.7 和 2 Quadro GV100。GV100 分别是设备 0 和设备 1。

我的 C++ 代码如下所示:

auto options0 = SessionOptions();
options0.config.mutable_gpu_options()->set_visible_device_list("0");
NewSession(options0, &m_session0);

auto options1 = SessionOptions();
options1.config.mutable_gpu_options()->set_visible_device_list("1");
NewSession(options1, &m_session1);

但是,当我执行此代码时,我收到以下错误消息:

名称:Quadro GV100 主要:7 次要:0 memoryClockRate(GHz):1.627 pciBusID:0000:18:00.0 totalMemory:31.87GiB freeMemory:31.33GiB 2019-01-07 17:56:09.453901:IC:\tensorflow_1_7\tensorflow\tensorflow \core\common_runtime\gpu\gpu_device.cc:1423] 添加可见 gpu 设备:0 2019-01-07 17:56:10.196800: IC:\tensorflow_1_7\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:911 ] 设备互连 StreamExecutor 强度为 1 边缘矩阵:2019-01-07 17:56:10.202994: IC:\tensorflow_1_7\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:917] 0 2019-01-07 17: 56:10.206965: IC:\tensorflow_1_7\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:930] 0: N 2019-01-07 17:56:10.211407: IC:\tensorflow_1_7\tensorflow\tensorflow\core\ common_runtime\gpu\gpu_device.cc:1041] 创建 TensorFlow 设备 (/job:localhost/replica:0/task:0/device:GPU:0 具有 30421 MB 内存)-> 物理 GPU(设备:0,名称:Quadro GV100,pci 总线 ID:0000:18:00.0,计算能力:7.0)17:56:11.099 : 选择 GPU: 1 2019-01-07 17:56:11.280313: IC:\tensorflow_1_7\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1344] 找到具有属性的设备 0:名称:Quadro GV100 主要:7次要:0 memoryClockRate(GHz):1.627 pciBusID:0000:3b:00.0 totalMemory:31.87GiB freeMemory:31.33GiB 2019-01-07 17:56:11.291274:IC:\tensorflow_1_7\tensorflow\tensorflow\core\common_runtime\gpu\ gpu_device.cc:1423] 添加可见 gpu 设备:1 2019-01-07 17:56:12.076807: IC:\tensorflow_1_7\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:911] 设备互连 StreamExecutor 强度为 1边缘矩阵:2019-01-07 17:56:12.082561:IC:\tensorflow_1_7\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:917] 1 2019-01-07 17:56:12.088587: IC:\tensorflow_1_7\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc: 930] 1: N 2019-01-07 17:56:12.095142: FC:\tensorflow_1_7\tensorflow\tensorflow\core\common_runtime\gpu\gpu_id_manager.cc:45]检查失败:cuda_gpu_id.value() == result.first->second (1 vs. 0)将相同的 TfGpuId 映射到不同的 CUDA GPU id。TfGpuId:0 现有映射的 CUDA GPU id:0 尝试映射到的 CUDA GPU id:1

我的问题是,为每个 Tensorflow 会话分配/专用 GPU 的正确方法是什么?

非常感谢您提前提供的帮助!

标签: c++tensorflowgpu

解决方案


推荐阅读