使用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文件包含了谷歌::protobuf::Arena的符号吗?
我基本上遵循了Tensorflow r1.5的contrib cmake说明。
这里:
https://github.com/tensorflow/tensorflow/blob/r1.5/tensorflow/contrib/cmake/README.md
那些符号藏在哪里?
发布于 2018-12-24 12:38:52
下面的方法似乎是可行的
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
https://stackoverflow.com/questions/53907959
复制相似问题