gpt4 book ai didi

c++ - 使用 SessionOptions GpuOptions 时 Tensorflow 1.5 contrib cmake C++ 链接问题 MSVC

转载 作者:行者123 更新时间:2023-11-28 04:27:37 24 4
gpt4 key购买 nike

使用 MSVC 2015

一切都很顺利,直到我引入了几行新代码:

之前:

static tensorflow::SessionOptions MakeSessionOptions() {
tensorflow::SessionOptions options;
tensorflow::ConfigProto* config = &options.config;
auto* device_count = options.config.mutable_device_count();

device_count->insert({ "CPU", 1 });
device_count->insert({ "GPU", 1 });
return options;
}

之后

static tensorflow::SessionOptions MakeSessionOptions() {
tensorflow::SessionOptions options;
tensorflow::ConfigProto* config = &options.config;
auto* device_count = options.config.mutable_device_count();

auto* gpu_options = options.config.mutable_gpu_options();
gpu_options->set_allow_growth(true);
gpu_options->set_per_process_gpu_memory_fraction(0.8);

device_count->insert({ "CPU", 1 });
device_count->insert({ "GPU", 1 });
return options;
}

插入新代码后,出现以下链接错误

Severity    Code    Description Project File    Line    Suppression State
Error LNK2019 unresolved external symbol "public: static class tensorflow::GPUOptions * __cdecl google::protobuf::Arena::CreateMessage<class tensorflow::GPUOptions>(class google::protobuf::Arena *)" (??$CreateMessage@VGPUOptions@tensorflow@@@Arena@protobuf@google@@SAPEAVGPUOptions@tensorflow@@PEAV012@@Z) referenced in function "struct tensorflow::SessionOptions __cdecl MakeSessionOptions(void)" (?MakeSessionOptions@@YA?AUSessionOptions@tensorflow@@XZ) rotobotmaskrcnn C:\msys64\home\hodgefamily\dev\openfx_gpu\Support\Plugins\RotobotMaskRCNN\rotobotmaskrcnn.obj 1

那么有人知道哪个 .lib 文件包含 google::protobuf::Arena 的符号吗。

我基本上遵循了 Tensorflow r1.5 的 contrib cmake 说明

这里:

https://github.com/tensorflow/tensorflow/blob/r1.5/tensorflow/contrib/cmake/README.md

这些符号藏在哪里?

最佳答案

以下似乎有效

static tensorflow::SessionOptions MakeSessionOptions() {
tensorflow::SessionOptions options;
tensorflow::ConfigProto* config = &options.config;
auto* device_count = options.config.mutable_device_count();
tensorflow::GPUOptions gpu_options = options.config.gpu_options();
gpu_options.set_allow_growth(true);
gpu_options.set_per_process_gpu_memory_fraction(0.2);
device_count->insert({ "CPU", 1 });
device_count->insert({ "GPU", 1 });
return options;
}

但我不确定它是否达到了预期的效果,因为我仍然可以 OOM 杀死我的程序,这正常吗?

此外,当它没有 OOM 时,我肯定使用了超过 20% 的可分配内存

关于c++ - 使用 SessionOptions GpuOptions 时 Tensorflow 1.5 contrib cmake C++ 链接问题 MSVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53907959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com