Выберите конкретный gpu для сеанса tenorflow c ++ api

Как я могу попросить TennSflow использовать определенный GPU, чтобы сделать вывод?

Часть исходных кодов

std::unique_ptr<tensorflow::Session> session;
Status const load_graph_status = LoadGraph(graph_path, &session);
if (!load_graph_status.ok()) {
LOG(ERROR) << "LoadGraph ERROR!!!!"<< load_graph_status;
return -1;
}

std::vector<Tensor> resized_tensors;
Status const read_tensor_status = ReadTensorFromImageFile(image_path, &resized_tensors);
if (!read_tensor_status.ok()) {
LOG(ERROR) << read_tensor_status;
return -1;
}

std::vector<Tensor> outputs;
Status run_status = session->Run({{input_layer, resized_tensor}},
output_layer, {}, &outputs);

Пока все хорошо, но тензор потока всегда выбирает один и тот же gpu при запуске Run, есть ли способ указать, какой gpu выполнять?

Если вам нужны полные исходные коды, я разместил их на Pastebin

Редактировать: Похоже, что options.config.mutable_gpu_options () -> set_visible_device_list («0») работают, но я не уверен.

1

Решение

Оказывается, в C ++ API есть ряд (вложенных) структур: tensorflow::SessionOptions, tensorflow::ConfigProto, а также tensorflow::GPUOptions, Последний содержит метод, называемый set_visible_device_list(::std::string&& value) который вы можете выбрать графический процессор, который вы хотели бы:

  auto options = tensorflow::SessionOptions();
options.config.mutable_gpu_options()->set_visible_device_list("0");
// session_ is a unique_ptr to a tensorflow::Session
session_->reset(tensorflow::NewSession(options));

Аналогично этому (для ограничения использования памяти):
Как ограничить использование GPU в tenorflow (r1.1) с C ++ API

4

Другие решения

В Python вы можете изменить настройки параметров графического процессора, добавив при запуске скрипта Python:

gpu_options = tf.GPUOptions(visible_device_list="0")
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

«0» — это имя графического процессора, который вы хотите использовать. Вы можете получить список доступных графических процессоров, набрав команду nvidia-smi в терминальной подсказке.

0

По вопросам рекламы [email protected]