華為云鯤鵬服務器上的部署tensorflow c++ api

      網友投稿 1322 2025-04-01

      本文介紹鯤鵬服務器安裝Tensorflow的c++庫。


      1?????? 安裝準備

      華為云購買一臺鯤鵬服務器

      本文以云服務器KC1實例搭建,云服務器配置如表1-1所示。

      表1-1?云服務器配置

      項目

      說明

      規格

      kc1.large.2 | 8vCPUs ? | 16GB

      磁盤

      系統盤:高IO(40GB)

      操作系統要求如表1-2所示。

      表1-2?操作系統要求

      項目

      說明

      -

      CentOS

      18.04

      在公共鏡像中已提供。

      Kernel

      4.15.0

      在公共鏡像中已提供。

      2?????? 配置編譯環境

      1)????? 安裝依賴包。

      apt-get?install?autoconf?automake?libtool?curl?make?g++?unzip??#?Protobuf?Dependencies apt-get?install?zlib1g-dev?zlib1g?python3-numpy?python3-pip?zip?python-numpy?swig?python-dev?python-wheel?python3-h5py?#TensorFlow?Dependencies

      2)????? JDK

      apt-get --purge remove openjdk-8-jdk openjdk-8-jdk-headless openjdk-8-jre openjdk-8-jre-headless -y

      cd /usr/local/src

      wget https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-arm64-vfp-hflt.tar.gz

      tar -zxvf jdk-8u151-linux-arm64-vfp-hflt.tar.gz

      vim /etc/profile

      source /etc/profile

      3)????? 安裝Bazel

      bazel是Google開源的一套編譯構建工具,廣泛應用于Google內部,包括TensorFlow項目。通過源碼安裝Tnesorflow需要使用bazel來編譯。bazel主要有構建快、支持增量編譯。對依賴關系進行優化支持并發執行。

      a)?????? 下載Bazel源碼包

      cd?/home/ wget?https://github.com/bazelbuild/bazel/releases/download/0.21.0/bazel-0.21.0-dist.zip

      b)?????? 編譯和安裝Bazel

      mkdir?bazel cd?bazel unzip?../bazel-0.21.0-dist.zip ./compile.sh

      c)?????? 配置Bazel 環境變量

      vi?/etc/profile

      增加如下命令,/home/bazel/output即Bazel可執行程序所在目錄

      export?PATH=$PATH:/home/bazel/output

      使得環境變量生效

      source?/etc/profile

      d)?????? 檢驗Bazel是否安裝成功

      bazel?info

      3?????? 獲取源碼

      cd?/home/ wget?https://github.com/tensorflow/tensorflow/archive/v1.13.1.tar.gz

      4?????? 編譯Tensorflow

      4)????? 解壓軟件包。

      tar?-zxvf?tensorflow-1.13.1.tar.gz cd?tensorflow-1.13.1/

      5)????? 配置Tensorflow

      root@ecs-tensorflow:/home/tensorflow-1.13.1# ./configure

      Extracting?Bazel?installation...

      WARNING:?--batch?mode?is?deprecated.?Please?instead?explicitly?shut?down?your?Bazel?server?using?the?command?"bazel?shutdown"

      INFO:?Invocation?ID:?85323fa4-fb98-4bfb-b72f-9819dd1c7bb2

      You?have?bazel?0.21.0-?(@non-git)?installed.

      Please?specify?the?location?of?python.?[Default?is?/usr/bin/python]:?/usr/bin/python3

      Found?possible?Python?library?paths:

      /usr/lib/python3/dist-packages

      /usr/local/lib/python3.6/dist-packages

      Please?input?the?desired?Python?library?path?to?use.??Default?is?[/usr/lib/python3/dist-packages]

      Do?you?wish?to?build?TensorFlow?with?XLA?JIT?support??[Y/n]:?n

      No?XLA?JIT?support?will?be?enabled?for?TensorFlow.

      Do?you?wish?to?build?TensorFlow?with?OpenCL?SYCL?support??[y/N]:?N

      No?OpenCL?SYCL?support?will?be?enabled?for?TensorFlow.

      Do?you?wish?to?build?TensorFlow?with?ROCm?support??[y/N]:

      No?ROCm?support?will?be?enabled?for?TensorFlow.

      Do?you?wish?to?build?TensorFlow?with?CUDA?support??[y/N]:?N

      No?CUDA?support?will?be?enabled?for?TensorFlow.

      Do?you?wish?to?download?a?fresh?release?of?clang??(Experimental)?[y/N]:?N

      Clang?will?not?be?downloaded.

      Do?you?wish?to?build?TensorFlow?with?MPI?support??[y/N]:?N

      No?MPI?support?will?be?enabled?for?TensorFlow.

      Please?specify?optimization?flags?to?use?during?compilation?when?bazel?option?"--config=opt"?is?specified?[Default?is?-march=

      native?-Wno-sign-compare]:

      Would?you?like?to?interactively?configure?./WORKSPACE?for?Android?builds??[y/N]:?N

      Not?configuring?the?WORKSPACE?for?Android?builds.

      6)????? 安裝clang

      cd?/home/tensorflow-1.13.1/ apt-get?install?clang-8?clang-8++

      在華為云鯤鵬服務器上的部署tensorflow c++ api

      由于gcc 自身與Tnesorflow兼容性問題,導致gcc無法編譯tensorflow 1.13.1,所以考慮采用clang來編譯。

      備注:Clang 采用的是 BSD 協議的許可證,而 GCC 采用的是 GPL 協議,前者更為寬松;Clang 是一個高度模塊化開發的輕量級編譯器,編譯速度快、占用內存小、有著友好的出錯提示。

      7)????? 編譯Tensorflow

      設置Clang環境變量

      export?CXX=clang++-8 export?CC=clang-8

      編譯Tensorflow命令如下:

      bazel?build?--config=noaws?//tensorflow/tools/pip_package:build_pip_package?--verbose_failures?--copt=-funsafe-math-optimizations?--copt=-march=armv8-a?--copt=-mtune=cortex-a53

      5?????? 編譯Tensorflow c++ api

      1)????? 安裝依賴

      ./tensorflow/contrib/makefile/build_all_linux.sh

      2)????? 編譯生成tensorflow:libtensorflow_cc.so

      --如果會使用到OpenCV,編譯命令需要加入--config=monolithic,本例加入此參數命令。

      --加入--config=noaws以解決如下此類錯誤

      undefined reference to 'Aws::Environment::GetEnv[abi:cxx11](char const*)'

      bazel build tensorflow:libtensorflow_cc.so --config=monolithic --config=noaws

      3)????? 拷貝安裝

      a)?????? 拷貝庫

      cp bazel-bin/tensorflow/libtensorflow_cc.so /usr/local/lib

      cp bazel-bin/tensorflow/libtensorflow_framework.so /usr/local/lib

      b)?????? 復制源文件到 /usr/local/include/google

      mkdir -p /usr/local/include/google/tensorflow

      cp -r tensorflow /usr/local/include/google/tensorflow/

      find /usr/local/include/google/tensorflow/tensorflow -type f? ! -name "*.h" -delete

      c)?????? 復制bazel-genfiles文件夾中所有生成的文件:

      cp bazel-genfiles/tensorflow/core/framework/*.h? /usr/local/include/google/tensorflow/tensorflow/core/framework

      cp bazel-genfiles/tensorflow/core/lib/core/*.h? /usr/local/include/google/tensorflow/tensorflow/core/lib/core

      cp bazel-genfiles/tensorflow/core/protobuf/*.h? /usr/local/include/google/tensorflow/tensorflow/core/protobuf

      cp bazel-genfiles/tensorflow/core/util/*.h? /usr/local/include/google/tensorflow/tensorflow/core/util

      cp bazel-genfiles/tensorflow/cc/ops/*.h? /usr/local/include/google/tensorflow/tensorflow/cc/ops

      d)?????? 復制 third_party 文件夾:

      cp -r third_party /usr/local/include/google/tensorflow/

      rm -r /usr/local/include/google/tensorflow/third_party/py

      4)????? 配置環境變量

      考慮到安裝過程中,即上一步驟復制相應的頭文件到安裝目錄不全,將/home/tensorflow-1.13.1也加入環境變量中。

      vim /etc/profile

      source /etc/profile

      6?????? 運行和驗證

      1)????? 編輯例子。

      Cd /home

      vi test.c

      內容如下:

      #include "tensorflow/cc/client/client_session.h"

      #include "tensorflow/cc/ops/standard_ops.h"

      #include "tensorflow/core/framework/tensor.h"

      int main()

      {

      using namespace tensorflow;

      using namespace tensorflow::ops;

      Scope root = Scope::NewRootScope();

      // Matrix A = [3 2; -1 0]

      auto A = Const(root, { {3.f, 2.f}, {-1.f, 0.f} });

      // Vector b = [3 5]

      auto b = Const(root, { {3.f, 5.f} });

      // v = Ab^T

      auto v = MatMul(root.WithOpName("v"), A, b, MatMul::TransposeB(true));

      std::vector outputs;

      ClientSession session(root);

      // Run and fetch v

      TF_CHECK_OK(session.Run({v}, &outputs));

      // Expect outputs[0] == [19; -3]

      LOG(INFO) << outputs[0].matrix();

      return 0;

      }

      2)????? 編譯運行

      g++ test.c –ltensorflow_cc -ltensorflow_framework

      ./a.out

      3)????? 如果編譯報如下錯誤,則參考此步驟解決。

      錯誤:fatal error: unsupported/Eigen/CXX11/Tensor: No such file or directory

      解決:安裝eigen

      cd?/usr/local/src wget?https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz tar?-zxvf?eigen-3.3.7.tar.gz cd?eigen-3.3.7 mkdir?build cd?build cmake?.. make?-j12?&&?make?install

      TensorFlow

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel制作考勤表的方法步驟詳解(考勤表表格的制作方法初學者)
      下一篇:通過聘請經驗豐富的ERP供應商來避免災難
      相關文章
      亚洲精品国产第一综合99久久| 91亚洲导航深夜福利| 亚洲avav天堂av在线网爱情| 久久国产亚洲观看| 亚洲国产精品无码一线岛国| 中文字幕亚洲图片| 国产亚洲精品不卡在线| 亚洲区不卡顿区在线观看| 精品久久久久久亚洲中文字幕| 国产精品亚洲专区无码WEB| 久久亚洲中文字幕无码| 亚洲精品国产av成拍色拍| 亚洲另类自拍丝袜第五页| 亚洲国产精品自在自线观看| 亚洲日韩AV无码一区二区三区人| 国产亚洲sss在线播放| 国产成人亚洲综合网站不卡| 亚洲欧洲无码一区二区三区| 亚洲精品宾馆在线精品酒店| 国产AV无码专区亚洲AV麻豆丫| 色偷偷亚洲第一综合网| 亚洲国产成人久久综合野外| 亚洲一区日韩高清中文字幕亚洲| ZZIJZZIJ亚洲日本少妇JIZJIZ| 国产亚洲一区二区三区在线不卡| 亚洲一区二区三区偷拍女厕| 久久夜色精品国产亚洲| 亚洲日本一区二区| 亚洲国产美女视频| 亚洲人成人网毛片在线播放| 亚洲成AV人影片在线观看| 青青青亚洲精品国产| 久久亚洲av无码精品浪潮| 亚洲国产精品va在线播放| 亚洲香蕉免费有线视频| 亚洲国产成人精品激情| 亚洲av永久无码天堂网| av在线亚洲欧洲日产一区二区| 亚洲精品无码av人在线观看| 亚洲视频在线一区| 国产成人亚洲精品|