Skip to content

Framework ops #255

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 77 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
c57a2e7
Merge pull request #3 from tensorflow/master
JimClarke5 Oct 8, 2020
09fc07e
Merge pull request #4 from tensorflow/master
JimClarke5 Oct 27, 2020
a99dcb4
Merge pull request #5 from tensorflow/master
JimClarke5 Nov 17, 2020
ba294ea
Merge pull request #6 from tensorflow/master
JimClarke5 Nov 19, 2020
04f419a
Merge pull request #7 from tensorflow/master
JimClarke5 Dec 30, 2020
02e7ebf
Merge pull request #8 from tensorflow/master
JimClarke5 Jan 29, 2021
e0c9ed8
Merge pull request #9 from tensorflow/master
JimClarke5 Feb 1, 2021
5b0374b
Merge pull request #10 from tensorflow/master
JimClarke5 Feb 11, 2021
e038bbd
Merge pull request #11 from tensorflow/master
JimClarke5 Feb 23, 2021
def3051
Merge pull request #13 from tensorflow/master
JimClarke5 Mar 3, 2021
11748ae
Merge pull request #15 from tensorflow/master
JimClarke5 Mar 21, 2021
dc94953
Moved high level tf.nn ops to framework.
JimClarke5 Mar 26, 2021
1878b60
Added FrameworkOps analogous to Ops.
JimClarke5 Mar 26, 2021
9225a48
Added FrameworkOps analogous to Ops.
JimClarke5 Mar 27, 2021
caab79b
Move l2Normalize to MathOps
JimClarke5 Mar 27, 2021
bd072f4
Reformat code, fix javadocs
JimClarke5 Mar 27, 2021
a9412ea
Merge pull request #16 from tensorflow/master
JimClarke5 Apr 9, 2021
d29262b
Add confusionMatrix() method. add Unit test
JimClarke5 Apr 16, 2021
2ff8dfe
Merge pull request #17 from tensorflow/master
JimClarke5 Apr 22, 2021
ee5e38a
Merge pull request #18 from tensorflow/master
JimClarke5 May 1, 2021
26394d6
Merge pull request #19 from tensorflow/master
JimClarke5 May 2, 2021
e0a4a26
Moved high level tf.nn ops to framework.
JimClarke5 Mar 26, 2021
28db4df
Added FrameworkOps analogous to Ops.
JimClarke5 Mar 26, 2021
ba24371
Added FrameworkOps analogous to Ops.
JimClarke5 Mar 27, 2021
4d3f17c
Move l2Normalize to MathOps
JimClarke5 Mar 27, 2021
9e07483
Reformat code, fix javadocs
JimClarke5 Mar 27, 2021
790bf35
Add confusionMatrix() method. add Unit test
JimClarke5 Apr 16, 2021
b4ca97a
Added linalg methods for matmul
JimClarke5 May 2, 2021
e83d26b
add nn ops for sigmoidCrossEntropyWithLogits, softmaxCrossEntropyWith…
JimClarke5 May 2, 2021
e4e65f2
Moved SetOps to FrameworkOps
JimClarke5 May 2, 2021
a2ed723
Added tensordot and reduceLogSumExp
JimClarke5 May 2, 2021
be1fe66
Added frameworkOps for nn and linalg
JimClarke5 May 2, 2021
7b51e7f
Modified to use FrameworkOps
JimClarke5 May 2, 2021
f1c63c0
move nn.raw classes to nn in core, remove nn.raw
JimClarke5 May 2, 2021
f4b75b9
Merge remote-tracking branch 'origin/Framework_Ops' into Framework_Ops
JimClarke5 May 2, 2021
043654b
Update FrameworkOps.java
JimClarke5 May 2, 2021
06c28df
Fix unusual regression error in confustion matrix. Needed to reduceA…
JimClarke5 May 3, 2021
8f33d21
javadoc fixes
JimClarke5 May 3, 2021
a24b8ca
Setting all the optimizers to have useLocking = True (#310)
Craigacp May 4, 2021
94f5b15
Load TF library before computing TString size (#322)
karllessard May 17, 2021
743475d
Update README.md
karllessard May 19, 2021
3648a96
Fix sometimes generating Javadoc for scope param in Ops (#291)
rnett May 21, 2021
ceae489
Use spotless plugin for formating (#308)
rnett May 23, 2021
0f7274e
Quick fix for spotless (#324)
rnett May 24, 2021
ace917b
Temporarily disabling Linux MKL-GPU
karllessard May 26, 2021
3b4533c
Fix Scope name collisions (#248)
rnett May 28, 2021
daeb257
Native functions v2 (#233)
rnett May 31, 2021
19e1c8d
Spotless updates (#331)
rnett Jun 1, 2021
23d6f0b
activations, constraints, initializers, losses, regularizers: move Op…
JimClarke5 Jun 2, 2021
7b5a1ca
Skip tests in check-format job
karllessard Jun 8, 2021
cea76cd
Upgrade for TensorFlow 2.5.0 (#303)
saudet Jun 10, 2021
caed0e8
Skip implementation-less TF_InitKernel
karllessard Jun 11, 2021
b997f12
Upgrade TF version in current snapshots
karllessard Jun 11, 2021
031a0c1
SavedModelBundle leak fix (#335)
Craigacp Jun 11, 2021
b38cc04
Use OP_NAME constant instead of hard coding (#328)
rnett Jun 16, 2021
4d8d24f
Moved high level tf.nn ops to framework.
JimClarke5 Mar 26, 2021
e483792
Added FrameworkOps analogous to Ops.
JimClarke5 Mar 26, 2021
9480126
Added FrameworkOps analogous to Ops.
JimClarke5 Mar 27, 2021
074794b
Move l2Normalize to MathOps
JimClarke5 Mar 27, 2021
7526b7e
Reformat code, fix javadocs
JimClarke5 Mar 27, 2021
0a163c6
Add confusionMatrix() method. add Unit test
JimClarke5 Apr 16, 2021
c234b9a
Added linalg methods for matmul
JimClarke5 May 2, 2021
e024f4b
add nn ops for sigmoidCrossEntropyWithLogits, softmaxCrossEntropyWith…
JimClarke5 May 2, 2021
b108b06
Moved SetOps to FrameworkOps
JimClarke5 May 2, 2021
13b6f0f
Added tensordot and reduceLogSumExp
JimClarke5 May 2, 2021
f1dbb01
Added frameworkOps for nn and linalg
JimClarke5 May 2, 2021
6174a32
Modified to use FrameworkOps
JimClarke5 May 2, 2021
5523896
move nn.raw classes to nn in core, remove nn.raw
JimClarke5 May 2, 2021
b750dd2
Moved high level tf.nn ops to framework.
JimClarke5 Mar 26, 2021
4468be2
Added FrameworkOps analogous to Ops.
JimClarke5 Mar 26, 2021
eb64cd0
Move l2Normalize to MathOps
JimClarke5 Mar 27, 2021
134a11d
Reformat code, fix javadocs
JimClarke5 Mar 27, 2021
1f9626c
Update FrameworkOps.java
JimClarke5 May 2, 2021
7860a71
Fix unusual regression error in confustion matrix. Needed to reduceA…
JimClarke5 May 3, 2021
d967a99
javadoc fixes
JimClarke5 May 3, 2021
e84981f
Rebase with latest master
JimClarke5 Jun 17, 2021
f69e17e
Merge branch 'Framework_Ops' of https://github.com/JimClarke5/java in…
JimClarke5 Jun 17, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
38 changes: 32 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,32 @@ jobs:
- name: Run lint checks
run: |
mvn compiler:compile -Pdev,jdk11 -B -U -e
check-format:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
container: centos:7
steps:
- name: Checkout repository
uses: actions/checkout@v1
- name: Install environment
run: |
yum -y update
yum -y install centos-release-scl-rh epel-release
yum -y install java-11-openjdk-devel devtoolset-7
echo Downloading Maven
curl -L https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz -o $HOME/apache-maven-3.6.3-bin.tar.gz
tar xzf $HOME/apache-maven-3.6.3-bin.tar.gz -C /opt/
ln -sf /opt/apache-maven-3.6.3/bin/mvn /usr/bin/mvn
- name: Build project
run: |
source scl_source enable devtoolset-7 || true
export JAVA_HOME=$(dirname $(dirname $(readlink $(readlink $(which javac)))))
echo $JAVA_HOME
mvn -version
mvn clean install -Pdev,jdk11 -B -U -e -Dlint.skip=true -Dmaven.test.skip=true
- name: Run format checks
run: |
mvn spotless:check -Pdev,jdk11 -B -U -e
prepare:
runs-on: ubuntu-latest
outputs:
Expand All @@ -63,7 +89,7 @@ jobs:
needs: prepare
strategy:
matrix:
ext: ["", -mkl, -gpu, -mkl-gpu]
ext: ["", -gpu] #, -mkl, -mkl-gpu]
steps:
- name: Install environment
run: |
Expand All @@ -78,7 +104,7 @@ jobs:
tar xzf $HOME/apache-maven-3.6.3-bin.tar.gz -C /opt/
ln -sf /opt/apache-maven-3.6.3/bin/mvn /usr/bin/mvn
echo Downloading Bazel
curl -L https://github.com/bazelbuild/bazel/releases/download/3.1.0/bazel-3.1.0-installer-linux-x86_64.sh -o bazel.sh --retry 10
curl -L https://github.com/bazelbuild/bazel/releases/download/3.7.2/bazel-3.7.2-installer-linux-x86_64.sh -o bazel.sh --retry 10
bash bazel.sh
if [[ "${{ matrix.ext }}" == *-gpu ]]; then
echo Installing CUDA
Expand Down Expand Up @@ -127,13 +153,13 @@ jobs:
needs: prepare
strategy:
matrix:
ext: ["", -mkl]
ext: [""] # , -mkl]
steps:
- name: Install environment
run: |
python3 -m pip install numpy six
echo Downloading Bazel
curl -L https://github.com/bazelbuild/bazel/releases/download/3.1.0/bazel-3.1.0-installer-darwin-x86_64.sh -o bazel.sh --retry 10
curl -L https://github.com/bazelbuild/bazel/releases/download/3.7.2/bazel-3.7.2-installer-darwin-x86_64.sh -o bazel.sh --retry 10
bash bazel.sh
brew install libomp perl
- name: Checkout repository
Expand Down Expand Up @@ -163,7 +189,7 @@ jobs:
needs: prepare
strategy:
matrix:
ext: ["", -gpu, -mkl] #, -mkl-gpu]
ext: ["", -gpu] #, -mkl, -mkl-gpu]
steps:
- name: Configure page file
uses: al-cheb/[email protected]
Expand All @@ -182,7 +208,7 @@ jobs:
bash.exe -lc "find 'C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/' -iname '14.1*' -exec rm -Rf {} \;"
echo Downloading Bazel
mkdir C:\bazel
curl.exe -L https://github.com/bazelbuild/bazel/releases/download/3.1.0/bazel-3.1.0-windows-x86_64.exe -o C:/bazel/bazel.exe --retry 10
curl.exe -L https://github.com/bazelbuild/bazel/releases/download/3.7.2/bazel-3.7.2-windows-x86_64.exe -o C:/bazel/bazel.exe --retry 10
set "EXT=${{ matrix.ext }}"
if "%EXT:~-4%" == "-gpu" (
echo Removing some unused stuff to avoid running out of disk space
Expand Down
14 changes: 14 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,20 @@ the `dev` profile in your Maven command to use those artifacts instead of buildi
Modifying the native op generation code (not the annotation processor) or the JavaCPP configuration (not the abstract Pointers) will require a
complete build could be required to reflect the changes, otherwise `-Pdev` should be fine.

## JDK 16+

If you're using JDK 16+, you need to add some exports for the formatter plugin:

```
--add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
```

This can be done in `.mvn/jvm.config` or `MAVEN_OPTS`.

### Native Builds

In some cases, like when adding GPU support or re-generating op classes, you will need to re-build the native library. 99% of this is building
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ This table shows the mapping between different version of TensorFlow for Java an
| 0.2.0 | 2.3.1 |
| 0.3.0 | 2.4.1 |
| 0.3.1 | 2.4.1 |
| 0.4.0-SNAPSHOT | 2.4.1
| 0.4.0-SNAPSHOT | 2.5.0

## How to Contribute?

Expand Down
71 changes: 58 additions & 13 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<modelVersion>4.0.0</modelVersion>

Expand Down Expand Up @@ -44,6 +44,7 @@
<maven.javadoc.skip>true</maven.javadoc.skip>
<maven.source.skip>true</maven.source.skip>
<gpg.skip>true</gpg.skip>
<spotless.version>2.11.1</spotless.version>
</properties>

<repositories>
Expand Down Expand Up @@ -102,19 +103,19 @@
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>${jmh.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>${jmh.version}</version>
<scope>test</scope>
</dependency>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${jmh.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>

Expand Down Expand Up @@ -228,6 +229,34 @@
</plugins>
</build>
</profile>

<!--
Profile that enables format checks on compilation
Can auto-format using spotless:apply.
-->
<profile>
<id>check-format</id>
<build>
<plugins>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>${spotless.version}</version>

<executions>
<execution>
<!-- Runs in initialize phase to fail fast in case of formatting issues (should be before codegen).-->
<id>spotless-check</id>
<phase>initialize</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>

<!-- http://central.sonatype.org/pages/requirements.html#developer-information -->
Expand Down Expand Up @@ -299,6 +328,22 @@
<updateMatchingVersions>true</updateMatchingVersions>
</configuration>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>${spotless.version}</version>
<configuration>

<ratchetFrom>origin/master</ratchetFrom>

<lineEndings/>
<java>
<googleJavaFormat/>

<removeUnusedImports/>
</java>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
Expand Down
5 changes: 3 additions & 2 deletions tensorflow-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,10 @@
</activation>
<modules>
<module>tensorflow-core-platform</module>
<module>tensorflow-core-platform-mkl</module>
<module>tensorflow-core-platform-mkl-gpu</module>
<module>tensorflow-core-platform-gpu</module>
<!-- Disabling MKL builds until they are more stable and performant -->
<!--module>tensorflow-core-platform-mkl</module-->
<!--module>tensorflow-core-platform-mkl-gpu</module-->
</modules>
</profile>

Expand Down
34 changes: 32 additions & 2 deletions tensorflow-core/tensorflow-core-api/.bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -151,8 +151,8 @@ build --define open_source_build=true
test --define open_source_build=true

# For workaround https://github.com/bazelbuild/bazel/issues/8772 with Bazel >= 0.29.1
build --java_toolchain=@org_tensorflow//third_party/toolchains/java:tf_java_toolchain
build --host_java_toolchain=@org_tensorflow//third_party/toolchains/java:tf_java_toolchain
build --java_toolchain=@tf_toolchains//toolchains/java:tf_java_toolchain
build --host_java_toolchain=@tf_toolchains//toolchains/java:tf_java_toolchain

# Please note that MKL on MacOS or windows is still not supported.
# If you would like to use a local MKL instead of downloading, please set the
Expand Down Expand Up @@ -616,3 +616,33 @@ build:release_gpu_linux_cuda_10_1 --config=release_gpu_linux
build:release_gpu_linux_cuda_10_1 --action_env CUDA_TOOLKIT_PATH="/usr/local/cuda-10.1"
build:release_gpu_linux_cuda_10_1 --action_env=TF_CUDA_VERSION="10"
build:release_gpu_linux_cuda_10_1 --action_env=TF_CUDNN_VERSION="7"

# Address sanitizer
# CC=clang bazel build --config asan
build:asan --strip=never
build:asan --copt -fsanitize=address
build:asan --copt -DADDRESS_SANITIZER
build:asan --copt -g
build:asan --copt -O3
build:asan --copt -fno-omit-frame-pointer
build:asan --linkopt -fsanitize=address

# Memory sanitizer
# CC=clang bazel build --config msan
build:msan --strip=never
build:msan --copt -fsanitize=memory
build:msan --copt -DADDRESS_SANITIZER
build:msan --copt -g
build:msan --copt -O3
build:msan --copt -fno-omit-frame-pointer
build:msan --linkopt -fsanitize=memory

# Undefined Behavior Sanitizer
# CC=clang bazel build --config ubsan
build:ubsan --strip=never
build:ubsan --copt -fsanitize=undefined
build:ubsan --copt -g
build:ubsan --copt -O3
build:ubsan --copt -fno-omit-frame-pointer
build:ubsan --linkopt -fsanitize=undefined
build:ubsan --linkopt -lubsan
33 changes: 18 additions & 15 deletions tensorflow-core/tensorflow-core-api/WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -17,28 +17,31 @@ http_archive(
patch_args = ["-p1"],
patch_cmds = ["grep -rl 'java_package' tensorflow/core | xargs sed -i.bak 's/^\(.* java_package = \"org\.tensorflow\.\)\(.*\"\)/\\1proto.\\2'/"],
urls = [
"https://github.com/tensorflow/tensorflow/archive/v2.4.1.tar.gz",
"https://github.com/tensorflow/tensorflow/archive/refs/tags/v2.5.0.tar.gz",
],
sha256 = "f681331f8fc0800883761c7709d13cda11942d4ad5ff9f44ad855e9dc78387e0",
strip_prefix = "tensorflow-2.4.1"
sha256 = "233875ea27fc357f6b714b2a0de5f6ff124b50c1ee9b3b41f9e726e9e677b86c",
strip_prefix = "tensorflow-2.5.0"
)

# START: Upstream TensorFlow dependencies
# TensorFlow build depends on these dependencies.
# Needs to be in-sync with TensorFlow sources.
http_archive(
name = "io_bazel_rules_closure",
sha256 = "5b00383d08dd71f28503736db0500b6fb4dda47489ff5fc6bed42557c07c6ba9",
strip_prefix = "rules_closure-308b05b2419edb5c8ee0471b67a40403df940149",
urls = [
"https://storage.googleapis.com/mirror.tensorflow.org/github.com/bazelbuild/rules_closure/archive/308b05b2419edb5c8ee0471b67a40403df940149.tar.gz",
"https://github.com/bazelbuild/rules_closure/archive/308b05b2419edb5c8ee0471b67a40403df940149.tar.gz", # 2019-06-13
],
)
# END: Upstream TensorFlow dependencies
load("@org_tensorflow//tensorflow:workspace3.bzl", "tf_workspace3")

tf_workspace3()

load("@org_tensorflow//tensorflow:workspace.bzl", "tf_workspace")
tf_workspace()
load("@org_tensorflow//tensorflow:workspace2.bzl", "tf_workspace2")

tf_workspace2()

load("@org_tensorflow//tensorflow:workspace1.bzl", "tf_workspace1")

tf_workspace1()

load("@org_tensorflow//tensorflow:workspace0.bzl", "tf_workspace0")

tf_workspace0()
# END: Upstream TensorFlow dependencies

load("@com_github_grpc_grpc//bazel:grpc_deps.bzl", "grpc_deps")
grpc_deps()
Expand Down
13 changes: 7 additions & 6 deletions tensorflow-core/tensorflow-core-api/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,13 @@ done
echo "Listing $TENSORFLOW_BIN:" && ls -l $TENSORFLOW_BIN

if [[ -x /usr/bin/install_name_tool ]] && [[ -e $BAZEL_BIN/external/llvm_openmp/libiomp5.dylib ]]; then
# Fix library with correct rpath on Mac
chmod +w $BAZEL_BIN/external/llvm_openmp/libiomp5.dylib $TENSORFLOW_BIN/libtensorflow_cc.2.dylib $TENSORFLOW_BIN/libtensorflow_framework.2.dylib
UGLYPATH=$(otool -L $TENSORFLOW_BIN/libtensorflow_cc.2.dylib | grep @loader_path | cut -f1 -d ' ')
install_name_tool -add_rpath @loader_path/. -id @rpath/libiomp5.dylib $BAZEL_BIN/external/llvm_openmp/libiomp5.dylib
install_name_tool -change $UGLYPATH @rpath/libiomp5.dylib $TENSORFLOW_BIN/libtensorflow_cc.2.dylib
install_name_tool -change $UGLYPATH @rpath/libiomp5.dylib $TENSORFLOW_BIN/libtensorflow_framework.2.dylib
# Fix library with correct rpath on Mac
chmod +w $BAZEL_BIN/external/llvm_openmp/libiomp5.dylib $TENSORFLOW_BIN/libtensorflow_cc.2.dylib $TENSORFLOW_BIN/libtensorflow_framework.2.dylib
UGLYPATH=$(otool -L $TENSORFLOW_BIN/libtensorflow_cc.2.dylib | grep @loader_path | cut -f1 -d ' ')
echo $UGLYPATH
install_name_tool -add_rpath @loader_path/. -id @rpath/libiomp5.dylib $BAZEL_BIN/external/llvm_openmp/libiomp5.dylib
install_name_tool -change $UGLYPATH @rpath/libiomp5.dylib $TENSORFLOW_BIN/libtensorflow_cc.2.dylib
install_name_tool -change $UGLYPATH @rpath/libiomp5.dylib $TENSORFLOW_BIN/libtensorflow_framework.2.dylib
fi

GEN_SRCS_DIR=src/gen/java
Expand Down
Loading