首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SessionOptions GpuOptions时Tensorflow 1.5 contrib cmake C++链接问题MSVC

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

Stack Overflow用户
提问于 2018-12-24 07:32:16
回答 1查看 284关注 0票数 0

使用MSVC 2015

在我引入几行新代码之前,一切都很顺利:

之前:

代码语言:javascript
复制
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;
}

之后

代码语言:javascript
复制
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;
}

一旦插入了新代码,我就会得到以下链接错误

代码语言:javascript
复制
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文件包含了谷歌::protobuf::Arena的符号吗?

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

这里:

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

那些符号藏在哪里?

EN

回答 1

Stack Overflow用户

发布于 2018-12-24 12:38:52

下面的方法似乎是可行的

代码语言:javascript
复制
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杀死我的程序,这是正常的吗?

当然,我使用了超过20%的可分配内存,但它并没有OOM

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53907959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档