【问题标题】:Adding custom TensorFlow OP添加自定义 TensorFlow OP
【发布时间】:2021-04-12 10:10:00
【问题描述】:

我正在尝试使用 ronghanghu 的紧凑型双线性池的 Tensorflow 实现,因为它已在 “Learning Rich Features for Image Manipulation Detection” 论文的 implementation 中使用。 ronghanghu 使用 TensorFlow 版本 1.12.0 和 CUDA 8.0 和 g++ 5.4.0 来构建 sequential_batch_fft.so。但是,他们确实说我们可以使用不同版本的 Tensorflow(在我的例子中是 2.4.0)、不同的编译器(g++ 7.5.0)和不同的 CUDA 版本(11.0)来重建 sequential_batch_fft.so。当我尝试使用下面compile.sh 中的命令构建sequential_batch_fft.so

TF_INC=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_include())')
TF_LIB=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())')

# Use 0 if the TensorFlow binary is built with GCC 4.x
# see https://docs.computecanada.ca/wiki/GCC_C%2B%2B_Dual_ABI for details
USE_CXX11_ABI=0

nvcc -std=c++11 -c -o sequential_batch_fft_kernel.cu.o \
sequential_batch_fft_kernel.cu.cc \
-D_GLIBCXX_USE_CXX11_ABI=$USE_CXX11_ABI -DNDEBUG \
-L$TF_LIB -ltensorflow_framework \
-I $TF_INC -D GOOGLE_CUDA=1 -x cu -Xcompiler -fPIC

g++ -std=c++11 -shared -o ./build/sequential_batch_fft.so \
sequential_batch_fft_kernel.cu.o \
sequential_batch_fft.cc \
-D_GLIBCXX_USE_CXX11_ABI=$USE_CXX11_ABI -DNDEBUG \
-L$TF_LIB -ltensorflow_framework \
-I $TF_INC -fPIC \
-lcudart -lcufft -L/usr/local/cuda/lib64

rm -rf sequential_batch_fft_kernel.cu.o

我在终端中得到的唯一输出是这个。

问题是除此之外没有其他事情发生。没有报告错误,也不会结束构建。离开它几个小时,仍然没有。我完全不知道为什么会这样。后来我决定尝试在adding_an_op 上做 TensorFlow 提供的示例之一,我得到了相同的结果。这里可能是什么问题?这对我来说真的很困惑,因为没有错误只是一个永无止境的程序。

【问题讨论】:

    标签: c++ tensorflow ubuntu cuda nvcc


    【解决方案1】:

    原来问题出在 tensorflow_framework.so 上。能够通过在 ../site-packages/tensorflow 中创建符号链接 ln -s libtensorflow_framework.so.2 libtensorflow_framework.so 来解决此问题。另外,我认为我的项目路径不合适,因为它包含空格。不太确定这个,但是当我使用安装在没有空格的路径上的 TensorFlow 时,一切正常。

    【讨论】:

      猜你喜欢
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-11
      • 2018-06-11
      • 2020-06-08
      • 1970-01-01
      相关资源
      最近更新 更多