Итак, у меня успешно была версия 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, если есть шдайте мне знать.