Tensorflow JNI development
Note
← Older revision Revision as of 17:48, 1 April 2020 (3 intermediate revisions by the same user not shown)Line 28: Line 28: ==<font color='blue'>Build</font>== ==<font color='blue'>Build</font>== +===Note=== +* <font color='red'>While running bazel ate all RAM (have 16GB) a few times and PC "hanged". To limit bazel's appetites try:</font> + <font size=2>~$ bazel build --jobs 4 --local_ram_resources=4096 ... + ~$ bazel test --jobs 4 --local_ram_resources=4096 ... + # I think that '''local_ram_resources''' is MBs per thread (have 8): + ~$ bazel build --local_ram_resources=2048 ... + ~$ bazel test --local_ram_resources=2048 ...</font> + ===Quick=== ===Quick=== ~/git/tensorflow-1.15.0/mvn_build.sh: ~/git/tensorflow-1.15.0/mvn_build.sh: Oleg03/31/20 [imagej-elphel][lwir] by AndreyFilippov: Using Marco's help to make jcuda work with nvrtc with cdp
AndreyFilippov committed changes to the Elphel git project :
Using Marco's help to make jcuda work with nvrtc with cdp
Using Marco's help to make jcuda work with nvrtc with cdp
03/27/20 [imagej-elphel][lwir] by AndreyFilippov: debugging texture generation in GPU, fixed old NaN bug, similar to noticed in the GPU code
AndreyFilippov committed changes to the Elphel git project :
debugging texture generation in GPU, fixed old NaN bug, similar to noticed in the GPU code
debugging texture generation in GPU, fixed old NaN bug, similar to noticed in the GPU code
Elphel on SourceForge
← Older revision
Revision as of 23:36, 17 March 2020
Line 1:
Line 1:
+{{Legacy}}
+'''Elphel currently uses git repository at https://git.elphel.com, mirrored at https://github.com/Elphel'''
+
+
= Releases description on Elphel's SourceForge project= = Releases description on Elphel's SourceForge project=
Andrey.filippov
Tensorflow JNI development
Build
← Older revision Revision as of 23:43, 13 March 2020 (4 intermediate revisions by the same user not shown)Line 28: Line 28: ==<font color='blue'>Build</font>== ==<font color='blue'>Build</font>== +===Quick=== +~/git/tensorflow-1.15.0/mvn_build.sh: + <font size=2># Step 1 (Java): + + bazel build -c opt //tensorflow/java:tensorflow //tensorflow/java:libtensorflow_jni //tensorflow/java:pom + mvn install:install-file -Dfile=bazel-bin/tensorflow/java/libtensorflow.jar -DpomFile=bazel-bin/tensorflow/java/pom.xml + + # Step 2 (JNI): + + bazel build -c opt //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz + + rm -rf bazel-bin/tensorflow/tools/lib_package/maven + mkdir -p bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64 + + POM=" + <project> + <modelVersion>4.0.0</modelVersion> + <description>Platform-dependent native code for the TensorFlow Java library. CUDA support depends on the local build.</description> + <groupId>org.tensorflow</groupId> + <artifactId>libtensorflow_jni_gpu</artifactId> + <version>1.15.0</version> + <packaging>jar</packaging> + <build> + <resources> + <resource> + <directory>.</directory> + <excludes> + <exclude>target/**</exclude> + </excludes> + </resource> + </resources> + </build> + </project> + " + + echo $POM > bazel-bin/tensorflow/tools/lib_package/maven/pom.xml + + tar -zxvf bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz -C bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64 + cd bazel-bin/tensorflow/tools/lib_package/maven + mvn package + mvn install + cd ../../../../.. + +===Detailed=== + <font size=2>cd ~/git/tensorflow-1.15.0 <font size=2>cd ~/git/tensorflow-1.15.0 ./configure # do not forget CUDA ./configure # do not forget CUDA Line 76: Line 121: Note: '''libtensorflow_jni_gpu''' - name can be any - just make sure you use it in your project's pom.xml. Note: '''libtensorflow_jni_gpu''' - name can be any - just make sure you use it in your project's pom.xml. Next: Next: − <font size=2>mvn package+ <font size=2>cd bazel-bin/tensorflow/tools/lib_package/maven − mvn install</font>+ mvn package + mvn install + cd ../../../../.. +</font> ==<font color='blue'>Install JAR to local Maven Repository</font>== ==<font color='blue'>Install JAR to local Maven Repository</font>== OlegTensorflow JNI development
Build
← Older revision Revision as of 23:43, 13 March 2020 (5 intermediate revisions by the same user not shown)Line 18: Line 18: * '''Create Elipse project''' * '''Create Elipse project''' −There's [https://github.com/bytedeco/javacpp-presets JavaCPP Presets] project. Seems useless.+There's [https://github.com/bytedeco/javacpp-presets JavaCPP Presets] project. <s>Seems useless</s>. Seems useful. ==<font color='blue'>Install</font>== ==<font color='blue'>Install</font>== Line 28: Line 28: ==<font color='blue'>Build</font>== ==<font color='blue'>Build</font>== +===Quick=== +~/git/tensorflow-1.15.0/mvn_build.sh: + <font size=2># Step 1 (Java): + + bazel build -c opt //tensorflow/java:tensorflow //tensorflow/java:libtensorflow_jni //tensorflow/java:pom + mvn install:install-file -Dfile=bazel-bin/tensorflow/java/libtensorflow.jar -DpomFile=bazel-bin/tensorflow/java/pom.xml + + # Step 2 (JNI): + + bazel build -c opt //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz + + rm -rf bazel-bin/tensorflow/tools/lib_package/maven + mkdir -p bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64 + + POM=" + <project> + <modelVersion>4.0.0</modelVersion> + <description>Platform-dependent native code for the TensorFlow Java library. CUDA support depends on the local build.</description> + <groupId>org.tensorflow</groupId> + <artifactId>libtensorflow_jni_gpu</artifactId> + <version>1.15.0</version> + <packaging>jar</packaging> + <build> + <resources> + <resource> + <directory>.</directory> + <excludes> + <exclude>target/**</exclude> + </excludes> + </resource> + </resources> + </build> + </project> + " + + echo $POM > bazel-bin/tensorflow/tools/lib_package/maven/pom.xml + + tar -zxvf bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz -C bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64 + cd bazel-bin/tensorflow/tools/lib_package/maven + mvn package + mvn install + cd ../../../../.. + +===Detailed=== + <font size=2>cd ~/git/tensorflow-1.15.0 <font size=2>cd ~/git/tensorflow-1.15.0 ./configure # do not forget CUDA ./configure # do not forget CUDA Line 76: Line 121: Note: '''libtensorflow_jni_gpu''' - name can be any - just make sure you use it in your project's pom.xml. Note: '''libtensorflow_jni_gpu''' - name can be any - just make sure you use it in your project's pom.xml. Next: Next: − <font size=2>mvn package+ <font size=2>cd bazel-bin/tensorflow/tools/lib_package/maven − mvn install</font>+ mvn package + mvn install + cd ../../../../.. +</font> ==<font color='blue'>Install JAR to local Maven Repository</font>== ==<font color='blue'>Install JAR to local Maven Repository</font>== OlegTensorflow JNI development
Build
← Older revision Revision as of 23:43, 13 March 2020 (19 intermediate revisions by the same user not shown)Line 18: Line 18: * '''Create Elipse project''' * '''Create Elipse project''' −There's [https://github.com/bytedeco/javacpp-presets JavaCPP Presets] project. Seems useless.+There's [https://github.com/bytedeco/javacpp-presets JavaCPP Presets] project. <s>Seems useless</s>. Seems useful. ==<font color='blue'>Install</font>== ==<font color='blue'>Install</font>== Line 28: Line 28: ==<font color='blue'>Build</font>== ==<font color='blue'>Build</font>== +===Quick=== +~/git/tensorflow-1.15.0/mvn_build.sh: + <font size=2># Step 1 (Java): + + bazel build -c opt //tensorflow/java:tensorflow //tensorflow/java:libtensorflow_jni //tensorflow/java:pom + mvn install:install-file -Dfile=bazel-bin/tensorflow/java/libtensorflow.jar -DpomFile=bazel-bin/tensorflow/java/pom.xml + + # Step 2 (JNI): + + bazel build -c opt //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz + + rm -rf bazel-bin/tensorflow/tools/lib_package/maven + mkdir -p bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64 + + POM=" + <project> + <modelVersion>4.0.0</modelVersion> + <description>Platform-dependent native code for the TensorFlow Java library. CUDA support depends on the local build.</description> + <groupId>org.tensorflow</groupId> + <artifactId>libtensorflow_jni_gpu</artifactId> + <version>1.15.0</version> + <packaging>jar</packaging> + <build> + <resources> + <resource> + <directory>.</directory> + <excludes> + <exclude>target/**</exclude> + </excludes> + </resource> + </resources> + </build> + </project> + " + + echo $POM > bazel-bin/tensorflow/tools/lib_package/maven/pom.xml + + tar -zxvf bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz -C bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64 + cd bazel-bin/tensorflow/tools/lib_package/maven + mvn package + mvn install + cd ../../../../.. + +===Detailed=== + <font size=2>cd ~/git/tensorflow-1.15.0 <font size=2>cd ~/git/tensorflow-1.15.0 ./configure # do not forget CUDA ./configure # do not forget CUDA Line 43: Line 88: * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. −* '''so''' will have to be in the library path. Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...". Example:+* '''so''' will have to be in the library path (alternatively see [[Tensorflow_JNI_development#Build_so_package|'''Build so package''']] a little below and skip this linking). Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...". + +===[option 1] Link so library=== <font size=2># /usr/lib is in the default java.library.path <font size=2># /usr/lib is in the default java.library.path sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font> sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font> + +=== preferred [option 2] Build so package=== + <font size=2>bazel build -c opt //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz</font> +It puts all libs into a single archive. +Now to create a JAR to replace [https://mvnrepository.com/artifact/org.tensorflow/libtensorflow_jni_gpu libtensorflow_jni_gpu], do this: + <font size=2>mkdir -p bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64 + tar -zxvf bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz -C bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64</font> +Next create a pom.xml in ''bazel-bin/tensorflow/tools/lib_package/maven'': + <font size=2><project> + <modelVersion>4.0.0</modelVersion> + <description>Platform-dependent native code for the TensorFlow Java library. CUDA support depends on the local build.</description> + <groupId>org.tensorflow</groupId> + <artifactId>'''libtensorflow_jni_gpu'''</artifactId> + <version>1.15.0</version> + <packaging>jar</packaging> + <build> + <resources> + <resource> + <directory>.</directory> + <excludes> + <exclude>target/**</exclude> + </excludes> + </resource> + </resources> + </build> + </project></font> +Note: '''libtensorflow_jni_gpu''' - name can be any - just make sure you use it in your project's pom.xml. +Next: + <font size=2>cd bazel-bin/tensorflow/tools/lib_package/maven + mvn package + mvn install + cd ../../../../.. +</font> ==<font color='blue'>Install JAR to local Maven Repository</font>== ==<font color='blue'>Install JAR to local Maven Repository</font>== Line 52: Line 132: How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' −<font color=green size='4'>After '''*_jni.so''' is linked and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font>+<font color=green size='4'>After '''*_jni.so''' is linked (or '''jar''''d) and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font> ==<font color='blue'>Modify TF JNI functions</font>== ==<font color='blue'>Modify TF JNI functions</font>== OlegTensorflow JNI development
← Older revision
Revision as of 21:44, 13 March 2020
(18 intermediate revisions by the same user not shown)Line 18:
Line 18:
* '''Create Elipse project''' * '''Create Elipse project'''
−There's [https://github.com/bytedeco/javacpp-presets JavaCPP Presets] project. Seems useless.+There's [https://github.com/bytedeco/javacpp-presets JavaCPP Presets] project. <s>Seems useless</s>. Seems useful.
==<font color='blue'>Install</font>== ==<font color='blue'>Install</font>==
Line 43:
Line 43:
* '''xml''' and '''jar''' will be taken care of by '''mvn''' command. * '''xml''' and '''jar''' will be taken care of by '''mvn''' command.
−* '''so''' will have to be in the library path. Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...". Example:+* '''so''' will have to be in the library path (alternatively see [[Tensorflow_JNI_development#Build_so_package|'''Build so package''']] a little below and skip this linking). Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...".
+
+===[option 1] Link so library===
<font size=2># /usr/lib is in the default java.library.path <font size=2># /usr/lib is in the default java.library.path
sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font> sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font>
+
+=== preferred [option 2] Build so package===
+ <font size=2>bazel build -c opt //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz</font>
+It puts all libs into a single archive.
+Now to create a JAR to replace [https://mvnrepository.com/artifact/org.tensorflow/libtensorflow_jni_gpu libtensorflow_jni_gpu], do this:
+ <font size=2>mkdir -p bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64
+ tar -zxvf bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz -C bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64</font>
+Next create a pom.xml in ''bazel-bin/tensorflow/tools/lib_package/maven'':
+ <font size=2><project>
+ <modelVersion>4.0.0</modelVersion>
+ <description>Platform-dependent native code for the TensorFlow Java library. CUDA support depends on the local build.</description>
+ <groupId>org.tensorflow</groupId>
+ <artifactId>'''libtensorflow_jni_gpu'''</artifactId>
+ <version>1.15.0</version>
+ <packaging>jar</packaging>
+ <build>
+ <resources>
+ <resource>
+ <directory>.</directory>
+ <excludes>
+ <exclude>target/**</exclude>
+ </excludes>
+ </resource>
+ </resources>
+ </build>
+ </project></font>
+Note: '''libtensorflow_jni_gpu''' - name can be any - just make sure you use it in your project's pom.xml.
+Next:
+ <font size=2>cd bazel-bin/tensorflow/tools/lib_package/maven
+ mvn package
+ mvn install
+ cd ../../../../..
+</font>
==<font color='blue'>Install JAR to local Maven Repository</font>== ==<font color='blue'>Install JAR to local Maven Repository</font>==
Line 52:
Line 87:
How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow'''
−<font color=green size='4'>After '''*_jni.so''' is linked and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font>+<font color=green size='4'>After '''*_jni.so''' is linked (or '''jar''''d) and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font>
==<font color='blue'>Modify TF JNI functions</font>== ==<font color='blue'>Modify TF JNI functions</font>==
Oleg
Tensorflow JNI development
preferred [option 2] Build so package
← Older revision Revision as of 21:33, 13 March 2020 (16 intermediate revisions by the same user not shown)Line 18: Line 18: * '''Create Elipse project''' * '''Create Elipse project''' −There's [https://github.com/bytedeco/javacpp-presets JavaCPP Presets] project. Seems useless.+There's [https://github.com/bytedeco/javacpp-presets JavaCPP Presets] project. <s>Seems useless</s>. Seems useful. ==<font color='blue'>Install</font>== ==<font color='blue'>Install</font>== Line 43: Line 43: * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. −* '''so''' will have to be in the library path. Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...". Example:+* '''so''' will have to be in the library path (alternatively see [[Tensorflow_JNI_development#Build_so_package|'''Build so package''']] a little below and skip this linking). Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...". + +===[option 1] Link so library=== <font size=2># /usr/lib is in the default java.library.path <font size=2># /usr/lib is in the default java.library.path sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font> sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font> + +=== preferred [option 2] Build so package=== + <font size=2>bazel build -c opt //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz</font> +It puts all libs into a single archive. +Now to create a JAR to replace [https://mvnrepository.com/artifact/org.tensorflow/libtensorflow_jni_gpu libtensorflow_jni_gpu], do this: + <font size=2>mkdir -p bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64 + tar -zxvf bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz -C bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64</font> +Next create a pom.xml in ''bazel-bin/tensorflow/tools/lib_package/maven'': + <font size=2><project> + <modelVersion>4.0.0</modelVersion> + <description>Platform-dependent native code for the TensorFlow Java library. CUDA support depends on the local build.</description> + <groupId>org.tensorflow</groupId> + <artifactId>'''libtensorflow_jni_gpu'''</artifactId> + <version>1.15.0</version> + <packaging>jar</packaging> + <build> + <resources> + <resource> + <directory>.</directory> + <excludes> + <exclude>target/**</exclude> + </excludes> + </resource> + </resources> + </build> + </project></font> +Note: '''libtensorflow_jni_gpu''' - name can be any - just make sure you use it in your project's pom.xml. +Next: + <font size=2>cd bazel-bin/tensorflow/tools/lib_package/maven + mvn package + mvn install + cd ../../../../.. +</font> ==<font color='blue'>Install JAR to local Maven Repository</font>== ==<font color='blue'>Install JAR to local Maven Repository</font>== Line 52: Line 87: How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' −<font color=green size='4'>After '''*_jni.so''' is linked and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font>+<font color=green size='4'>After '''*_jni.so''' is linked (or '''jar''''d) and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font> ==<font color='blue'>Modify TF JNI functions</font>== ==<font color='blue'>Modify TF JNI functions</font>== Oleg03/12/20 [imagej-elphel][lwir] by AndreyFilippov: updated gpu kernel
AndreyFilippov committed changes to the Elphel git project :
updated gpu kernel
updated gpu kernel
03/11/20 [imagej-elphel][lwir] by AndreyFilippov: Added RB correlation LPF
AndreyFilippov committed changes to the Elphel git project :
Added RB correlation LPF
Added RB correlation LPF
03/11/20 [imagej-elphel][lwir] by AndreyFilippov: removed extra debug
AndreyFilippov committed changes to the Elphel git project :
removed extra debug
removed extra debug
03/11/20 [imagej-elphel][lwir] by AndreyFilippov: Added variable-size 2D correlation output
AndreyFilippov committed changes to the Elphel git project :
Added variable-size 2D correlation output
Added variable-size 2D correlation output
Tensorflow JNI development
About
← Older revision Revision as of 23:57, 10 March 2020 (14 intermediate revisions by the same user not shown)Line 18: Line 18: * '''Create Elipse project''' * '''Create Elipse project''' −There's [https://github.com/bytedeco/javacpp-presets JavaCPP Presets] project. Seems useless.+There's [https://github.com/bytedeco/javacpp-presets JavaCPP Presets] project. <s>Seems useless</s>. Seems useful. ==<font color='blue'>Install</font>== ==<font color='blue'>Install</font>== Line 43: Line 43: * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. −* '''so''' will have to be in the library path. Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...". Example:+* '''so''' will have to be in the library path (alternatively see [[Tensorflow_JNI_development#Build_so_package|'''Build so package''']] a little below and skip this linking). Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...". + +===[option 1] Link so library=== <font size=2># /usr/lib is in the default java.library.path <font size=2># /usr/lib is in the default java.library.path sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font> sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font> + +=== preferred [option 2] Build so package=== + <font size=2>bazel build -c opt //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz</font> +It puts all libs into a single archive. +Now to create a JAR to replace [https://mvnrepository.com/artifact/org.tensorflow/libtensorflow_jni_gpu libtensorflow_jni_gpu], do this: + <font size=2>mkdir -p bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64 + tar -zxvf bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz -C bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64</font> +Next create a pom.xml in ''bazel-bin/tensorflow/tools/lib_package/maven'': + <font size=2><project> + <modelVersion>4.0.0</modelVersion> + <description>Platform-dependent native code for the TensorFlow Java library. CUDA support depends on the local build.</description> + <groupId>org.tensorflow</groupId> + <artifactId>'''libtensorflow_jni_gpu'''</artifactId> + <version>1.15.0</version> + <packaging>jar</packaging> + <build> + <resources> + <resource> + <directory>.</directory> + <excludes> + <exclude>target/**</exclude> + </excludes> + </resource> + </resources> + </build> + </project></font> +Note: '''libtensorflow_jni_gpu''' - name can be any - just make sure you use it in your project's pom.xml. +Next: + <font size=2>mvn package + mvn install</font> ==<font color='blue'>Install JAR to local Maven Repository</font>== ==<font color='blue'>Install JAR to local Maven Repository</font>== Line 52: Line 84: How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' −<font color=green size='4'>After '''*_jni.so''' is linked and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font>+<font color=green size='4'>After '''*_jni.so''' is linked (or '''jar''''d) and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font> ==<font color='blue'>Modify TF JNI functions</font>== ==<font color='blue'>Modify TF JNI functions</font>== OlegTensorflow JNI development
About
← Older revision Revision as of 23:57, 10 March 2020 (31 intermediate revisions by the same user not shown)Line 1: Line 1: +==<font color='blue'>Why</font>== +Why modify TF JNI? +* Add TF features that are still missing in TF for Java like '''feeding directly from GPU memory''' thus saving time on back and forth CPU-GPU transfers if you, say, run data through a custom CUDA kernel first. + ==<font color='blue'>About</font>== ==<font color='blue'>About</font>== + +Notes on how to build TF JNI, where to modify JNI if needed, install to local maven and setup a project that will use modified native functions. Based on [https://medium.com/@maxime.durand.54/build-tennsorflow-2-0-for-java-on-windows-2ab51b9cac45 Build TensorFlow 2.0 for Java on Windows] article. Based on [https://medium.com/@maxime.durand.54/build-tennsorflow-2-0-for-java-on-windows-2ab51b9cac45 Build TensorFlow 2.0 for Java on Windows] article. Line 12: Line 18: * '''Create Elipse project''' * '''Create Elipse project''' −There's [https://github.com/bytedeco/javacpp-presets JavaCPP Presets] project. Seems useless.+There's [https://github.com/bytedeco/javacpp-presets JavaCPP Presets] project. <s>Seems useless</s>. Seems useful. ==<font color='blue'>Install</font>== ==<font color='blue'>Install</font>== Line 37: Line 43: * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. −* '''so''' will have to be in the library path - set LD_LIBRARY_PATH or PATH or go "java -Djava.library.path"+* '''so''' will have to be in the library path (alternatively see [[Tensorflow_JNI_development#Build_so_package|'''Build so package''']] a little below and skip this linking). Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...". + +===[option 1] Link so library=== + <font size=2># /usr/lib is in the default java.library.path + sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font> + +=== preferred [option 2] Build so package=== + <font size=2>bazel build -c opt //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz</font> +It puts all libs into a single archive. +Now to create a JAR to replace [https://mvnrepository.com/artifact/org.tensorflow/libtensorflow_jni_gpu libtensorflow_jni_gpu], do this: + <font size=2>mkdir -p bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64 + tar -zxvf bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz -C bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64</font> +Next create a pom.xml in ''bazel-bin/tensorflow/tools/lib_package/maven'': + <font size=2><project> + <modelVersion>4.0.0</modelVersion> + <description>Platform-dependent native code for the TensorFlow Java library. CUDA support depends on the local build.</description> + <groupId>org.tensorflow</groupId> + <artifactId>'''libtensorflow_jni_gpu'''</artifactId> + <version>1.15.0</version> + <packaging>jar</packaging> + <build> + <resources> + <resource> + <directory>.</directory> + <excludes> + <exclude>target/**</exclude> + </excludes> + </resource> + </resources> + </build> + </project></font> +Note: '''libtensorflow_jni_gpu''' - name can be any - just make sure you use it in your project's pom.xml. +Next: + <font size=2>mvn package + mvn install</font> ==<font color='blue'>Install JAR to local Maven Repository</font>== ==<font color='blue'>Install JAR to local Maven Repository</font>== Line 43: Line 83: How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' + +<font color=green size='4'>After '''*_jni.so''' is linked (or '''jar''''d) and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font> ==<font color='blue'>Modify TF JNI functions</font>== ==<font color='blue'>Modify TF JNI functions</font>== Line 77: Line 119: ... ... </project></font> </project></font> +* Write code as usual ===Basic example code=== ===Basic example code=== Line 92: Line 135: ===libtensorflow=== ===libtensorflow=== Record in pom.xml: Record in pom.xml: − <dependency>+ <font size=2><dependency> <groupId>org.tensorflow</groupId> <groupId>org.tensorflow</groupId> <artifactId>libtensorflow</artifactId> <artifactId>libtensorflow</artifactId> <version>1.15.0</version> <version>1.15.0</version> − </dependency>+ </dependency></font> Archive contains Java classes. Archive contains Java classes. Line 102: Line 145: ===libtensorflow_jni_gpu=== ===libtensorflow_jni_gpu=== Record in pom.xml: Record in pom.xml: − <dependency>+ <font size=2><dependency> <groupId>org.tensorflow</groupId> <groupId>org.tensorflow</groupId> <artifactId>libtensorflow_jni_gpu</artifactId> <artifactId>libtensorflow_jni_gpu</artifactId> − <version>1.14.0</version>+ <version>1.15.0</version> − </dependency>+ </dependency></font> Archive contains native library: Archive contains native library: Oleg03/10/20 [imagej-elphel][lwir] by AndreyFilippov: Added GPU 2D phase correlation, related and debug functionality
AndreyFilippov committed changes to the Elphel git project :
Added GPU 2D phase correlation, related and debug functionality
Added GPU 2D phase correlation, related and debug functionality
Tensorflow JNI development
preferred [option 2] Build so package
← Older revision Revision as of 23:30, 9 March 2020 (30 intermediate revisions by the same user not shown)Line 1: Line 1: +==<font color='blue'>Why</font>== +Why modify TF JNI? +* Add TF features that are still missing in TF for Java like '''feeding directly from GPU memory''' thus saving time on back and forth CPU-GPU transfers if you, say, run data through a custom CUDA kernel first. + ==<font color='blue'>About</font>== ==<font color='blue'>About</font>== + +Notes on how to build TF JNI, where to modify JNI if needed, install to local maven and setup a project that will use modified native functions. Based on [https://medium.com/@maxime.durand.54/build-tennsorflow-2-0-for-java-on-windows-2ab51b9cac45 Build TensorFlow 2.0 for Java on Windows] article. Based on [https://medium.com/@maxime.durand.54/build-tennsorflow-2-0-for-java-on-windows-2ab51b9cac45 Build TensorFlow 2.0 for Java on Windows] article. Line 37: Line 43: * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. −* '''so''' will have to be in the library path - set LD_LIBRARY_PATH or PATH or go "java -Djava.library.path"+* '''so''' will have to be in the library path (alternatively see [[Tensorflow_JNI_development#Build_so_package|'''Build so package''']] a little below and skip this linking). Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...". + +===[option 1] Link so library=== + <font size=2># /usr/lib is in the default java.library.path + sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font> + +=== preferred [option 2] Build so package=== + <font size=2>bazel build -c opt //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz</font> +It puts all libs into a single archive. +Now to create a JAR to replace [https://mvnrepository.com/artifact/org.tensorflow/libtensorflow_jni_gpu libtensorflow_jni_gpu], do this: + <font size=2>mkdir -p bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64 + tar -zxvf bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz -C bazel-bin/tensorflow/tools/lib_package/maven/org/tensorflow/native/linux-x86_64</font> +Next create a pom.xml in ''bazel-bin/tensorflow/tools/lib_package/maven'': + <font size=2><project> + <modelVersion>4.0.0</modelVersion> + <description>Platform-dependent native code for the TensorFlow Java library. CUDA support depends on the local build.</description> + <groupId>org.tensorflow</groupId> + <artifactId>'''libtensorflow_jni_gpu'''</artifactId> + <version>1.15.0</version> + <packaging>jar</packaging> + <build> + <resources> + <resource> + <directory>.</directory> + <excludes> + <exclude>target/**</exclude> + </excludes> + </resource> + </resources> + </build> + </project></font> +Note: '''libtensorflow_jni_gpu''' - name can be any - just make sure you use it in your project's pom.xml. +Next: + <font size=2>mvn package + mvn install</font> ==<font color='blue'>Install JAR to local Maven Repository</font>== ==<font color='blue'>Install JAR to local Maven Repository</font>== Line 43: Line 83: How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' + +<font color=green size='4'>After '''*_jni.so''' is linked (or '''jar''''d) and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font> ==<font color='blue'>Modify TF JNI functions</font>== ==<font color='blue'>Modify TF JNI functions</font>== Line 77: Line 119: ... ... </project></font> </project></font> +* Write code as usual ===Basic example code=== ===Basic example code=== Line 92: Line 135: ===libtensorflow=== ===libtensorflow=== Record in pom.xml: Record in pom.xml: − <dependency>+ <font size=2><dependency> <groupId>org.tensorflow</groupId> <groupId>org.tensorflow</groupId> <artifactId>libtensorflow</artifactId> <artifactId>libtensorflow</artifactId> <version>1.15.0</version> <version>1.15.0</version> − </dependency>+ </dependency></font> Archive contains Java classes. Archive contains Java classes. Line 102: Line 145: ===libtensorflow_jni_gpu=== ===libtensorflow_jni_gpu=== Record in pom.xml: Record in pom.xml: − <dependency>+ <font size=2><dependency> <groupId>org.tensorflow</groupId> <groupId>org.tensorflow</groupId> <artifactId>libtensorflow_jni_gpu</artifactId> <artifactId>libtensorflow_jni_gpu</artifactId> − <version>1.14.0</version>+ <version>1.15.0</version> − </dependency>+ </dependency></font> Archive contains native library: Archive contains native library: OlegTensorflow JNI development
preferred [option 2] Build so package
← Older revision Revision as of 21:33, 9 March 2020 (29 intermediate revisions by the same user not shown)Line 1: Line 1: +==<font color='blue'>Why</font>== +Why modify TF JNI? +* Add TF features that are still missing in TF for Java like '''feeding directly from GPU memory''' thus saving time on back and forth CPU-GPU transfers if you, say, run data through a custom CUDA kernel first. + ==<font color='blue'>About</font>== ==<font color='blue'>About</font>== + +Notes on how to build TF JNI, where to modify JNI if needed, install to local maven and setup a project that will use modified native functions. Based on [https://medium.com/@maxime.durand.54/build-tennsorflow-2-0-for-java-on-windows-2ab51b9cac45 Build TensorFlow 2.0 for Java on Windows] article. Based on [https://medium.com/@maxime.durand.54/build-tennsorflow-2-0-for-java-on-windows-2ab51b9cac45 Build TensorFlow 2.0 for Java on Windows] article. Line 37: Line 43: * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. −* '''so''' will have to be in the library path - set LD_LIBRARY_PATH or PATH or go "java -Djava.library.path"+* '''so''' will have to be in the library path (alternatively see [[Tensorflow_JNI_development#Build_so_package|'''Build so package''']] a little below and skip this linking). Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...". + +===[option 1] Link so library=== + <font size=2># /usr/lib is in the default java.library.path + sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font> + +=== preferred [option 2] Build so package=== + <font size=2>bazel build -c opt //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz</font> +It puts all libs into a single archive. +Now to create a JAR to replace [https://mvnrepository.com/artifact/org.tensorflow/libtensorflow_jni_gpu libtensorflow_jni_gpu], do this: + <font size=2>mkdir -p bazel-bin/tensorflow/tools/lib_package/maven + tar -zxvf bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz -C bazel-bin/tensorflow/tools/lib_package/maven</font> +Next create a pom.xml there (''bazel-bin/tensorflow/tools/lib_package/maven''): + <font size=2><project> + <modelVersion>4.0.0</modelVersion> + <description>Platform-dependent native code for the TensorFlow Java library. CUDA support depends on the local build.</description> + <groupId>org.tensorflow</groupId> + <artifactId>'''libtensorflow_jni_gpu'''</artifactId> + <version>1.15.0</version> + <packaging>jar</packaging> + <build> + <resources> + <resource> + <directory>.</directory> + <excludes> + <exclude>target/**</exclude> + </excludes> + </resource> + </resources> + </build> + </project></font> +Note: '''libtensorflow_jni_gpu''' - name can be any - just make sure you use it in your project's pom.xml. +Next: + <font size=2>mvn package + mvn install</font> + +I'm yet to test this but the '''libtensorflow_jni_gpu-1.15.0.jar''' at least has all the files needed. ==<font color='blue'>Install JAR to local Maven Repository</font>== ==<font color='blue'>Install JAR to local Maven Repository</font>== Line 43: Line 85: How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' + +<font color=green size='4'>After '''*_jni.so''' is linked (or '''jar''''d) and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font> ==<font color='blue'>Modify TF JNI functions</font>== ==<font color='blue'>Modify TF JNI functions</font>== Line 77: Line 121: ... ... </project></font> </project></font> +* Write code as usual ===Basic example code=== ===Basic example code=== Line 92: Line 137: ===libtensorflow=== ===libtensorflow=== Record in pom.xml: Record in pom.xml: − <dependency>+ <font size=2><dependency> <groupId>org.tensorflow</groupId> <groupId>org.tensorflow</groupId> <artifactId>libtensorflow</artifactId> <artifactId>libtensorflow</artifactId> <version>1.15.0</version> <version>1.15.0</version> − </dependency>+ </dependency></font> Archive contains Java classes. Archive contains Java classes. Line 102: Line 147: ===libtensorflow_jni_gpu=== ===libtensorflow_jni_gpu=== Record in pom.xml: Record in pom.xml: − <dependency>+ <font size=2><dependency> <groupId>org.tensorflow</groupId> <groupId>org.tensorflow</groupId> <artifactId>libtensorflow_jni_gpu</artifactId> <artifactId>libtensorflow_jni_gpu</artifactId> − <version>1.14.0</version>+ <version>1.15.0</version> − </dependency>+ </dependency></font> Archive contains native library: Archive contains native library: OlegTensorflow JNI development
Build
← Older revision Revision as of 20:54, 9 March 2020 (20 intermediate revisions by the same user not shown)Line 1: Line 1: +==<font color='blue'>Why</font>== +Why modify TF JNI? +* Add TF features that are still missing in TF for Java like '''feeding directly from GPU memory''' thus saving time on back and forth CPU-GPU transfers if you, say, run data through a custom CUDA kernel first. + ==<font color='blue'>About</font>== ==<font color='blue'>About</font>== + +Notes on how to build TF JNI, where to modify JNI if needed, install to local maven and setup a project that will use modified native functions. Based on [https://medium.com/@maxime.durand.54/build-tennsorflow-2-0-for-java-on-windows-2ab51b9cac45 Build TensorFlow 2.0 for Java on Windows] article. Based on [https://medium.com/@maxime.durand.54/build-tennsorflow-2-0-for-java-on-windows-2ab51b9cac45 Build TensorFlow 2.0 for Java on Windows] article. Line 37: Line 43: * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. −* '''so''' will have to be in the library path - set LD_LIBRARY_PATH or PATH or go "java -Djava.library.path"+* '''so''' will have to be in the library path (alternatively see [[Tensorflow_JNI_development#Build_so_package|'''Build so package''']] a little below and skip this linking). Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...". Example: + <font size=2># /usr/lib is in the default java.library.path + sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font> + +===Build so package=== + <font size=2>bazel build -c opt //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz</font> +Now to create a JAR to replace [https://mvnrepository.com/artifact/org.tensorflow/libtensorflow_jni_gpu libtensorflow_jni_gpu], do this: + <font size=2>mkdir -p bazel-bin/tensorflow/tools/lib_package/maven + tar -zxvf bazel-bin/tensorflow/tools/lib_package/libtensorflow_jni.tar.gz -C bazel-bin/tensorflow/tools/lib_package/maven</font> +Next create a pom.xml there: + <font size=2><project> + <modelVersion>4.0.0</modelVersion> + <description>Platform-dependent native code for the TensorFlow Java library. CUDA support depends on the local build.</description> + <groupId>org.tensorflow</groupId> + <artifactId>libtensorflow_jni_gpu</artifactId> + <version>1.15.0</version> + <packaging>jar</packaging> + <build> + <resources> + <resource> + <directory>.</directory> + <excludes> + <exclude>target/**</exclude> + </excludes> + </resource> + </resources> + </build> + </project></font> +Next: + <font size=2>mvn package + mvn install</font> + +I'm yet to test this but the '''libtensorflow_jni_gpu-1.15.0.jar''' at least has all the files needed. ==<font color='blue'>Install JAR to local Maven Repository</font>== ==<font color='blue'>Install JAR to local Maven Repository</font>== Line 43: Line 81: How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' + +<font color=green size='4'>After '''*_jni.so''' is linked and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font> ==<font color='blue'>Modify TF JNI functions</font>== ==<font color='blue'>Modify TF JNI functions</font>== Line 77: Line 117: ... ... </project></font> </project></font> +* Write code as usual ===Basic example code=== ===Basic example code=== Line 92: Line 133: ===libtensorflow=== ===libtensorflow=== Record in pom.xml: Record in pom.xml: − <dependency>+ <font size=2><dependency> <groupId>org.tensorflow</groupId> <groupId>org.tensorflow</groupId> <artifactId>libtensorflow</artifactId> <artifactId>libtensorflow</artifactId> <version>1.15.0</version> <version>1.15.0</version> − </dependency>+ </dependency></font> Archive contains Java classes. Archive contains Java classes. Line 102: Line 143: ===libtensorflow_jni_gpu=== ===libtensorflow_jni_gpu=== Record in pom.xml: Record in pom.xml: − <dependency>+ <font size=2><dependency> <groupId>org.tensorflow</groupId> <groupId>org.tensorflow</groupId> <artifactId>libtensorflow_jni_gpu</artifactId> <artifactId>libtensorflow_jni_gpu</artifactId> − <version>1.14.0</version>+ <version>1.15.0</version> − </dependency>+ </dependency></font> Archive contains native library: Archive contains native library: OlegTensorflow JNI development
Build so package
← Older revision Revision as of 17:00, 9 March 2020 (18 intermediate revisions by the same user not shown)Line 1: Line 1: +==<font color='blue'>Why</font>== +Why modify TF JNI? +* Add TF features that are still missing in TF for Java like '''feeding directly from GPU memory''' thus saving time on back and forth CPU-GPU transfers if you, say, run data through a custom CUDA kernel first. + ==<font color='blue'>About</font>== ==<font color='blue'>About</font>== + +Notes on how to build TF JNI, where to modify JNI if needed, install to local maven and setup a project that will use modified native functions. Based on [https://medium.com/@maxime.durand.54/build-tennsorflow-2-0-for-java-on-windows-2ab51b9cac45 Build TensorFlow 2.0 for Java on Windows] article. Based on [https://medium.com/@maxime.durand.54/build-tennsorflow-2-0-for-java-on-windows-2ab51b9cac45 Build TensorFlow 2.0 for Java on Windows] article. Line 37: Line 43: * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. * '''xml''' and '''jar''' will be taken care of by '''mvn''' command. −* '''so''' will have to be in the library path - set LD_LIBRARY_PATH or PATH or go "java -Djava.library.path"+* '''so''' will have to be in the library path. Link or copy to '''/usr/lib/''' or go with "java -Djava.library.path=...". Example: + <font size=2># /usr/lib is in the default java.library.path + sudo ln -sf ~/GIT/tensorflow-1.15.0/bazel-bin/tensorflow/java/libtensorflow_jni.so /usr/lib/</font> + +===Build so package=== + <font size=2>bazel build -c opt //tensorflow/tools/lib_package:libtensorflow_jni.tar.gz</font> ==<font color='blue'>Install JAR to local Maven Repository</font>== ==<font color='blue'>Install JAR to local Maven Repository</font>== Line 43: Line 54: How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' How to uninstall maven local repo - and switch back to official versions from Maven Central - [https://stackoverflow.com/questions/15358851/how-to-remove-jar-file-from-local-maven-repository-which-was-added-with-install this link]. Or remove unneeded stuff from '''~/.m2/repository/org/tensorflow''' + +<font color=green size='4'>After '''*_jni.so''' is linked and '''jar''' installed one can resume normal development. See below what to add to your project's pom.xml</font> ==<font color='blue'>Modify TF JNI functions</font>== ==<font color='blue'>Modify TF JNI functions</font>== Line 77: Line 90: ... ... </project></font> </project></font> +* Write code as usual ===Basic example code=== ===Basic example code=== Line 92: Line 106: ===libtensorflow=== ===libtensorflow=== Record in pom.xml: Record in pom.xml: − <dependency>+ <font size=2><dependency> <groupId>org.tensorflow</groupId> <groupId>org.tensorflow</groupId> <artifactId>libtensorflow</artifactId> <artifactId>libtensorflow</artifactId> <version>1.15.0</version> <version>1.15.0</version> − </dependency>+ </dependency></font> Archive contains Java classes. Archive contains Java classes. Line 102: Line 116: ===libtensorflow_jni_gpu=== ===libtensorflow_jni_gpu=== Record in pom.xml: Record in pom.xml: − <dependency>+ <font size=2><dependency> <groupId>org.tensorflow</groupId> <groupId>org.tensorflow</groupId> <artifactId>libtensorflow_jni_gpu</artifactId> <artifactId>libtensorflow_jni_gpu</artifactId> − <version>1.14.0</version>+ <version>1.15.0</version> − </dependency>+ </dependency></font> Archive contains native library: Archive contains native library: OlegPages
