TensorFlow for C / tensorflow.so / static linking from Go

Hello everyone:

While trying to compile our app (see demo.photoprism.org), we found out that there is no tensorflow.so library to link against even though we installed TensorFlow as recommended in the howto / docs on this site (via pip).

When trying to compile it on our own (which takes several hours), we found out that the compilers, that are currently available for the pre-installed version of Ubuntu (18.04), have a bug that prevents us from successfully compiling TensorFlow, see

https://github.com/photoprism/photoprism/issues/83#issuecomment-503675938

Do you have any idea where we can download / find the missing tensorflow.so file, so that we can use TensorFlow with Go? We only found tensorflow_framework.so and that wasn’t even in the standard lib directory.

Thank you very much for any advice!
Michael

Hi michael5ltw3,

It seems that other users are able to compile TensorFlow from source, please check if below thread can help:
https://devtalk.nvidia.com/default/topic/1055131/jetson-agx-xavier/building-tensorflow-1-13-on-jetson-xavier/

Thanks

Thank you!

Note that Bazel currently can’t build static libs. Building Bazel itself may take several hours, been through this. I’m trying to compile with GCC 5 using make now. Still running.

NVIDIA should really provide a working TensorFlow lib with their base software as compiling it is not only very difficult but also takes a VERY long time, especially on a Jetson Nano. We are talking about days I already invested in this and I just wanted to quickly compile our open-source app, for which I’m not getting paid in any way. Just to raise the awareness.

Compiling with GCC 5.5.0 failed too:

Maybe it’s the way we pass the -D_GLIBCXX_USE_CXX11_ABI=0 flag although TensorFlow developers said, it is not related. GCC 7 seems to be right compiler, except that it has a bug. TensorFlow 1.12 apparently compiles, but it would be great to be able to use the latest version… maybe we’re too pedantic and should build our software on a pile of workarounds. Maybe disable GPU support and use it otherwise as an expensive heater.

It feels I can easily spend the rest of the month figuring this out.

Would cross compiling on a MacBook work if we need native GPU / Jetson Nano support? Do we need to downgrade our compiler version even further? There are just too many variables. Maybe we need to compile our own compiler, apparently takes ~6 hours. That’s what a Chinese developer did and now it works for him. Not sure if this is the developer experience NVIDIA wants.

Bazel and the latest libtensorflow with full GPU support for the Jetson Nano are now available for download at

https://dl.photoprism.org/tensorflow/

The TX and AGX probably need slightly different settings. Let me know if I can help.

Compiling took 12 hours. GCC 4.8 is the only compiler that works reliably. There are other dependencies like Java and Python required in specific versions. Also you need to modify tensorflow, environment variables and the build config manually. We’ll publish more details soon.

@michael5ltw3, can you provide any more details on your successful Tensorflow build setup? I would like to build Tensorflow 1.15.0 on a Jetson Nano 2GB (running JetPack 4.4) but have been unable to do so thus far. I would agree with your original sentiment that Nvidia should just provide the C libraries and save everyone the trouble of trying to build from source (much like they do with the Python whl packages).