Tensorflow 1.6.0 с поддержкой CUDA в CentOS 6.10 C ++ для связи с libtensorflow (_cc) (_ framework) .os - PullRequest
0 голосов
/ 04 января 2019

Итак, у меня успешно была версия CPU, работающая только с моим программным обеспечением.

Теперь я установил новый компьютер с аппаратным обеспечением CUDA, которое у меня работает под Windows, с помощью contrib cmake.

Сборка Linux использует bazel и создает необходимые цели

//tensorflow:libtensorflow.so
//tensorflow:libtensorflow_cc.so
//tensorflow:libtensorflow_framework.so

Используя следующий файл .zip: https://github.com/tensorflow/tensorflow/archive/v1.6.0.zip

с CUDA 9.1 cudnn 7.1.2 и gcc 4.8.5 в CentOS 6.10

построен с использованием bazel

Но когда я продолжаю строить свое программное обеспечение, я получаю следующую ошибку:

  CXX      Linux-64-debug/rotobot.o
  In file included from /home/sam/dev/tensorflow-1.6.0/tensorflow/core/framework/tensor.h:23:0,
                 from /home/sam/dev/tensorflow-1.6.0/tensorflow/core/public/session.h:24,
                 from rotobot.cpp:32:
/home/sam/dev/tensorflow-1.6.0/tensorflow/core/framework/types.h: In instantiation of ‘struct tensorflow::DataTypeToEnum<long int>’:
/home/sam/dev/tensorflow-1.6.0/tensorflow/core/framework/tensor.h:566:46:   required from ‘typename tensorflow::TTypes<T, NDIMS>::Tensor tensorflow::Tensor::tensor() [with T = long int; long unsigned int NDIMS = 3ul; typename tensorflow::TTypes<T, NDIMS>::Tensor = Eigen::TensorMap<Eigen::Tensor<long int, 3, 1, long int>, 16, Eigen::MakePointer>]’
rotobot.cpp:1742:53:   required from here
/home/sam/dev/tensorflow-1.6.0/tensorflow/core/framework/types.h:356:3: error: static assertion failed: Specified Data Type not supported
   static_assert(IsValidDataType<T>::value, "Specified Data Type not supported");
   ^
In file included from /home/sam/dev/tensorflow-1.6.0/tensorflow/core/public/session.h:24:0,
                 from rotobot.cpp:32:
/home/sam/dev/tensorflow-1.6.0/tensorflow/core/framework/tensor.h:
In instantiation of ‘typename tensorflow::TTypes<T, NDIMS>::Tensor tensorflow::Tensor::tensor() [with T = long int; long unsigned int NDIMS = 3ul; typename tensorflow::TTypes<T, NDIMS>::Tensor = Eigen::TensorMap<Eigen::Tensor<long int, 3, 1, long int>, 16, Eigen::MakePointer>]’:
rotobot.cpp:1742:53:   required from here
/home/sam/dev/tensorflow-1.6.0/tensorflow/core/framework/tensor.h:566:46: error: ‘v’ is not a member of ‘tensorflow::DataTypeToEnum<long int>’
   CheckTypeAndIsAligned(DataTypeToEnum<T>::v());
                                              ^
make: *** [Linux-64-debug/rotobot.o] Error 1

Есть идеи?

следующиестроки 31-32

#include <tensorflow/core/platform/init_main.h>
#include <tensorflow/core/public/session.h>
#include <tensorflow/core/framework/tensor_shape.h>

слово long вообще не появляется в исходном коде.

Все это работало ранее.

Предыдущая среда сборки - виртуальнаяМашина CentOS 6.9, но в значительной степени идентична.

этот продукт можно найти здесь https://kognat.com/shop

Редактировать:

Я вижу, вопрос немного непрозрачный:

здесь запускается команда

g++ -c -std=c++11 -g -L/home/sam/opt/standalone_tf/lib -ltensorflow_cc -L/home/sam/opt/standalone_tf/lib -ltensorflow_framework -I/home/sam/opt/standalone_tf/include/third_party  -I/home/sam/opt/standalone_tf/include -I/home/sam/opt/standalone_tf/include/nsync/public/ -I/home/sam/opt/eigen3/include/eigen3 -I/home/sam/opt/ilmbase-2.2.0/include -I/home/sam/opt/oiio-1.6.18/include/ -I/home/sam/dev/RLM/src -L/home/samh/dev/RLM/x64_l1 -lrlm   -I../..//../include -I../..//include -I../..//Plugins/include -m64 -fPIC -fvisibility=hidden     rotobot.cpp -o Linux-64-debug/rotobot.o

включает в себя inteостальные: -I / home / sam / opt / standalone_tf / include / third_party -I / home / sam / opt / standalone_tf / include -I / home / sam / opt / standalone_tf / include / nsync / public / -I / home/ sam / opt / eigen3 / include / eigen3

, где содержимое / home / sam / opt / standalone_tf

имитирует каталог / home / standalone в руководстве

https://tuanphuc.github.io/standalone-tensorflow-cpp/

Пример в приведенном выше учебном пособии строится и работает нормально.

см .:

[sam@localhost Rotobot]$ cd ~/opt/standalone_tf/
[sam@localhost standalone_tf]$ make clean
rm -f main
[sam@localhost standalone_tf]$ make
g++ -std=c++11 -g -Wall -D_DEBUG -Wshadow -Wno-sign-compare -w -o main main.cc -I/usr/local/include/eigen3 -I./include/third_party -I./include -I./include/nsync/public/ -lprotobuf -pthread -lpthread -L/home/sam/opt/standalone_tf//lib/ -Wl,-R/home/sam/opt/standalone_tf//lib/ '-Wl,-R$ORIGIN' -ltensorflow_cc -ltensorflow_framework -lrt
[sam@localhost standalone_tf]$ make run
./main --image=./data/grace_hopper.jpg --graph=./data/inception_v3_2016_08_28_frozen.pb --labels=./data/imagenet_slim_labels.txt
2019-01-05 07:26:49.172451: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2
2019-01-05 07:26:49.804743: I main.cc:250] military uniform (653): 0.834307
2019-01-05 07:26:49.804781: I main.cc:250] mortarboard (668): 0.0218693
2019-01-05 07:26:49.804791: I main.cc:250] academic gown (401): 0.010358
2019-01-05 07:26:49.804799: I main.cc:250] pickelhaube (716): 0.00800808
2019-01-05 07:26:49.804807: I main.cc:250] bulletproof vest (466): 0.00535084

Кажется, я потерял некоторые настройки из-за содержимогофайлы заголовка tenorflow при переносе системы сборки из старой коробки на виртуальной машине, которая у меня еще есть, в новое решение CUDA HW.

Сейчас я попытаюсь собрать пример в песочнице в надежде, что он перенесетнекоторые новые знания в отношении существующего пакета для развертывания.

Просто для того, чтобы вы знали, что это прототип для развертываемого пакета, и причина, по которой я трачу время на CentOS 6.x, заключается в том, что мне нужен продукт, чтобысовместим с glibc 2.12, если есть шдайте мне знать.

1 Ответ

0 голосов
/ 09 января 2019

Это было причиной

auto detectionsMap = outputs[0].tensor<int64_t, 3>();

, тогда как это работало

auto detectionsMap = outputs[0].tensor<int64, 3>();

Это было сделано так, потому что именно так сказал мне тензорная доска, забавно, что она работала хорошо вВМ, но не на реальном HW.

Странно, а?

...