diff --git a/tensorflow-core/pom.xml b/tensorflow-core/pom.xml index d36b91776c0..759bc993145 100644 --- a/tensorflow-core/pom.xml +++ b/tensorflow-core/pom.xml @@ -61,7 +61,7 @@ macosx-x86_64${javacpp.platform.extension} windows-x86${javacpp.platform.extension} windows-x86_64${javacpp.platform.extension} - 1.5.4 + 1.5.5 diff --git a/tensorflow-core/tensorflow-core-api/pom.xml b/tensorflow-core/tensorflow-core-api/pom.xml index 4ebe1234e80..f7a3c6bdf83 100644 --- a/tensorflow-core/tensorflow-core-api/pom.xml +++ b/tensorflow-core/tensorflow-core-api/pom.xml @@ -143,6 +143,19 @@ + + maven-resources-plugin + 3.1.0 + + + javacpp-parser + generate-sources + + resources + + + + maven-compiler-plugin 3.8.0 @@ -211,7 +224,15 @@ ${project.build.outputDirectory} ${project.basedir}/ + ${project.basedir}/bazel-bin/external/llvm-project/llvm/include/ + ${project.basedir}/bazel-bin/external/org_tensorflow/ + ${project.basedir}/bazel-${project.artifactId}/external/eigen_archive/ + ${project.basedir}/bazel-${project.artifactId}/external/com_google_absl/ + ${project.basedir}/bazel-${project.artifactId}/external/com_google_protobuf/src/ + ${project.basedir}/bazel-${project.artifactId}/external/farmhash_archive/src/ + ${project.basedir}/bazel-${project.artifactId}/external/llvm-project/llvm/include/ ${project.basedir}/bazel-${project.artifactId}/external/org_tensorflow/ + ${project.basedir}/target/classes/org/tensorflow/internal/c_api/include/ ${project.basedir}/bazel-bin/external/llvm_openmp/ @@ -317,6 +338,10 @@ ${project.build.directory}/native/org/tensorflow/internal/c_api/${native.classifier}/ ${javacpp.compiler.skip} org.tensorflow.internal.c_api.** + + + ${project.basedir}/bazel-${project.artifactId}/external/org_tensorflow/tensorflow/c/eager/gradients.cc + true true diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractContext.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractContext.java new file mode 100644 index 00000000000..8ff667ef18b --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractContext.java @@ -0,0 +1,49 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// Abstract interface to a context. +// +// This serves as a factory for creating `AbstractOperation`s and for +// registering traced functions. +// Operations creation within a context can only be executed in that context +// (for now at least). +// Implementations of the context may contain some state e.g. an execution +// environment, a traced representation etc. +@Namespace("tensorflow") @NoOffset @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class AbstractContext extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public AbstractContext(Pointer p) { super(p); } + + public native int getKind(); + + // Release any underlying resources, including the interface object. + // + // WARNING: The destructor of this class is marked as protected to disallow + // clients from directly destroying this object since it may manage it's own + // lifetime through ref counting. Thus clients MUST call Release() in order to + // destroy an instance of this class. + public native void Release(); + + // Creates an operation builder and ties it to this context. + // The returned object can be used for setting operation's attributes, + // adding inputs and finally executing (immediately or lazily as in tracing) + // it in this context. + public native AbstractOperation CreateOperation(); + + // Registers a function with this context, after this the function is + // available to be called/referenced by its name in this context. + public native @ByVal Status RegisterFunction(AbstractFunction arg0); + // Remove a function. 'func' argument is the name of a previously added + // FunctionDef. The name is in fdef.signature.name. + public native @ByVal Status RemoveFunction(@StdString BytePointer func); + public native @ByVal Status RemoveFunction(@StdString String func); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractContextDeleter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractContextDeleter.java new file mode 100644 index 00000000000..6187fbde887 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractContextDeleter.java @@ -0,0 +1,30 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + +@Namespace("tensorflow::internal") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class AbstractContextDeleter extends Pointer { + static { Loader.load(); } + /** Default native constructor. */ + public AbstractContextDeleter() { super((Pointer)null); allocate(); } + /** Native array allocator. Access with {@link Pointer#position(long)}. */ + public AbstractContextDeleter(long size) { super((Pointer)null); allocateArray(size); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public AbstractContextDeleter(Pointer p) { super(p); } + private native void allocate(); + private native void allocateArray(long size); + @Override public AbstractContextDeleter position(long position) { + return (AbstractContextDeleter)super.position(position); + } + @Override public AbstractContextDeleter getPointer(long i) { + return new AbstractContextDeleter((Pointer)this).position(position + i); + } + + public native @Name("operator ()") void apply(AbstractContext p); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractFunction.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractFunction.java new file mode 100644 index 00000000000..df562399f5d --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractFunction.java @@ -0,0 +1,27 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// A traced function: this hides the complexity of converting the serialized +// representation between various supported formats e.g. FunctionDef and Mlir +// function. +@Namespace("tensorflow") @NoOffset @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class AbstractFunction extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public AbstractFunction(Pointer p) { super(p); } + + // Returns which subclass is this instance of. + public native int getKind(); + + // Returns the AbstractFunction as a FunctionDef. + public native @ByVal Status GetFunctionDef(@Cast("tensorflow::FunctionDef**") PointerPointer arg0); + public native @ByVal Status GetFunctionDef(@Cast("tensorflow::FunctionDef**") @ByPtrPtr Pointer arg0); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractOperation.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractOperation.java new file mode 100644 index 00000000000..55b13cb6c0d --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractOperation.java @@ -0,0 +1,181 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// Abstract interface to an operation. +// This interface allows building and executing an operation in either +// tracing or immediate execution mode. +@Namespace("tensorflow") @NoOffset @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class AbstractOperation extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public AbstractOperation(Pointer p) { super(p); } + + public native int getKind(); + + // Release any underlying resources, including the interface object. + // + // WARNING: The destructor of this class is marked as protected to disallow + // clients from directly destroying this object since it may manage it's own + // lifetime through ref counting. Thus this must be allocated on the heap and + // clients MUST call Release() in order to destroy an instance of this class. + public native void Release(); + + public native @ByVal Status Reset(@Cast("const char*") BytePointer op, @Cast("const char*") BytePointer raw_device_name); + public native @ByVal Status Reset(String op, String raw_device_name); + + public native @StdString BytePointer Name(); + + // Returns the operation's device name. + // + // The value returned may be different from the one set by SetDeviceName, but + // it will be compatible with it: the name will be updated by device placement + // logic to refer to the specific device chosen. + // + // Example: If one calls `op->SetDeviceName("/device:GPU")`, the value + // returned by DeviceName should be "/device:GPU:*" until a particular GPU is + // chosen for the operation by the device placement logic in the + // executor. After that, the value returned by DeviceName will be a full + // device name such as "/job:localhost/replica:0/task:0/device:GPU:1". + public native @StdString BytePointer DeviceName(); + + // Sets the operation device name. + // + // The given `name` must be parseable by DeviceNameUtils::ParseFullName, and + // the result will be used as a constraint for device placement. See the + // documentation for DeviceName for more details. + // + // The value will override the previous value - that is, no "merging" of + // existing and given constraints will be performed. + public native @ByVal Status SetDeviceName(@Cast("const char*") BytePointer name); + public native @ByVal Status SetDeviceName(String name); + + public native @ByVal Status AddInput(AbstractTensorHandle input); + public native @ByVal Status AddInputList( + @Cast("tensorflow::AbstractTensorHandle**") @Span PointerPointer inputs); + public native @ByVal Status Execute(@Cast("tensorflow::AbstractTensorHandle**") @Span PointerPointer retvals, + IntPointer num_retvals); + + public native @ByVal Status SetAttrString(@Cast("const char*") BytePointer attr_name, @Cast("const char*") BytePointer data, + @Cast("size_t") long length); + public native @ByVal Status SetAttrString(String attr_name, String data, + @Cast("size_t") long length); + public native @ByVal Status SetAttrInt(@Cast("const char*") BytePointer attr_name, @Cast("int64_t") long value); + public native @ByVal Status SetAttrInt(String attr_name, @Cast("int64_t") long value); + public native @ByVal Status SetAttrFloat(@Cast("const char*") BytePointer attr_name, float value); + public native @ByVal Status SetAttrFloat(String attr_name, float value); + public native @ByVal Status SetAttrBool(@Cast("const char*") BytePointer attr_name, @Cast("bool") boolean value); + public native @ByVal Status SetAttrBool(String attr_name, @Cast("bool") boolean value); + public native @ByVal Status SetAttrType(@Cast("const char*") BytePointer attr_name, @Cast("tensorflow::DataType") int value); + public native @ByVal Status SetAttrType(String attr_name, @Cast("tensorflow::DataType") int value); + public native @ByVal Status SetAttrShape(@Cast("const char*") BytePointer attr_name, @Cast("const int64_t*") LongPointer dims, + int num_dims); + public native @ByVal Status SetAttrShape(String attr_name, @Cast("const int64_t*") LongBuffer dims, + int num_dims); + public native @ByVal Status SetAttrShape(@Cast("const char*") BytePointer attr_name, @Cast("const int64_t*") long[] dims, + int num_dims); + public native @ByVal Status SetAttrShape(String attr_name, @Cast("const int64_t*") LongPointer dims, + int num_dims); + public native @ByVal Status SetAttrShape(@Cast("const char*") BytePointer attr_name, @Cast("const int64_t*") LongBuffer dims, + int num_dims); + public native @ByVal Status SetAttrShape(String attr_name, @Cast("const int64_t*") long[] dims, + int num_dims); + public native @ByVal Status SetAttrFunction(@Cast("const char*") BytePointer attr_name, + @Const AbstractOperation value); + public native @ByVal Status SetAttrFunction(String attr_name, + @Const AbstractOperation value); + public native @ByVal Status SetAttrFunctionName(@Cast("const char*") BytePointer attr_name, @Cast("const char*") BytePointer value, + @Cast("size_t") long length); + public native @ByVal Status SetAttrFunctionName(String attr_name, String value, + @Cast("size_t") long length); + public native @ByVal Status SetAttrTensor(@Cast("const char*") BytePointer attr_name, + AbstractTensorInterface tensor); + public native @ByVal Status SetAttrTensor(String attr_name, + AbstractTensorInterface tensor); + public native @ByVal Status SetAttrStringList(@Cast("const char*") BytePointer attr_name, + @Cast("const void*const*") PointerPointer values, + @Cast("const size_t*") SizeTPointer lengths, int num_values); + public native @ByVal Status SetAttrStringList(@Cast("const char*") BytePointer attr_name, + @Cast("const void*const*") @ByPtrPtr Pointer values, + @Cast("const size_t*") SizeTPointer lengths, int num_values); + public native @ByVal Status SetAttrStringList(String attr_name, + @Cast("const void*const*") @ByPtrPtr Pointer values, + @Cast("const size_t*") SizeTPointer lengths, int num_values); + public native @ByVal Status SetAttrFloatList(@Cast("const char*") BytePointer attr_name, @Const FloatPointer values, + int num_values); + public native @ByVal Status SetAttrFloatList(String attr_name, @Const FloatBuffer values, + int num_values); + public native @ByVal Status SetAttrFloatList(@Cast("const char*") BytePointer attr_name, @Const float[] values, + int num_values); + public native @ByVal Status SetAttrFloatList(String attr_name, @Const FloatPointer values, + int num_values); + public native @ByVal Status SetAttrFloatList(@Cast("const char*") BytePointer attr_name, @Const FloatBuffer values, + int num_values); + public native @ByVal Status SetAttrFloatList(String attr_name, @Const float[] values, + int num_values); + public native @ByVal Status SetAttrIntList(@Cast("const char*") BytePointer attr_name, @Cast("const int64_t*") LongPointer values, + int num_values); + public native @ByVal Status SetAttrIntList(String attr_name, @Cast("const int64_t*") LongBuffer values, + int num_values); + public native @ByVal Status SetAttrIntList(@Cast("const char*") BytePointer attr_name, @Cast("const int64_t*") long[] values, + int num_values); + public native @ByVal Status SetAttrIntList(String attr_name, @Cast("const int64_t*") LongPointer values, + int num_values); + public native @ByVal Status SetAttrIntList(@Cast("const char*") BytePointer attr_name, @Cast("const int64_t*") LongBuffer values, + int num_values); + public native @ByVal Status SetAttrIntList(String attr_name, @Cast("const int64_t*") long[] values, + int num_values); + public native @ByVal Status SetAttrTypeList(@Cast("const char*") BytePointer attr_name, @Cast("const tensorflow::DataType*") IntPointer values, + int num_values); + public native @ByVal Status SetAttrTypeList(String attr_name, @Cast("const tensorflow::DataType*") IntBuffer values, + int num_values); + public native @ByVal Status SetAttrTypeList(@Cast("const char*") BytePointer attr_name, @Cast("const tensorflow::DataType*") int[] values, + int num_values); + public native @ByVal Status SetAttrTypeList(String attr_name, @Cast("const tensorflow::DataType*") IntPointer values, + int num_values); + public native @ByVal Status SetAttrTypeList(@Cast("const char*") BytePointer attr_name, @Cast("const tensorflow::DataType*") IntBuffer values, + int num_values); + public native @ByVal Status SetAttrTypeList(String attr_name, @Cast("const tensorflow::DataType*") int[] values, + int num_values); + public native @ByVal Status SetAttrBoolList(@Cast("const char*") BytePointer attr_name, + @Cast("const unsigned char*") BytePointer values, + int num_values); + public native @ByVal Status SetAttrBoolList(String attr_name, + @Cast("const unsigned char*") ByteBuffer values, + int num_values); + public native @ByVal Status SetAttrBoolList(@Cast("const char*") BytePointer attr_name, + @Cast("const unsigned char*") byte[] values, + int num_values); + public native @ByVal Status SetAttrBoolList(String attr_name, + @Cast("const unsigned char*") BytePointer values, + int num_values); + public native @ByVal Status SetAttrBoolList(@Cast("const char*") BytePointer attr_name, + @Cast("const unsigned char*") ByteBuffer values, + int num_values); + public native @ByVal Status SetAttrBoolList(String attr_name, + @Cast("const unsigned char*") byte[] values, + int num_values); + public native @ByVal Status SetAttrShapeList(@Cast("const char*") BytePointer attr_name, @Cast("const int64_t**") PointerPointer dims, + @Const IntPointer num_dims, int num_values); + public native @ByVal Status SetAttrShapeList(@Cast("const char*") BytePointer attr_name, @Cast("const int64_t**") @ByPtrPtr LongPointer dims, + @Const IntPointer num_dims, int num_values); + public native @ByVal Status SetAttrShapeList(String attr_name, @Cast("const int64_t**") @ByPtrPtr LongBuffer dims, + @Const IntBuffer num_dims, int num_values); + public native @ByVal Status SetAttrShapeList(@Cast("const char*") BytePointer attr_name, @Cast("const int64_t**") @ByPtrPtr long[] dims, + @Const int[] num_dims, int num_values); + public native @ByVal Status SetAttrShapeList(String attr_name, @Cast("const int64_t**") @ByPtrPtr LongPointer dims, + @Const IntPointer num_dims, int num_values); + public native @ByVal Status SetAttrShapeList(@Cast("const char*") BytePointer attr_name, @Cast("const int64_t**") @ByPtrPtr LongBuffer dims, + @Const IntBuffer num_dims, int num_values); + public native @ByVal Status SetAttrShapeList(String attr_name, @Cast("const int64_t**") @ByPtrPtr long[] dims, + @Const int[] num_dims, int num_values); + public native @ByVal Status SetAttrFunctionList( + @Cast("const char*") BytePointer attr_name, @Cast("const tensorflow::AbstractOperation**") @Span PointerPointer values); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractOperationDeleter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractOperationDeleter.java new file mode 100644 index 00000000000..560f134c9e9 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractOperationDeleter.java @@ -0,0 +1,30 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + +@Namespace("tensorflow::internal") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class AbstractOperationDeleter extends Pointer { + static { Loader.load(); } + /** Default native constructor. */ + public AbstractOperationDeleter() { super((Pointer)null); allocate(); } + /** Native array allocator. Access with {@link Pointer#position(long)}. */ + public AbstractOperationDeleter(long size) { super((Pointer)null); allocateArray(size); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public AbstractOperationDeleter(Pointer p) { super(p); } + private native void allocate(); + private native void allocateArray(long size); + @Override public AbstractOperationDeleter position(long position) { + return (AbstractOperationDeleter)super.position(position); + } + @Override public AbstractOperationDeleter getPointer(long i) { + return new AbstractOperationDeleter((Pointer)this).position(position + i); + } + + public native @Name("operator ()") void apply(AbstractOperation p); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractTensorHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractTensorHandle.java new file mode 100644 index 00000000000..3ba6746bcd8 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractTensorHandle.java @@ -0,0 +1,31 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// Abstract interface to a Tensor handle in either tracing or immediate +// execution mode. +@Namespace("tensorflow") @NoOffset @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class AbstractTensorHandle extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public AbstractTensorHandle(Pointer p) { super(p); } + + // Returns tensor dtype. + public native @Cast("tensorflow::DataType") int DataType(); + // Returns tensor shape. If tensor has unknown rank, shape remains untouched. + public native @ByVal Status Shape( + @Cast("tensorflow::PartialTensorShape*") Pointer shape); + + // The default debug string includes a shape and dtype. Implementations are + // free to override it with something more informative. + public native @StdString BytePointer DebugString(); + + public native int getKind(); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractTensorHandleDeleter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractTensorHandleDeleter.java new file mode 100644 index 00000000000..b0cac35e89c --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractTensorHandleDeleter.java @@ -0,0 +1,30 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + +@Namespace("tensorflow::internal") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class AbstractTensorHandleDeleter extends Pointer { + static { Loader.load(); } + /** Default native constructor. */ + public AbstractTensorHandleDeleter() { super((Pointer)null); allocate(); } + /** Native array allocator. Access with {@link Pointer#position(long)}. */ + public AbstractTensorHandleDeleter(long size) { super((Pointer)null); allocateArray(size); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public AbstractTensorHandleDeleter(Pointer p) { super(p); } + private native void allocate(); + private native void allocateArray(long size); + @Override public AbstractTensorHandleDeleter position(long position) { + return (AbstractTensorHandleDeleter)super.position(position); + } + @Override public AbstractTensorHandleDeleter getPointer(long i) { + return new AbstractTensorHandleDeleter((Pointer)this).position(position + i); + } + + public native @Name("operator ()") void apply(AbstractTensorHandle p); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractTensorInterface.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractTensorInterface.java new file mode 100644 index 00000000000..7ea67f65124 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractTensorInterface.java @@ -0,0 +1,46 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// Abstract interface to a Tensor. +// +// This allows us to hide concrete implementations of Tensor from header +// files. The interface lists the common functionality that must be provided by +// any concrete implementation. However, in cases where the true concrete class +// is needed a static_cast can be applied. +@Namespace("tensorflow") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class AbstractTensorInterface extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public AbstractTensorInterface(Pointer p) { super(p); } + + // Release any underlying resources, including the interface object. + public native void Release(); + + // Returns tensor dtype. + public native @Cast("tensorflow::DataType") int Type(); + // Returns number of dimensions. + public native int NumDims(); + // Returns size of specified dimension + public native @Cast("int64_t") long Dim(int dim_index); + // Returns number of elements across all dimensions. + public native @Cast("int64_t") long NumElements(); + // Return size in bytes of the Tensor + public native @Cast("size_t") long ByteSize(); + // Returns a pointer to tensor data + public native Pointer Data(); + + // Returns if the tensor is aligned + public native @Cast("bool") boolean IsAligned(); + // Returns if their is sole ownership of this Tensor and thus it can be moved. + public native @Cast("bool") boolean CanMove(); + + public native @StdString BytePointer SummarizeValue(); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractTensorInterfaceDeleter.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractTensorInterfaceDeleter.java new file mode 100644 index 00000000000..52aa9828b95 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/AbstractTensorInterfaceDeleter.java @@ -0,0 +1,30 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + +@Namespace("tensorflow::internal") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class AbstractTensorInterfaceDeleter extends Pointer { + static { Loader.load(); } + /** Default native constructor. */ + public AbstractTensorInterfaceDeleter() { super((Pointer)null); allocate(); } + /** Native array allocator. Access with {@link Pointer#position(long)}. */ + public AbstractTensorInterfaceDeleter(long size) { super((Pointer)null); allocateArray(size); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public AbstractTensorInterfaceDeleter(Pointer p) { super(p); } + private native void allocate(); + private native void allocateArray(long size); + @Override public AbstractTensorInterfaceDeleter position(long position) { + return (AbstractTensorInterfaceDeleter)super.position(position); + } + @Override public AbstractTensorInterfaceDeleter getPointer(long i) { + return new AbstractTensorInterfaceDeleter((Pointer)this).position(position + i); + } + + public native @Name("operator ()") void apply(AbstractTensorInterface p); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Compute_func_Pointer_TF_OpKernelContext.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Compute_func_Pointer_TF_OpKernelContext.java index fd70471e100..1f76baf7704 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Compute_func_Pointer_TF_OpKernelContext.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Compute_func_Pointer_TF_OpKernelContext.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Create_func_TF_OpKernelConstruction.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Create_func_TF_OpKernelConstruction.java index 8f951ea6a73..f412e6623c1 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Create_func_TF_OpKernelConstruction.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Create_func_TF_OpKernelConstruction.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Deallocator_Pointer_long_Pointer.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Deallocator_Pointer_long_Pointer.java index 168135a5b14..7bb718e4a87 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Deallocator_Pointer_long_Pointer.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Deallocator_Pointer_long_Pointer.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Delete_func_Pointer.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Delete_func_Pointer.java index 734040f20f4..6af16c575bd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Delete_func_Pointer.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Delete_func_Pointer.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/ForwardOperation.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/ForwardOperation.java new file mode 100644 index 00000000000..4731193410c --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/ForwardOperation.java @@ -0,0 +1,37 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// Metadata from the forward operation that is made available to the +// gradient registerer to instantiate a GradientFunction. +@Namespace("tensorflow::gradients") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class ForwardOperation extends Pointer { + static { Loader.load(); } + /** Default native constructor. */ + public ForwardOperation() { super((Pointer)null); allocate(); } + /** Native array allocator. Access with {@link Pointer#position(long)}. */ + public ForwardOperation(long size) { super((Pointer)null); allocateArray(size); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public ForwardOperation(Pointer p) { super(p); } + private native void allocate(); + private native void allocateArray(long size); + @Override public ForwardOperation position(long position) { + return (ForwardOperation)super.position(position); + } + @Override public ForwardOperation getPointer(long i) { + return new ForwardOperation((Pointer)this).position(position + i); + } + + @MemberGetter public native @StdString BytePointer op_name(); + @MemberGetter public native @Cast("tensorflow::AbstractTensorHandle**") @StdVector PointerPointer inputs(); + @MemberGetter public native @Cast("tensorflow::AbstractTensorHandle**") @StdVector PointerPointer outputs(); + @MemberGetter public native @Cast("tensorflow::int64*") @StdVector LongPointer skip_input_indices(); + @MemberGetter public native @ByRef @Cast("tensorflow::AttrBuilder*") Pointer attrs(); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/GradientFunction.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/GradientFunction.java new file mode 100644 index 00000000000..87590185553 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/GradientFunction.java @@ -0,0 +1,60 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// =============== Experimental C++ API for computing gradients =============== + +// Sample gradient function: +// +// class AddGradientFunction : public GradientFunction { +// public: +// Status Compute(Context* ctx, +// absl::Span grad_inputs, +// absl::Span grad_outputs) override { +// grad_outputs[0] = grad_inputs[0]; +// grad_outputs[1] = grad_inputs[0]; +// grad_outputs[0]->Ref(); +// grad_outputs[1]->Ref(); +// return Status::OK(); +// } +// ~AddGradientFunction() override {} +// }; +// +// GradientFunction* AddRegisterer(const ForwardOperation& op) { +// // More complex gradient functions can use inputs/attrs etc. from the +// // forward `op`. +// return new AddGradientFunction; +// } +// +// Status RegisterGradients(GradientRegistry* registry) { +// return registry->Register("Add", AddRegisterer); +// } +@Namespace("tensorflow::gradients") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class GradientFunction extends Pointer { + static { Loader.load(); } + /** Default native constructor. */ + public GradientFunction() { super((Pointer)null); allocate(); } + /** Native array allocator. Access with {@link Pointer#position(long)}. */ + public GradientFunction(long size) { super((Pointer)null); allocateArray(size); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public GradientFunction(Pointer p) { super(p); } + private native void allocate(); + private native void allocateArray(long size); + @Override public GradientFunction position(long position) { + return (GradientFunction)super.position(position); + } + @Override public GradientFunction getPointer(long i) { + return new GradientFunction((Pointer)this).position(position + i); + } + + @Virtual(true) public native @ByVal Status Compute(AbstractContext ctx, + @Cast({"tensorflow::AbstractTensorHandle* const*", "absl::Span"}) @Span PointerPointer grad_outputs, + @Cast({"tensorflow::AbstractTensorHandle**", "absl::Span"}) @Span PointerPointer grad_inputs); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/GradientRegistry.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/GradientRegistry.java new file mode 100644 index 00000000000..132510c1381 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/GradientRegistry.java @@ -0,0 +1,37 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// Map from op name to a `GradientFunctionFactory`. +@Namespace("tensorflow::gradients") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class GradientRegistry extends Pointer { + static { Loader.load(); } + /** Default native constructor. */ + public GradientRegistry() { super((Pointer)null); allocate(); } + /** Native array allocator. Access with {@link Pointer#position(long)}. */ + public GradientRegistry(long size) { super((Pointer)null); allocateArray(size); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public GradientRegistry(Pointer p) { super(p); } + private native void allocate(); + private native void allocateArray(long size); + @Override public GradientRegistry position(long position) { + return (GradientRegistry)super.position(position); + } + @Override public GradientRegistry getPointer(long i) { + return new GradientRegistry((Pointer)this).position(position + i); + } + + public native @ByVal Status Register(@StdString BytePointer op, + @ByVal GradientFunctionFactory gradient_function_factory); + public native @ByVal Status Register(@StdString String op, + @ByVal GradientFunctionFactory gradient_function_factory); + public native @ByVal Status Lookup(@Const @ByRef ForwardOperation op, + @UniquePtr GradientFunction gradient_function); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/IntSet.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/IntSet.java new file mode 100644 index 00000000000..ff2d3781df7 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/IntSet.java @@ -0,0 +1,36 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + +@Name("std::unordered_set") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class IntSet extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public IntSet(Pointer p) { super(p); } + public IntSet() { allocate(); } + private native void allocate(); + public native @Name("operator =") @ByRef IntSet put(@ByRef IntSet x); + + public boolean empty() { return size() == 0; } + public native long size(); + + public native void insert(int value); + public native void erase(int value); + public native @ByVal Iterator begin(); + public native @ByVal Iterator end(); + @NoOffset @Name("iterator") public static class Iterator extends Pointer { + public Iterator(Pointer p) { super(p); } + public Iterator() { } + + public native @Name("operator ++") @ByRef Iterator increment(); + public native @Name("operator ==") boolean equals(@ByRef Iterator it); + public native @Name("operator *") int get(); + } +} + diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Listener_BytePointer.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Listener_BytePointer.java index f1775998256..cf5310de68d 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Listener_BytePointer.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Listener_BytePointer.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Listener_String.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Listener_String.java index a4114f23dbe..439c87fba23 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Listener_String.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Listener_String.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/LongTapeTensorMap.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/LongTapeTensorMap.java new file mode 100644 index 00000000000..b3cc1ef6303 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/LongTapeTensorMap.java @@ -0,0 +1,37 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + +@Name("std::unordered_map") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class LongTapeTensorMap extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public LongTapeTensorMap(Pointer p) { super(p); } + public LongTapeTensorMap() { allocate(); } + private native void allocate(); + + + public boolean empty() { return size() == 0; } + public native long size(); + + @Index(function = "at") public native @ByRef TapeTensor get(@Cast("tensorflow::int64") long i); + + public native @ByVal Iterator begin(); + public native @ByVal Iterator end(); + @NoOffset @Name("iterator") public static class Iterator extends Pointer { + public Iterator(Pointer p) { super(p); } + public Iterator() { } + + public native @Name("operator ++") @ByRef Iterator increment(); + public native @Name("operator ==") boolean equals(@ByRef Iterator it); + public native @Name("operator *().first") @MemberGetter @Cast("tensorflow::int64") long first(); + public native @Name("operator *().second") @MemberGetter @ByRef @Const TapeTensor second(); + } +} + diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/OpEntry.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/OpEntry.java new file mode 100644 index 00000000000..a02664d0f1d --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/OpEntry.java @@ -0,0 +1,42 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// Represents an entry in the tape. +@NoOffset @Name("tensorflow::eager::OpTapeEntry") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class OpEntry extends Pointer { + static { Loader.load(); } + /** Default native constructor. */ + public OpEntry() { super((Pointer)null); allocate(); } + /** Native array allocator. Access with {@link Pointer#position(long)}. */ + public OpEntry(long size) { super((Pointer)null); allocateArray(size); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public OpEntry(Pointer p) { super(p); } + private native void allocate(); + private native void allocateArray(long size); + @Override public OpEntry position(long position) { + return (OpEntry)super.position(position); + } + @Override public OpEntry getPointer(long i) { + return new OpEntry((Pointer)this).position(position + i); + } + + public native @StdString BytePointer op_type(); public native OpEntry op_type(BytePointer setter); + public native @StdVector TapeTensor output_tensor_info(); public native OpEntry output_tensor_info(TapeTensor setter); + public native @Cast("tensorflow::int64*") @StdVector LongPointer input_tensor_id(); public native OpEntry input_tensor_id(LongPointer setter); + + // TODO(apassos) consider narrowing down this interface. + public native GradientFunction backward_function(); public native OpEntry backward_function(GradientFunction setter); + + // Should be called before deleting the backward function. TODO(apassos) use + // unique_ptrs to ensure this happens. + public native @ByRef @Cast("std::function*") Pointer backward_function_deleter(); public native OpEntry backward_function_deleter(Pointer setter); + public native @MemberSetter OpEntry backward_function_deleter(GradientFunctionDeleter setter); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/OpTape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/OpTape.java new file mode 100644 index 00000000000..9cf5a736c0f --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/OpTape.java @@ -0,0 +1,38 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + +@Name("std::unordered_map >") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class OpTape extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public OpTape(Pointer p) { super(p); } + public OpTape() { allocate(); } + private native void allocate(); + public native @Name("operator =") @ByRef OpTape put(@ByRef OpTape x); + + public boolean empty() { return size() == 0; } + public native long size(); + + @Index public native @NoOffset @ByVal OpEntry get(@Cast("tensorflow::int64") long i); + public native OpTape put(@Cast("tensorflow::int64") long i, OpEntry value); + + public native @ByVal Iterator begin(); + public native @ByVal Iterator end(); + @NoOffset @Name("iterator") public static class Iterator extends Pointer { + public Iterator(Pointer p) { super(p); } + public Iterator() { } + + public native @Name("operator ++") @ByRef Iterator increment(); + public native @Name("operator ==") boolean equals(@ByRef Iterator it); + public native @Name("operator *().first") @MemberGetter @Cast("tensorflow::int64") long first(); + public native @Name("operator *().second") @MemberGetter @NoOffset @ByVal OpEntry second(); + } +} + diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Shape_inference_func_TF_ShapeInferenceContext_TF_Status.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Shape_inference_func_TF_ShapeInferenceContext_TF_Status.java index 56e99923a0b..d84d900214f 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Shape_inference_func_TF_ShapeInferenceContext_TF_Status.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Shape_inference_func_TF_ShapeInferenceContext_TF_Status.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StackFrame.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StackFrame.java new file mode 100644 index 00000000000..f7006ffc4b7 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StackFrame.java @@ -0,0 +1,38 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// A struct representing a frame in a stack trace. +@Namespace("tensorflow") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class StackFrame extends Pointer { + static { Loader.load(); } + /** Default native constructor. */ + public StackFrame() { super((Pointer)null); allocate(); } + /** Native array allocator. Access with {@link Pointer#position(long)}. */ + public StackFrame(long size) { super((Pointer)null); allocateArray(size); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public StackFrame(Pointer p) { super(p); } + private native void allocate(); + private native void allocateArray(long size); + @Override public StackFrame position(long position) { + return (StackFrame)super.position(position); + } + @Override public StackFrame getPointer(long i) { + return new StackFrame((Pointer)this).position(position + i); + } + + public native @StdString BytePointer file_name(); public native StackFrame file_name(BytePointer setter); + public native int line_number(); public native StackFrame line_number(int setter); + public native @StdString BytePointer function_name(); public native StackFrame function_name(BytePointer setter); + + public native @Cast("bool") @Name("operator ==") boolean equals(@Const @ByRef StackFrame other); + + public native @Cast("bool") @Name("operator !=") boolean notEquals(@Const @ByRef StackFrame other); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StackFrameVector.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StackFrameVector.java new file mode 100644 index 00000000000..b6579c4834d --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StackFrameVector.java @@ -0,0 +1,79 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + +@Name("std::vector") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class StackFrameVector extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public StackFrameVector(Pointer p) { super(p); } + public StackFrameVector(StackFrame value) { this(1); put(0, value); } + public StackFrameVector(StackFrame ... array) { this(array.length); put(array); } + public StackFrameVector() { allocate(); } + public StackFrameVector(long n) { allocate(n); } + private native void allocate(); + private native void allocate(@Cast("size_t") long n); + public native @Name("operator =") @ByRef StackFrameVector put(@ByRef @StdMove StackFrameVector x); + + public boolean empty() { return size() == 0; } + public native long size(); + public void clear() { resize(0); } + public native void resize(@Cast("size_t") long n); + + @Index(function = "at") public native @ByRef StackFrame get(@Cast("size_t") long i); + public native StackFrameVector put(@Cast("size_t") long i, StackFrame value); + + public native @ByVal Iterator insert(@ByVal Iterator pos, @ByRef StackFrame value); + public native @ByVal Iterator erase(@ByVal Iterator pos); + public native @ByVal Iterator begin(); + public native @ByVal Iterator end(); + @NoOffset @Name("iterator") public static class Iterator extends Pointer { + public Iterator(Pointer p) { super(p); } + public Iterator() { } + + public native @Name("operator ++") @ByRef Iterator increment(); + public native @Name("operator ==") boolean equals(@ByRef Iterator it); + public native @Name("operator *") @ByRef @Const StackFrame get(); + } + + public StackFrame[] get() { + StackFrame[] array = new StackFrame[size() < Integer.MAX_VALUE ? (int)size() : Integer.MAX_VALUE]; + for (int i = 0; i < array.length; i++) { + array[i] = get(i); + } + return array; + } + @Override public String toString() { + return java.util.Arrays.toString(get()); + } + + public StackFrame pop_back() { + long size = size(); + StackFrame value = get(size - 1); + resize(size - 1); + return value; + } + public StackFrameVector push_back(StackFrame value) { + long size = size(); + resize(size + 1); + return put(size, value); + } + public StackFrameVector put(StackFrame value) { + if (size() != 1) { resize(1); } + return put(0, value); + } + public StackFrameVector put(StackFrame ... array) { + if (size() != array.length) { resize(array.length); } + for (int i = 0; i < array.length; i++) { + put(i, array[i]); + } + return this; + } +} + diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Status.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Status.java new file mode 100644 index 00000000000..65391e014ca --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Status.java @@ -0,0 +1,127 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + +// #endif + +/** \ingroup core + * Denotes success or failure of a call in Tensorflow. */ +@Namespace("tensorflow") @NoOffset @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class Status extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public Status(Pointer p) { super(p); } + /** Native array allocator. Access with {@link Pointer#position(long)}. */ + public Status(long size) { super((Pointer)null); allocateArray(size); } + private native void allocateArray(long size); + @Override public Status position(long position) { + return (Status)super.position(position); + } + @Override public Status getPointer(long i) { + return new Status((Pointer)this).position(position + i); + } + + /** Create a success status. */ + public Status() { super((Pointer)null); allocate(); } + private native void allocate(); + + /** \brief Create a status with the specified error code and msg as a + * human-readable string containing more detailed information. */ + public Status(@Cast("tensorflow::error::Code") int code, @StdString BytePointer msg) { super((Pointer)null); allocate(code, msg); } + private native void allocate(@Cast("tensorflow::error::Code") int code, @StdString BytePointer msg); + public Status(@Cast("tensorflow::error::Code") int code, @StdString String msg) { super((Pointer)null); allocate(code, msg); } + private native void allocate(@Cast("tensorflow::error::Code") int code, @StdString String msg); + + /** \brief Create a status with the specified error code, msg, and stack trace + * as a human-readable string containing more detailed information. */ +// #ifndef SWIG + public Status(@Cast("tensorflow::error::Code") int code, @StdString BytePointer msg, + @StdMove StackFrameVector stack_trace) { super((Pointer)null); allocate(code, msg, stack_trace); } + private native void allocate(@Cast("tensorflow::error::Code") int code, @StdString BytePointer msg, + @StdMove StackFrameVector stack_trace); + public Status(@Cast("tensorflow::error::Code") int code, @StdString String msg, + @StdMove StackFrameVector stack_trace) { super((Pointer)null); allocate(code, msg, stack_trace); } + private native void allocate(@Cast("tensorflow::error::Code") int code, @StdString String msg, + @StdMove StackFrameVector stack_trace); +// #endif + + /** Copy the specified status. */ + public Status(@Const @ByRef Status s) { super((Pointer)null); allocate(s); } + private native void allocate(@Const @ByRef Status s); + public native @ByRef @Name("operator =") Status put(@Const @ByRef Status s); +// #ifndef SWIG +// #endif // SWIG + + public static native @ByVal Status OK(); + + /** Returns true iff the status indicates success. */ + public native @Cast("bool") boolean ok(); + + public native @Cast("tensorflow::error::Code") int code(); + + public native @StdString BytePointer error_message(); + + public native @StdMove StackFrameVector stack_trace(); + + public native @Cast("bool") @Name("operator ==") boolean equals(@Const @ByRef Status x); + + /// + public native @Cast("bool") @Name("operator !=") boolean notEquals(@Const @ByRef Status x); + + /** \brief If {@code ok()}, stores {@code new_status} into {@code *this}. If {@code !ok()}, + * preserves the current status, but may augment with additional + * information about {@code new_status}. + * + * Convenient way of keeping track of the first error encountered. + * Instead of: + * {@code if (overall_status.ok()) overall_status = new_status} + * Use: + * {@code overall_status.Update(new_status);} */ + public native void Update(@Const @ByRef Status new_status); + + /** \brief Return a string representation of this status suitable for + * printing. Returns the string {@code "OK"} for success. */ + public native @StdString BytePointer ToString(); + + // Ignores any errors. This method does nothing except potentially suppress + // complaints from any tools that are checking that errors are not dropped on + // the floor. + public native void IgnoreError(); + + // The Payload-related APIs are cloned from absl::Status. + // + // Returns the payload of a status given its unique `type_url` key, if + // present. Returns an empty StringPiece if the status is ok, or if the key is + // not present. + public native @ByVal @Cast("tensorflow::StringPiece*") PointerPointer GetPayload(@StdString BytePointer type_url); + public native @ByVal @Cast("tensorflow::StringPiece*") PointerPointer GetPayload(@StdString String type_url); + + // Sets the payload for a non-ok status using a `type_url` key, overwriting + // any existing payload for that `type_url`. + // + // This function does nothing if the Status is ok. + public native void SetPayload(@StdString BytePointer type_url, + @StdString BytePointer payload); + public native void SetPayload(@StdString String type_url, + @StdString String payload); + + // Erases the payload corresponding to the `type_url` key. Returns `true` if + // the payload was present. + public native @Cast("bool") boolean ErasePayload(@StdString BytePointer type_url); + public native @Cast("bool") boolean ErasePayload(@StdString String type_url); + + // Returns all the payload information. + // Returns an empty result if status is ok. + public native @Const @ByVal StringStringMap GetAllPayloads(); + + // Copies all the payloads using the input and discards existing payloads. + // Does nothing if status is ok or 'payloads' is empty. + public native void ReplaceAllPayloads( + @Const @ByRef StringStringMap payloads); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StatusGroup.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StatusGroup.java new file mode 100644 index 00000000000..aa82e03e25e --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StatusGroup.java @@ -0,0 +1,54 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// Helper class to manage multiple child status values. +@Namespace("tensorflow") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class StatusGroup extends Pointer { + static { Loader.load(); } + /** Default native constructor. */ + public StatusGroup() { super((Pointer)null); allocate(); } + /** Native array allocator. Access with {@link Pointer#position(long)}. */ + public StatusGroup(long size) { super((Pointer)null); allocateArray(size); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public StatusGroup(Pointer p) { super(p); } + private native void allocate(); + private native void allocateArray(long size); + @Override public StatusGroup position(long position) { + return (StatusGroup)super.position(position); + } + @Override public StatusGroup getPointer(long i) { + return new StatusGroup((Pointer)this).position(position + i); + } + + // Utility function to mark a Status as derived. By marking derived status, + // Derived status messages are ignored when reporting errors to end users. + public static native @ByVal Status MakeDerived(@Const @ByRef Status s); + public static native @Cast("bool") boolean IsDerived(@Const @ByRef Status s); + + // Enable warning and error log collection for appending to the aggregated + // status. This function may be called more than once. + public static native void ConfigureLogHistory(); + + // Return a merged status with combined child status messages with a summary. + public native @ByVal Status as_summary_status(); + // Return a merged status with combined child status messages with + // concatenation. + public native @ByVal Status as_concatenated_status(); + + public native @Cast("bool") boolean ok(); + + // Augment this group with the child status `status`. + public native void Update(@Const @ByRef Status status); + + // Attach recent warning and error log messages + public native void AttachLogMessages(); + public native @Cast("bool") boolean HasLogMessages(); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StringIntSetMap.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StringIntSetMap.java new file mode 100644 index 00000000000..57991b64c2a --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StringIntSetMap.java @@ -0,0 +1,38 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + +@Name("std::unordered_map >") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class StringIntSetMap extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public StringIntSetMap(Pointer p) { super(p); } + public StringIntSetMap() { allocate(); } + private native void allocate(); + public native @Name("operator =") @ByRef StringIntSetMap put(@ByRef StringIntSetMap x); + + public boolean empty() { return size() == 0; } + public native long size(); + + @Index public native @ByRef IntSet get(@StdString BytePointer i); + public native StringIntSetMap put(@StdString BytePointer i, IntSet value); + + public native @ByVal Iterator begin(); + public native @ByVal Iterator end(); + @NoOffset @Name("iterator") public static class Iterator extends Pointer { + public Iterator(Pointer p) { super(p); } + public Iterator() { } + + public native @Name("operator ++") @ByRef Iterator increment(); + public native @Name("operator ==") boolean equals(@ByRef Iterator it); + public native @Name("operator *().first") @MemberGetter @StdString BytePointer first(); + public native @Name("operator *().second") @MemberGetter @ByRef @Const IntSet second(); + } +} + diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StringStringMap.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StringStringMap.java new file mode 100644 index 00000000000..6304898c863 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/StringStringMap.java @@ -0,0 +1,39 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + +@Name("std::unordered_map") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class StringStringMap extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public StringStringMap(Pointer p) { super(p); } + public StringStringMap() { allocate(); } + private native void allocate(); + public native @Name("operator =") @ByRef StringStringMap put(@ByRef StringStringMap x); + + public boolean empty() { return size() == 0; } + public native long size(); + + @Index public native @StdString BytePointer get(@StdString BytePointer i); + public native StringStringMap put(@StdString BytePointer i, BytePointer value); + @ValueSetter @Index public native StringStringMap put(@StdString BytePointer i, @StdString String value); + + public native @ByVal Iterator begin(); + public native @ByVal Iterator end(); + @NoOffset @Name("iterator") public static class Iterator extends Pointer { + public Iterator(Pointer p) { super(p); } + public Iterator() { } + + public native @Name("operator ++") @ByRef Iterator increment(); + public native @Name("operator ==") boolean equals(@ByRef Iterator it); + public native @Name("operator *().first") @MemberGetter @StdString BytePointer first(); + public native @Name("operator *().second") @MemberGetter @StdString BytePointer second(); + } +} + diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_Context.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_Context.java index 886782d2e0b..c37ee036815 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_Context.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_Context.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_ContextOptions.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_ContextOptions.java index 7d986372863..5e460a4ece9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_ContextOptions.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_ContextOptions.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_Op.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_Op.java index b960617ab40..e303d3c8598 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_Op.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_Op.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_TensorDebugInfo.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_TensorDebugInfo.java index e42ebf581b8..c00a37567a5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_TensorDebugInfo.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_TensorDebugInfo.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_TensorHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_TensorHandle.java index 00fab08ff54..c2c860ac0ac 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_TensorHandle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TFE_TensorHandle.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_AllocatorAttributes.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_AllocatorAttributes.java index 4a7968111e1..82922a0e3e3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_AllocatorAttributes.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_AllocatorAttributes.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -26,7 +26,7 @@ public class TF_AllocatorAttributes extends Pointer { return (TF_AllocatorAttributes)super.position(position); } @Override public TF_AllocatorAttributes getPointer(long i) { - return new TF_AllocatorAttributes(this).position(position + i); + return new TF_AllocatorAttributes((Pointer)this).position(position + i); } public native @Cast("size_t") long struct_size(); public native TF_AllocatorAttributes struct_size(long setter); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ApiDefMap.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ApiDefMap.java index cfe167e125a..84a38a9e040 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ApiDefMap.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ApiDefMap.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_AttrMetadata.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_AttrMetadata.java index 50d82309003..636dc3df4f4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_AttrMetadata.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_AttrMetadata.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -25,7 +25,7 @@ public class TF_AttrMetadata extends Pointer { return (TF_AttrMetadata)super.position(position); } @Override public TF_AttrMetadata getPointer(long i) { - return new TF_AttrMetadata(this).position(position + i); + return new TF_AttrMetadata((Pointer)this).position(position + i); } // A boolean: 1 if the attribute value is a list, 0 otherwise. diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Buffer.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Buffer.java index a3d80f3b50e..b3eb39b09b6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Buffer.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Buffer.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -32,7 +32,7 @@ public class TF_Buffer extends org.tensorflow.internal.c_api.AbstractTF_Buffer { return (TF_Buffer)super.position(position); } @Override public TF_Buffer getPointer(long i) { - return new TF_Buffer(this).position(position + i); + return new TF_Buffer((Pointer)this).position(position + i); } public native @Const Pointer data(); public native TF_Buffer data(Pointer data); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_DeprecatedSession.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_DeprecatedSession.java index fdaab8327a9..381e491bd13 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_DeprecatedSession.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_DeprecatedSession.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_DeviceList.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_DeviceList.java index e56d93340c1..d4f35235d6e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_DeviceList.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_DeviceList.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_DimensionHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_DimensionHandle.java index 2eb78c52b75..3d266edaf6a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_DimensionHandle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_DimensionHandle.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Function.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Function.java index 829d1cede3c..487e3ac02a9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Function.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Function.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_FunctionOptions.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_FunctionOptions.java index 5610e784a6f..6277e4401a5 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_FunctionOptions.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_FunctionOptions.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Graph.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Graph.java index 0a287cd5642..98b85c15073 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Graph.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Graph.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ImportGraphDefOptions.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ImportGraphDefOptions.java index 442488d561d..0bb6ce1f1f6 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ImportGraphDefOptions.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ImportGraphDefOptions.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ImportGraphDefResults.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ImportGraphDefResults.java index ac800f534e1..6b36e75f711 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ImportGraphDefResults.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ImportGraphDefResults.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Input.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Input.java index aa03e503d3a..e93a447d717 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Input.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Input.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -25,7 +25,7 @@ public class TF_Input extends Pointer { return (TF_Input)super.position(position); } @Override public TF_Input getPointer(long i) { - return new TF_Input(this).position(position + i); + return new TF_Input((Pointer)this).position(position + i); } public native TF_Operation oper(); public native TF_Input oper(TF_Operation setter); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_KernelBuilder.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_KernelBuilder.java index 796bfa5aefc..fc6a85b9655 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_KernelBuilder.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_KernelBuilder.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Library.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Library.java index 128efd99025..5ff52a92f1c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Library.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Library.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OpDefinitionBuilder.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OpDefinitionBuilder.java index ef8a6b7d7f1..dd17a11295a 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OpDefinitionBuilder.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OpDefinitionBuilder.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OpKernelConstruction.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OpKernelConstruction.java index 6a984f2a25d..67774f95832 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OpKernelConstruction.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OpKernelConstruction.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OpKernelContext.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OpKernelContext.java index 9c145e89bdf..1881914eb08 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OpKernelContext.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OpKernelContext.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Operation.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Operation.java index 0cd1c90ecae..d4639998b96 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Operation.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Operation.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OperationDescription.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OperationDescription.java index 64a577c28de..76160ca75b7 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OperationDescription.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_OperationDescription.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Output.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Output.java index b990302d373..1b5046095f9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Output.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Output.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -25,7 +25,7 @@ public class TF_Output extends Pointer { return (TF_Output)super.position(position); } @Override public TF_Output getPointer(long i) { - return new TF_Output(this).position(position + i); + return new TF_Output((Pointer)this).position(position + i); } public native TF_Operation oper(); public native TF_Output oper(TF_Operation setter); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Server.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Server.java index c34d6dd2eab..1f941d44158 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Server.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Server.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Session.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Session.java index 10818f6b59f..6ff05ef101c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Session.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Session.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_SessionOptions.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_SessionOptions.java index c96017ab554..34e1440e4e4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_SessionOptions.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_SessionOptions.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ShapeHandle.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ShapeHandle.java index 7fc4dd37276..4a6ef7ccb58 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ShapeHandle.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ShapeHandle.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ShapeInferenceContext.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ShapeInferenceContext.java index 4d2bd0c7441..42ffb5b4c1c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ShapeInferenceContext.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_ShapeInferenceContext.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Status.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Status.java index 0ea4e3415c3..f8b83294749 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Status.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Status.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_StringView.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_StringView.java index 3300f6416b1..81fea1b8bfd 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_StringView.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_StringView.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -27,7 +27,7 @@ public class TF_StringView extends Pointer { return (TF_StringView)super.position(position); } @Override public TF_StringView getPointer(long i) { - return new TF_StringView(this).position(position + i); + return new TF_StringView((Pointer)this).position(position + i); } public native @Cast("const char*") BytePointer data(); public native TF_StringView data(BytePointer setter); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString.java index 1952ad9267d..eec4ebaae2e 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -24,7 +24,7 @@ public class TF_TString extends Pointer { return (TF_TString)super.position(position); } @Override public TF_TString getPointer(long i) { - return new TF_TString(this).position(position + i); + return new TF_TString((Pointer)this).position(position + i); } // NOLINT // small conflicts with '#define small char' in RpcNdr.h for MSVC, so we use diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Large.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Large.java index 2edcc0e3808..5aafe962503 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Large.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Large.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -24,7 +24,7 @@ public class TF_TString_Large extends Pointer { return (TF_TString_Large)super.position(position); } @Override public TF_TString_Large getPointer(long i) { - return new TF_TString_Large(this).position(position + i); + return new TF_TString_Large((Pointer)this).position(position + i); } // NOLINT public native @Cast("size_t") long size(); public native TF_TString_Large size(long setter); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Offset.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Offset.java index d46c62ec004..94e579559f8 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Offset.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Offset.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -24,7 +24,7 @@ public class TF_TString_Offset extends Pointer { return (TF_TString_Offset)super.position(position); } @Override public TF_TString_Offset getPointer(long i) { - return new TF_TString_Offset(this).position(position + i); + return new TF_TString_Offset((Pointer)this).position(position + i); } // NOLINT public native @Cast("uint32_t") int size(); public native TF_TString_Offset size(int setter); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Raw.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Raw.java index ffe3b6b087a..e204796baf3 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Raw.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Raw.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -24,7 +24,7 @@ public class TF_TString_Raw extends Pointer { return (TF_TString_Raw)super.position(position); } @Override public TF_TString_Raw getPointer(long i) { - return new TF_TString_Raw(this).position(position + i); + return new TF_TString_Raw((Pointer)this).position(position + i); } // NOLINT public native @Cast("uint8_t") byte raw(int i); public native TF_TString_Raw raw(int i, byte setter); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Small.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Small.java index 7ce9d5f9caf..7c30f0b4056 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Small.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Small.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -24,7 +24,7 @@ public class TF_TString_Small extends Pointer { return (TF_TString_Small)super.position(position); } @Override public TF_TString_Small getPointer(long i) { - return new TF_TString_Small(this).position(position + i); + return new TF_TString_Small((Pointer)this).position(position + i); } // NOLINT public native @Cast("uint8_t") byte size(); public native TF_TString_Small size(byte setter); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Union.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Union.java index ffa3cfeb5db..9f62596c8a4 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Union.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_Union.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -24,7 +24,7 @@ public class TF_TString_Union extends Pointer { return (TF_TString_Union)super.position(position); } @Override public TF_TString_Union getPointer(long i) { - return new TF_TString_Union(this).position(position + i); + return new TF_TString_Union((Pointer)this).position(position + i); } // NOLINT public native @ByRef TF_TString_Large large(); public native TF_TString_Union large(TF_TString_Large setter); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_View.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_View.java index bec84468a53..f2a59515ee9 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_View.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_TString_View.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; @@ -24,7 +24,7 @@ public class TF_TString_View extends Pointer { return (TF_TString_View)super.position(position); } @Override public TF_TString_View getPointer(long i) { - return new TF_TString_View(this).position(position + i); + return new TF_TString_View((Pointer)this).position(position + i); } // NOLINT public native @Cast("size_t") long size(); public native TF_TString_View size(long setter); diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Tensor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Tensor.java index d96c2757dc6..f7364f0f28c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Tensor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_Tensor.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_WhileParams.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_WhileParams.java index 4c6dc486d52..8d761ae9f5c 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_WhileParams.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TF_WhileParams.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Tape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Tape.java new file mode 100644 index 00000000000..f9d40ed8fe7 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Tape.java @@ -0,0 +1,105 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// Traces the execution of operations, doing eager garbage collection, and +// exporting a full trace so other code can do backpropagation. Not thread-safe. +@Name("tensorflow::eager::GradientTape") @NoOffset @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class Tape extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public Tape(Pointer p) { super(p); } + + // If `persistent` is true, GradientTape will not eagerly delete backward + // functions (and hence the tensors they keep alive). Instead, everything + // is deleted in ~GradientTape. Persistent GradientTapes are useful when + // users want to compute multiple gradients over the same tape. + public Tape(@Cast("bool") boolean persistent) { super((Pointer)null); allocate(persistent); } + private native void allocate(@Cast("bool") boolean persistent); + + // Returns whether any tensor in a list of tensors is being watched and has + // a trainable dtype. + public native @Cast("bool") boolean ShouldRecord(@Cast("tensorflow::int64*") @Span LongPointer tensor_ids, + @Cast("tensorflow::DataType*") @Span IntPointer dtypes); + public native @Cast("bool") boolean ShouldRecord(@Cast("tensorflow::int64*") @Span LongBuffer tensor_ids, + @Cast("tensorflow::DataType*") @Span IntBuffer dtypes); + public native @Cast("bool") boolean ShouldRecord(@Cast("tensorflow::int64*") @Span long[] tensor_ids, + @Cast("tensorflow::DataType*") @Span int[] dtypes); + + // Adds this tensor to the list of watched tensors. + // + // This is a no-op if the tensor is already being watched either from an + // earlier call to `GradientTape::Watch` or being an output of an op with + // watched inputs. + public native void Watch(@Cast("tensorflow::int64") long tensor_id); + + // Records an operation with inputs `input_tensor_id` and outputs + // `output_tensors` on the tape and marks all its outputs as watched if at + // least one input of the op is watched and has trainable dtype. + // + // op_type is used to decide which of the incoming gradients can be left as + // nullptr instead of building zeros when build_default_zeros_grads == true. + public native void RecordOperation( + @StdString BytePointer op_type, @StdVector TapeTensor output_tensors, + @Cast("tensorflow::int64*") @Span LongPointer input_tensor_id, + @Cast("tensorflow::DataType*") @Span IntPointer input_dtypes, + @Const @ByRef GradientFunctionGetter backward_function_getter, + @Const @ByRef GradientFunctionDeleter backward_function_deleter); + public native void RecordOperation( + @StdString String op_type, @StdVector TapeTensor output_tensors, + @Cast("tensorflow::int64*") @Span LongBuffer input_tensor_id, + @Cast("tensorflow::DataType*") @Span IntBuffer input_dtypes, + @Const @ByRef GradientFunctionGetter backward_function_getter, + @Const @ByRef GradientFunctionDeleter backward_function_deleter); + public native void RecordOperation( + @StdString BytePointer op_type, @StdVector TapeTensor output_tensors, + @Cast("tensorflow::int64*") @Span long[] input_tensor_id, + @Cast("tensorflow::DataType*") @Span int[] input_dtypes, + @Const @ByRef GradientFunctionGetter backward_function_getter, + @Const @ByRef GradientFunctionDeleter backward_function_deleter); + public native void RecordOperation( + @StdString String op_type, @StdVector TapeTensor output_tensors, + @Cast("tensorflow::int64*") @Span LongPointer input_tensor_id, + @Cast("tensorflow::DataType*") @Span IntPointer input_dtypes, + @Const @ByRef GradientFunctionGetter backward_function_getter, + @Const @ByRef GradientFunctionDeleter backward_function_deleter); + public native void RecordOperation( + @StdString BytePointer op_type, @StdVector TapeTensor output_tensors, + @Cast("tensorflow::int64*") @Span LongBuffer input_tensor_id, + @Cast("tensorflow::DataType*") @Span IntBuffer input_dtypes, + @Const @ByRef GradientFunctionGetter backward_function_getter, + @Const @ByRef GradientFunctionDeleter backward_function_deleter); + public native void RecordOperation( + @StdString String op_type, @StdVector TapeTensor output_tensors, + @Cast("tensorflow::int64*") @Span long[] input_tensor_id, + @Cast("tensorflow::DataType*") @Span int[] input_dtypes, + @Const @ByRef GradientFunctionGetter backward_function_getter, + @Const @ByRef GradientFunctionDeleter backward_function_deleter); + + public native void DeleteTrace(@Cast("tensorflow::int64") long tensor_id); + + // Consumes the internal state of the tape (so cannot be called more than + // once) and produces the gradient of the target tensors with respect to the + // source tensors. The output gradients are used if not empty and not + // null. The result is populated with one tensor per target element. + // When running backward functions, builds zeros-like tensors for + // incoming grads which are nullptrs, unless `build_default_zeros_grads` + // is set to false. + public native @ByVal Status ComputeGradient( + @Const @ByRef TapeVSpace vspace, + @Cast("tensorflow::int64*") @Span LongPointer target_tensor_ids, + @Cast("tensorflow::int64*") @Span LongPointer source_tensor_ids, + @Const @ByRef LongTapeTensorMap sources_that_are_targets, + @Cast("tensorflow::AbstractTensorHandle**") @Span PointerPointer output_gradients, + @Cast("tensorflow::AbstractTensorHandle**") @Span PointerPointer result, @Cast("bool") boolean build_default_zeros_grads/*=true*/); + + // Whether the tape is persistent. See ctor for detailed description. + public native @Cast("bool") boolean IsPersistent(); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TapeTensor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TapeTensor.java new file mode 100644 index 00000000000..28a4ad71f0a --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TapeTensor.java @@ -0,0 +1,48 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// TODO(srbs): Figure out if we can avoid declaring this in the public header. +// Wrapper for a tensor output of an operation executing under a tape. +// +// `GetID` returns a unique id for the wrapped tensor which is used to maintain +// a map (`tensorflow::eager::TensorTape`) from the wrapped tensor to the id of +// the op that produced it (or -1 if this tensor was watched using +// `GradientTape::Watch`.) The op_id is simply a unique index assigned to each +// op executed under the tape. A separate map (`tensorflow::eager::OpTape`) +// maintains the map from `op_id` to a `OpTapeEntry` which stores the `op_type`, +// inputs and outputs and the gradient function These data structures combined +// allow us to trace the data dependencies between operations and hence compute +// gradients. +// +// `ZerosLike` is not expected to be called and returns a nullptr. The creation +// of default zeros grads is handled by the `DefaultGradientFunction` registered +// for each op. +// TODO(srbs): We need to define `ZerosLike` here to keep the compiler happy. +// Figure out a way to avoid this. +// TODO(srbs): Should ZerosLike check-fail instead of returning nullptr? +@Namespace("tensorflow::gradients") @NoOffset @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class TapeTensor extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public TapeTensor(Pointer p) { super(p); } + + public TapeTensor(AbstractTensorHandle handle) { super((Pointer)null); allocate(handle); } + private native void allocate(AbstractTensorHandle handle); + public TapeTensor(@Const @ByRef TapeTensor other) { super((Pointer)null); allocate(other); } + private native void allocate(@Const @ByRef TapeTensor other); + + public native @Cast("tensorflow::int64") long GetID(); + public native @Cast("tensorflow::DataType") int GetDType(); + + public native AbstractTensorHandle ZerosLike(); + + public native AbstractTensorHandle GetHandle(); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TapeVSpace.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TapeVSpace.java new file mode 100644 index 00000000000..32398800644 --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TapeVSpace.java @@ -0,0 +1,72 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + + +// Operations the tape needs to perform on tensors to do backpropagation. Named +// "vspace" because a subset of these are related to a vector space, such as +// adding gradients, getting zeroes, etc. Currently cannot be implemented +// without using tensorflow python code, hence left unspecified here. +// +// Gradient is the type returned by gradient functions. In Python TF it's either +// Tensor or IndexedSlices or None, which here we map to nullptr. Gradients need +// to allow their size to be computed and they need to be passable to a backward +// function and deleted (as the backprop code creates lots of gradients the user +// is not interested in). +// +// BackwardFunction needs to be a closure which stores intermediate activations +// from the forward computation and calls a vector-jacobian product function +// (also known as adjoint function) to compute, given downstream gradients, +// upstream gradients. +// +// TODO(apassos) provide concrete template instantiations for TFE_TensorHandle +// specialization, which is blocked by quite a few things needing to loop back +// into python now. +@Name("tensorflow::eager::VSpace") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class TapeVSpace extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public TapeVSpace(Pointer p) { super(p); } + + + // Returns the number of elements in the gradient tensor. + public native @Cast("tensorflow::int64") long NumElements(AbstractTensorHandle tensor); + + // Consumes references to the tensors in the gradient_tensors list and returns + // a tensor with the result. + public native AbstractTensorHandle AggregateGradients( + @Cast("tensorflow::AbstractTensorHandle**") @Span PointerPointer gradient_tensors); + + // Calls the passed-in backward function. + // + // `unneeded_gradients` contains sorted list of input indices for which a + // gradient is not required. + public native @ByVal Status CallBackwardFunction( + @StdString String op_type, GradientFunction backward_function, + @Cast("tensorflow::int64*") @StdVector LongPointer unneeded_gradients, + @Cast("tensorflow::AbstractTensorHandle**") @Span PointerPointer output_gradients, + @Cast("tensorflow::AbstractTensorHandle**") @Span PointerPointer result); + + // Builds a tensor filled with ones with the same shape and dtype as `t`. + public native @ByVal Status BuildOnesLike(@Const @ByRef TapeTensor t, + @Cast("tensorflow::AbstractTensorHandle**") PointerPointer result); + + // Looks up the ID of a Gradient. + public native @Cast("tensorflow::int64") long TensorId(AbstractTensorHandle tensor); + + // Converts a Gradient to a TapeTensor. + public native @ByVal TapeTensor TapeTensorFromGradient(AbstractTensorHandle gradient); + + // Marks the following gradient as a result so it's not consumed by backward + // functions. + public native void MarkAsResult(AbstractTensorHandle gradient); + + // Deletes the input tensor. + public native void DeleteGradient(AbstractTensorHandle gradient); +} diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Tensor.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Tensor.java index 0a9efa65762..c11153e5e49 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Tensor.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/Tensor.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api; diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TensorTape.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TensorTape.java new file mode 100644 index 00000000000..d339dc3ce7b --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/TensorTape.java @@ -0,0 +1,38 @@ +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE + +package org.tensorflow.internal.c_api; + +import java.nio.*; +import org.bytedeco.javacpp.*; +import org.bytedeco.javacpp.annotation.*; + +import static org.tensorflow.internal.c_api.global.tensorflow.*; + +@Name("std::unordered_map") @Properties(inherit = org.tensorflow.internal.c_api.presets.tensorflow.class) +public class TensorTape extends Pointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public TensorTape(Pointer p) { super(p); } + public TensorTape() { allocate(); } + private native void allocate(); + public native @Name("operator =") @ByRef TensorTape put(@ByRef TensorTape x); + + public boolean empty() { return size() == 0; } + public native long size(); + + @Index public native @Cast("tensorflow::int64") long get(@Cast("tensorflow::int64") long i); + public native TensorTape put(@Cast("tensorflow::int64") long i, long value); + + public native @ByVal Iterator begin(); + public native @ByVal Iterator end(); + @NoOffset @Name("iterator") public static class Iterator extends Pointer { + public Iterator(Pointer p) { super(p); } + public Iterator() { } + + public native @Name("operator ++") @ByRef Iterator increment(); + public native @Name("operator ==") boolean equals(@ByRef Iterator it); + public native @Name("operator *().first") @MemberGetter @Cast("tensorflow::int64") long first(); + public native @Name("operator *().second") @MemberGetter @Cast("tensorflow::int64") long second(); + } +} + diff --git a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/global/tensorflow.java b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/global/tensorflow.java index b345ab4dad2..2756329ca86 100644 --- a/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/global/tensorflow.java +++ b/tensorflow-core/tensorflow-core-api/src/gen/java/org/tensorflow/internal/c_api/global/tensorflow.java @@ -1,4 +1,4 @@ -// Targeted by JavaCPP version 1.5.4: DO NOT EDIT THIS FILE +// Targeted by JavaCPP version 1.5.5: DO NOT EDIT THIS FILE package org.tensorflow.internal.c_api.global; @@ -11,6 +11,27 @@ public class tensorflow extends org.tensorflow.internal.c_api.presets.tensorflow { static { Loader.load(); } +// Targeting ../StackFrameVector.java + + +// Targeting ../LongTapeTensorMap.java + + +// Targeting ../StringStringMap.java + + +// Targeting ../StringIntSetMap.java + + +// Targeting ../TensorTape.java + + +// Targeting ../OpTape.java + + +// Targeting ../IntSet.java + + // Parsed from tensorflow/core/platform/ctstring_internal.h /* Copyright 2019 The TensorFlow Authors. All Rights Reserved. @@ -4739,4 +4760,660 @@ public static native void TFE_ContextExportRunMetadata(TFE_Context ctx, // #endif // TENSORFLOW_C_EAGER_C_API_H_ +// Parsed from tensorflow_adapters.h + +/* + Copyright 2021 The TensorFlow Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ======================================================================= + */ + +// #include "absl/types/span.h" + + + +// Parsed from tensorflow/core/platform/stack_frame.h + +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +// #ifndef TENSORFLOW_CORE_PLATFORM_STACK_TRACE_H_ +// #define TENSORFLOW_CORE_PLATFORM_STACK_TRACE_H_ + +// #include +// Targeting ../StackFrame.java + + + + // namespace tensorflow + +// #endif // TENSORFLOW_CORE_PLATFORM_STACK_TRACE_H_ + + +// Parsed from tensorflow/core/platform/errors.h + +/* Copyright 2015 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +// #ifndef TENSORFLOW_CORE_PLATFORM_ERRORS_H_ +// #define TENSORFLOW_CORE_PLATFORM_ERRORS_H_ + +// #include + +// #include "absl/strings/str_join.h" +// #include "tensorflow/core/platform/status.h" +// #include "tensorflow/core/platform/logging.h" +// #include "tensorflow/core/platform/macros.h" +// #include "tensorflow/core/platform/str_util.h" +// #include "tensorflow/core/platform/strcat.h" + +// The DECLARE_ERROR macro below only supports types that can be converted +// into StrCat's AlphaNum. For the other types we rely on a slower path +// through std::stringstream. To add support of a new type, it is enough to +// make sure there is an operator<<() for it: +// +// std::ostream& operator<<(std::ostream& os, const MyType& foo) { +// os << foo.ToString(); +// return os; +// } +// Eventually absl::strings will have native support for this and we will be +// able to completely remove PrepareForStrCat(). + + + + // namespace internal + +// Append some context to an error message. Each time we append +// context put it on a new line, since it is possible for there +// to be several layers of additional context. + +// For propagating errors when calling a function. +// #define TF_RETURN_IF_ERROR(...) +// do { +// ::tensorflow::Status _status = (__VA_ARGS__); +// if (TF_PREDICT_FALSE(!_status.ok())) return _status; +// } while (0) + +// #define TF_RETURN_WITH_CONTEXT_IF_ERROR(expr, ...) +// do { +// ::tensorflow::Status _status = (expr); +// if (TF_PREDICT_FALSE(!_status.ok())) { +// ::tensorflow::errors::AppendToMessage(&_status, __VA_ARGS__); +// return _status; +// } +// } while (0) + +// Convenience functions for generating and using error status. +// Example usage: +// status.Update(errors::InvalidArgument("The ", foo, " isn't right.")); +// if (errors::IsInvalidArgument(status)) { ... } +// switch (status.code()) { case error::INVALID_ARGUMENT: ... } + +// #define DECLARE_ERROR(FUNC, CONST) +// template +// ::tensorflow::Status FUNC(Args... args) { +// return ::tensorflow::Status( +// ::tensorflow::error::CONST, +// ::tensorflow::strings::StrCat( +// ::tensorflow::errors::internal::PrepareForStrCat(args)...)); +// } +// inline bool Is##FUNC(const ::tensorflow::Status& status) { +// return status.code() == ::tensorflow::error::CONST; +// } + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsCancelled(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsInvalidArgument(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsNotFound(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsAlreadyExists(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsResourceExhausted(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsUnavailable(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsFailedPrecondition(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsOutOfRange(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsUnimplemented(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsInternal(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsAborted(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsDeadlineExceeded(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsDataLoss(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsUnknown(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsPermissionDenied(@Const @ByRef Status status); + @Namespace("tensorflow::errors") public static native @Cast("bool") boolean IsUnauthenticated(@Const @ByRef Status status); + +// #undef DECLARE_ERROR + +// Produces a formatted string pattern from the name which can uniquely identify +// this node upstream to produce an informative error message. The pattern +// followed is: {{node }} +// Note: The pattern below determines the regex _NODEDEF_NAME_RE in the file +// tensorflow/python/client/session.py +// LINT.IfChange +@Namespace("tensorflow::errors") public static native @StdString BytePointer FormatNodeNameForError(@StdString BytePointer name); +@Namespace("tensorflow::errors") public static native @StdString String FormatNodeNameForError(@StdString String name); +// LINT.ThenChange(//tensorflow/python/client/session.py) +// LINT.IfChange +@Namespace("tensorflow::errors") public static native @StdString BytePointer FormatColocationNodeForError(@StdString BytePointer name); +@Namespace("tensorflow::errors") public static native @StdString String FormatColocationNodeForError(@StdString String name); +// LINT.ThenChange(//tensorflow/python/framework/error_interpolation.py) + +@Namespace("tensorflow::errors") public static native @StdString BytePointer FormatFunctionForError(@StdString BytePointer name); +@Namespace("tensorflow::errors") public static native @StdString String FormatFunctionForError(@StdString String name); + +// The CanonicalCode() for non-errors. + + // namespace errors + // namespace tensorflow + +// #endif // TENSORFLOW_CORE_PLATFORM_ERRORS_H_ + + +// Parsed from tensorflow/core/platform/status.h + +/* Copyright 2015 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +// #ifndef TENSORFLOW_CORE_PLATFORM_STATUS_H_ +// #define TENSORFLOW_CORE_PLATFORM_STATUS_H_ + +// #include +// #include +// #include +// #include +// #include + +// #include "tensorflow/core/platform/logging.h" +// #include "tensorflow/core/platform/macros.h" +// #include "tensorflow/core/platform/stack_frame.h" +// #include "tensorflow/core/platform/stringpiece.h" +// #include "tensorflow/core/platform/types.h" +// #include "tensorflow/core/protobuf/error_codes.pb.h" + +// #if defined(__clang__) +// Only clang supports warn_unused_result as a type annotation. +// Targeting ../Status.java + + +// Targeting ../StatusGroup.java + + + + + + + +// #ifndef SWIG + + + +// #endif // SWIG + + + + + +/** \ingroup core */ +@Namespace("tensorflow") public static native @Cast("std::ostream*") @ByRef @Name("operator <<") Pointer shiftLeft(@Cast("std::ostream*") @ByRef Pointer os, @Const @ByRef Status x); + +@Namespace("tensorflow") public static native @StdString BytePointer TfCheckOpHelperOutOfLine( + @Const @ByRef Status v, @Cast("const char*") BytePointer msg); +@Namespace("tensorflow") public static native @StdString BytePointer TfCheckOpHelperOutOfLine( + @Const @ByRef Status v, String msg); + +@Namespace("tensorflow") public static native @StdString BytePointer TfCheckOpHelper(@ByVal Status v, + @Cast("const char*") BytePointer msg); +@Namespace("tensorflow") public static native @StdString BytePointer TfCheckOpHelper(@ByVal Status v, + String msg); + +// #define TF_DO_CHECK_OK(val, level) +// while (auto _result = ::tensorflow::TfCheckOpHelper(val, #val)) +// LOG(level) << *(_result) + +// #define TF_CHECK_OK(val) TF_DO_CHECK_OK(val, FATAL) +// #define TF_QCHECK_OK(val) TF_DO_CHECK_OK(val, QFATAL) + +// DEBUG only version of TF_CHECK_OK. Compiler still parses 'val' even in opt +// mode. +// #ifndef NDEBUG +// #define TF_DCHECK_OK(val) TF_CHECK_OK(val) +// #else +// #define TF_DCHECK_OK(val) +// while (false && (::tensorflow::Status::OK() == (val))) LOG(FATAL) +// #endif + + // namespace tensorflow + +// #endif // TENSORFLOW_CORE_PLATFORM_STATUS_H_ + + +// Parsed from tensorflow/c/tensor_interface.h + +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +// #ifndef TENSORFLOW_C_TENSOR_INTERFACE_H_ +// #define TENSORFLOW_C_TENSOR_INTERFACE_H_ + +// #include "tensorflow/core/framework/types.pb.h" +// #include "tensorflow/core/platform/status.h" +// Targeting ../AbstractTensorInterface.java + + +// Targeting ../AbstractTensorInterfaceDeleter.java + + + // namespace internal + + // namespace tensorflow + +// #endif // TENSORFLOW_C_TENSOR_INTERFACE_H_ + + +// Parsed from tensorflow/c/eager/abstract_tensor_handle.h + +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ +// #ifndef TENSORFLOW_C_EAGER_ABSTRACT_TENSOR_HANDLE_H_ +// #define TENSORFLOW_C_EAGER_ABSTRACT_TENSOR_HANDLE_H_ + +// #include + +// #include "tensorflow/core/framework/tensor_shape.h" +// #include "tensorflow/core/framework/types.pb.h" +// #include "tensorflow/core/platform/refcount.h" +// #include "tensorflow/core/platform/status.h" +// Targeting ../AbstractTensorHandle.java + + +// Targeting ../AbstractTensorHandleDeleter.java + + + // namespace internal + + // namespace tensorflow + +// #endif // TENSORFLOW_C_EAGER_ABSTRACT_TENSOR_HANDLE_H_ + + +// Parsed from tensorflow/c/eager/abstract_function.h + +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ +// #ifndef TENSORFLOW_C_EAGER_ABSTRACT_FUNCTION_H_ +// #define TENSORFLOW_C_EAGER_ABSTRACT_FUNCTION_H_ + +// #include "tensorflow/core/framework/function.pb.h" +// #include "tensorflow/core/platform/status.h" +// Targeting ../AbstractFunction.java + + + + // namespace tensorflow + +// #endif // TENSORFLOW_C_EAGER_ABSTRACT_FUNCTION_H_ + + +// Parsed from tensorflow/c/eager/abstract_operation.h + +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ +// #ifndef TENSORFLOW_C_EAGER_ABSTRACT_OPERATION_H_ +// #define TENSORFLOW_C_EAGER_ABSTRACT_OPERATION_H_ + +// #include + +// #include "absl/types/span.h" +// #include "tensorflow/c/eager/abstract_tensor_handle.h" +// #include "tensorflow/c/tensor_interface.h" +// #include "tensorflow/core/framework/types.pb.h" +// #include "tensorflow/core/platform/status.h" +// Targeting ../AbstractOperation.java + + +// Targeting ../AbstractOperationDeleter.java + + + // namespace internal + + // namespace tensorflow + +// #endif // TENSORFLOW_C_EAGER_ABSTRACT_OPERATION_H_ + + +// Parsed from tensorflow/c/eager/abstract_context.h + +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ +// #ifndef TENSORFLOW_C_EAGER_ABSTRACT_CONTEXT_H_ +// #define TENSORFLOW_C_EAGER_ABSTRACT_CONTEXT_H_ + +// #include + +// #include "tensorflow/c/eager/abstract_function.h" +// #include "tensorflow/c/eager/abstract_operation.h" +// Targeting ../AbstractContext.java + + +// Targeting ../AbstractContextDeleter.java + + + // namespace internal + + // namespace tensorflow + +// #endif // TENSORFLOW_C_EAGER_ABSTRACT_CONTEXT_H_ + + +// Parsed from tensorflow/c/eager/tape.h + +/* Copyright 2017 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ +// #ifndef TENSORFLOW_C_EAGER_TAPE_H_ +// #define TENSORFLOW_C_EAGER_TAPE_H_ + +// Language-agnostic gradient tape. Does not perform backpropagation, just +// maintains the data structures required to do so. + +// #include +// #include +// #include +// #include + +// #include "tensorflow/core/framework/tensor_shape.h" +// #include "tensorflow/core/framework/types.h" +// #include "tensorflow/core/lib/gtl/array_slice.h" +// #include "tensorflow/core/lib/gtl/cleanup.h" +// #include "tensorflow/core/lib/gtl/flatmap.h" +// #include "tensorflow/core/lib/gtl/flatset.h" +// #include "tensorflow/core/platform/errors.h" +// #include "tensorflow/core/platform/types.h" +// Targeting ../OpEntry.java + + + +// Map from tensor_id to internally-defined operation-id of the operation which +// produced this tensor. A value of -1 means that the tensor was directly +// watched and not the result of any operation in the tape. + +// Map from operation-id to tape entry. +// Targeting ../TapeVSpace.java + + +// Targeting ../Tape.java + + + +// Describes a callback for special-cased and more efficient jvp computation. +// +// Could just be a simple typedef in ForwardAccumulator, but MSVC chokes on +// that. + +// Computes Jacobian-vector products using forward-mode automatic +// differentiation. +// +// While GradientTape's RecordOperation is trivial, ForwardAccumulator's +// Accumulate runs the gradient computation immediately. +// +// Keeps references to Tensors watched via Watch and computed in Accumulate +// corresponding to output_tensors, and releases these references in its +// destructor. However, waiting until the destructor runs loses the memory +// efficiency of forward-mode autodiff. Instead, language bindings should call +// DeleteGradient as soon as a Tensor which was `Watch`ed or was an output +// Tensor passed to Accumulate goes out of scope. +// +// Not thread-safe. + +// Template instantiations here + +@Namespace("tensorflow::eager") public static native @Cast("bool") boolean IsDtypeTrainable(@Cast("tensorflow::DataType") int dtype); + + + + + + + + + +// Terminology: +// +// - op: a possibly composite operation, which has an entry in the tape +// - target: dy in dx/dy +// - source: dx in dx/dy +// - tensor: one of the many inputs or outputs of an operation +// +// Below here we do the gradient algorithm. It works as follows: +// +// First we filter the tape to just the subset of operations we want to +// differentiate. In the process of doing so we count how many times each Tensor +// is used as an input to an op (so we know when we're done computing gradients +// for that Tensor). We also count, for each tape entry, how many of its output +// Tensors need gradients to be computed (Tensors which are not used do not need +// any gradients to be computed). +// +// Finally, we start a backprop stack with a set of tape entries for which we +// have all gradients available. This set usually is a subset of the set of +// targets (not all since targets which have outputs in the tape will not have +// gradients available initially). +// +// Then we repeatedly pop an entry from the stack, run its backprop, and update +// the gradients of its inputs. Once we have computed all gradients for a single +// input we can mark this input as done, and this can trigger adding an entry to +// the stack if all outputs of that entry are now done. +// +// When the stack is empty we have gradients for all tensors we're interested +// in. + +// If `persistent_tape` is true, op_tape is not changed and none of the +// backwards functions are deleted. +// If `persistent_tape` is false, op_tape is cleared and backwards functions +// not needed for gradient computation are deleted. Backwards functions that +// are needed, are copied and returned in BackpropInitialState. + +// TODO(agarwal): use an automatic mechanism for handling None arguments to +// gradient functions. +// +// Some gradient functions can accept None arguments for gradients. The +// following maps the operation name to the indices at which the corresponding +// gradient function can accept None values. e.g. FusedBatchNorm outputs 5 +// values and hence receives 5 gradient values during backprop. However the +// gradient function uses only the first of those values and ignores the rest. +// The entry, "FusedBatchNorm": [1, 2, 3, 4], indicates that only the gradient +// corresponding to index 0 is used, and the gradient values at indices 1-4 are +// ignored (and hence can be None). The backprop algorithm can then leverage +// this by not constructing zeros to pass for those indices. +@Namespace("tensorflow::eager") public static native StringIntSetMap FunctionsAcceptingNoneForIndicesMap(); + + // namespace + +// If over kMinAggregateCount gradients are accumulated and the total +// memory consumption is over kMinAggregateBytes, do an early aggregation +// so as to release the gradient tensor to save memory. +@Namespace("tensorflow::eager") @MemberGetter public static native int kMinAggregateCount(); +@Namespace("tensorflow::eager") @MemberGetter public static native int kMinAggregateBytes(); + + + + + + + + + + + + + + + + // namespace eager + // namespace tensorflow + +// #endif // TENSORFLOW_C_EAGER_TAPE_H_ + + +// Parsed from tensorflow/c/eager/gradients.h + +/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +==============================================================================*/ + +// #ifndef TENSORFLOW_C_EAGER_GRADIENTS_H_ +// #define TENSORFLOW_C_EAGER_GRADIENTS_H_ + +// #include "absl/container/flat_hash_map.h" +// #include "tensorflow/c/eager/abstract_context.h" +// #include "tensorflow/c/eager/abstract_tensor_handle.h" +// #include "tensorflow/c/eager/tape.h" +// #include "tensorflow/core/common_runtime/eager/attr_builder.h" +// Targeting ../GradientFunction.java + + +// Targeting ../ForwardOperation.java + + +// Targeting ../GradientRegistry.java + + +// Targeting ../TapeTensor.java + + + +// A tracing/immediate-execution agnostic tape. +// +// Gradient functions defined for this tape must support handling null incoming +// gradients. + + // namespace gradients + // namespace tensorflow + +// #endif // TENSORFLOW_C_EAGER_GRADIENTS_H_ + + } diff --git a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/internal/c_api/presets/tensorflow.java b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/internal/c_api/presets/tensorflow.java index 6cb3be62eb7..350d1b4a76c 100644 --- a/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/internal/c_api/presets/tensorflow.java +++ b/tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/internal/c_api/presets/tensorflow.java @@ -1,24 +1,36 @@ -/* Copyright 2019-2021 The TensorFlow Authors. All Rights Reserved. +/* + Copyright 2019 The TensorFlow Authors. All Rights Reserved. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ======================================================================= + */ -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -======================================================================= -*/ package org.tensorflow.internal.c_api.presets; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; import java.util.List; import org.bytedeco.javacpp.ClassProperties; +import org.bytedeco.javacpp.FunctionPointer; import org.bytedeco.javacpp.LoadEnabled; import org.bytedeco.javacpp.Loader; +import org.bytedeco.javacpp.Pointer; +import org.bytedeco.javacpp.annotation.Adapter; +import org.bytedeco.javacpp.annotation.ByRef; +import org.bytedeco.javacpp.annotation.Cast; import org.bytedeco.javacpp.annotation.NoException; import org.bytedeco.javacpp.annotation.Platform; import org.bytedeco.javacpp.annotation.Properties; @@ -26,365 +38,336 @@ import org.bytedeco.javacpp.tools.InfoMap; import org.bytedeco.javacpp.tools.InfoMapper; -/** @author Samuel Audet */ +/** + * + * @author Samuel Audet + */ @Properties( value = { - @Platform( - value = {"linux", "macosx", "windows"}, - compiler = "cpp11", - include = { - "tensorflow/core/platform/ctstring_internal.h", - "tensorflow/core/platform/ctstring.h", - "tensorflow/core/util/port.h", - "tensorflow/c/tf_attrtype.h", - "tensorflow/c/c_api_macros.h", - "tensorflow/c/tf_datatype.h", - "tensorflow/c/tf_status.h", - "tensorflow/c/tf_tensor.h", - "tensorflow/c/tf_tstring.h", - "tensorflow/c/c_api.h", - // "tensorflow/c/env.h", - "tensorflow/c/kernels.h", - "tensorflow/c/ops.h", - "tensorflow/c/eager/c_api.h" - }, - link = "tensorflow_cc@.2", - preload = {"iomp5", "mklml", "mklml_intel", "tensorflow_framework@.2"}, - preloadresource = "/org/bytedeco/mkldnn/", - resource = {"LICENSE", "THIRD_PARTY_TF_JNI_LICENSES"}), - @Platform( - value = "windows", - preload = { - "api-ms-win-crt-locale-l1-1-0", - "api-ms-win-crt-string-l1-1-0", - "api-ms-win-crt-stdio-l1-1-0", - "api-ms-win-crt-math-l1-1-0", - "api-ms-win-crt-heap-l1-1-0", - "api-ms-win-crt-runtime-l1-1-0", - "api-ms-win-crt-convert-l1-1-0", - "api-ms-win-crt-environment-l1-1-0", - "api-ms-win-crt-time-l1-1-0", - "api-ms-win-crt-filesystem-l1-1-0", - "api-ms-win-crt-utility-l1-1-0", - "api-ms-win-crt-multibyte-l1-1-0", - "api-ms-win-core-string-l1-1-0", - "api-ms-win-core-errorhandling-l1-1-0", - "api-ms-win-core-timezone-l1-1-0", - "api-ms-win-core-file-l1-1-0", - "api-ms-win-core-namedpipe-l1-1-0", - "api-ms-win-core-handle-l1-1-0", - "api-ms-win-core-file-l2-1-0", - "api-ms-win-core-heap-l1-1-0", - "api-ms-win-core-libraryloader-l1-1-0", - "api-ms-win-core-synch-l1-1-0", - "api-ms-win-core-processthreads-l1-1-0", - "api-ms-win-core-processenvironment-l1-1-0", - "api-ms-win-core-datetime-l1-1-0", - "api-ms-win-core-localization-l1-2-0", - "api-ms-win-core-sysinfo-l1-1-0", - "api-ms-win-core-synch-l1-2-0", - "api-ms-win-core-console-l1-1-0", - "api-ms-win-core-debug-l1-1-0", - "api-ms-win-core-rtlsupport-l1-1-0", - "api-ms-win-core-processthreads-l1-1-1", - "api-ms-win-core-file-l1-2-0", - "api-ms-win-core-profile-l1-1-0", - "api-ms-win-core-memory-l1-1-0", - "api-ms-win-core-util-l1-1-0", - "api-ms-win-core-interlocked-l1-1-0", - "ucrtbase", - "vcruntime140", - "vcruntime140_1", - "msvcp140", - "concrt140", - "vcomp140", - "msvcr120", - "libiomp5md", - "mklml", - "tensorflow_framework" - }), - @Platform( - value = "windows-x86", - preloadpath = { - "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/redist/x86/Microsoft.VC140.CRT/", - "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/redist/x86/Microsoft.VC140.OpenMP/", - "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/x86/" - }), - @Platform( - value = "windows-x86_64", - preloadpath = { - "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/redist/x64/Microsoft.VC140.CRT/", - "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/redist/x64/Microsoft.VC140.OpenMP/", - "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/x64/" - }), - @Platform( - value = {"linux", "macosx", "windows"}, - extension = {"-mkl", "-gpu", "-mkl-gpu"}) + @Platform( + value = {"linux", "macosx", "windows"}, + compiler = "cpp14", + define = {"NDEBUG", "UNIQUE_PTR_NAMESPACE std", "SHARED_PTR_NAMESPACE std"}, + include = { + "tensorflow/core/platform/ctstring_internal.h", + "tensorflow/core/platform/ctstring.h", + "tensorflow/core/util/port.h", + "tensorflow/c/tf_attrtype.h", + "tensorflow/c/c_api_macros.h", + "tensorflow/c/tf_datatype.h", + "tensorflow/c/tf_status.h", + "tensorflow/c/tf_tensor.h", + "tensorflow/c/tf_tstring.h", + "tensorflow/c/c_api.h", +// "tensorflow/c/env.h", +// "tensorflow/c/experimental/stream_executor/stream_executor.h", + "tensorflow/c/kernels.h", + "tensorflow/c/ops.h", + "tensorflow/c/eager/c_api.h", + "tensorflow_adapters.h", +// "tensorflow/core/common_runtime/eager/attr_builder.h", +// "tensorflow/core/framework/types.pb.h", +// "tensorflow/core/framework/function.pb.h", +// "tensorflow/core/framework/tensor_shape.h", +// "tensorflow/core/framework/types.h", +// "tensorflow/core/protobuf/error_codes.pb.h", +// "tensorflow/core/platform/logging.h", +// "tensorflow/core/platform/macros.h", +// "tensorflow/core/platform/stringpiece.h", + "tensorflow/core/platform/stack_frame.h", + "tensorflow/core/platform/errors.h", + "tensorflow/core/platform/status.h", +// "tensorflow/core/platform/refcount.h", +// "tensorflow/core/platform/types.h", + "tensorflow/c/tensor_interface.h", + "tensorflow/c/eager/abstract_tensor_handle.h", + "tensorflow/c/eager/abstract_function.h", + "tensorflow/c/eager/abstract_operation.h", + "tensorflow/c/eager/abstract_context.h", + "tensorflow/c/eager/tape.h", + "tensorflow/c/eager/gradients.h", + }, + link = "tensorflow_cc@.2", + preload = {"iomp5", "mklml", "mklml_intel", "tensorflow_framework@.2"}, + preloadresource = "/org/bytedeco/mkldnn/", + resource = {"LICENSE", "THIRD_PARTY_TF_JNI_LICENSES"} + ), + @Platform( + value = "windows", + preload = { + "api-ms-win-crt-locale-l1-1-0", "api-ms-win-crt-string-l1-1-0", "api-ms-win-crt-stdio-l1-1-0", "api-ms-win-crt-math-l1-1-0", + "api-ms-win-crt-heap-l1-1-0", "api-ms-win-crt-runtime-l1-1-0", "api-ms-win-crt-convert-l1-1-0", "api-ms-win-crt-environment-l1-1-0", + "api-ms-win-crt-time-l1-1-0", "api-ms-win-crt-filesystem-l1-1-0", "api-ms-win-crt-utility-l1-1-0", "api-ms-win-crt-multibyte-l1-1-0", + "api-ms-win-core-string-l1-1-0", "api-ms-win-core-errorhandling-l1-1-0", "api-ms-win-core-timezone-l1-1-0", "api-ms-win-core-file-l1-1-0", + "api-ms-win-core-namedpipe-l1-1-0", "api-ms-win-core-handle-l1-1-0", "api-ms-win-core-file-l2-1-0", "api-ms-win-core-heap-l1-1-0", + "api-ms-win-core-libraryloader-l1-1-0", "api-ms-win-core-synch-l1-1-0", "api-ms-win-core-processthreads-l1-1-0", + "api-ms-win-core-processenvironment-l1-1-0", "api-ms-win-core-datetime-l1-1-0", "api-ms-win-core-localization-l1-2-0", + "api-ms-win-core-sysinfo-l1-1-0", "api-ms-win-core-synch-l1-2-0", "api-ms-win-core-console-l1-1-0", "api-ms-win-core-debug-l1-1-0", + "api-ms-win-core-rtlsupport-l1-1-0", "api-ms-win-core-processthreads-l1-1-1", "api-ms-win-core-file-l1-2-0", "api-ms-win-core-profile-l1-1-0", + "api-ms-win-core-memory-l1-1-0", "api-ms-win-core-util-l1-1-0", "api-ms-win-core-interlocked-l1-1-0", "ucrtbase", + "vcruntime140", "vcruntime140_1", "msvcp140", "concrt140", "vcomp140", "msvcr120", "libiomp5md", "mklml", "tensorflow_framework" + } + ), + @Platform( + value = "windows-x86", + preloadpath = { + "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/redist/x86/Microsoft.VC140.CRT/", + "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/redist/x86/Microsoft.VC140.OpenMP/", + "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/x86/" + } + ), + @Platform( + value = "windows-x86_64", + preloadpath = { + "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/redist/x64/Microsoft.VC140.CRT/", + "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/redist/x64/Microsoft.VC140.OpenMP/", + "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/x64/" + } + ), + @Platform( + value = {"linux", "macosx", "windows"}, + extension = {"-mkl", "-gpu", "-mkl-gpu"} + ) }, target = "org.tensorflow.internal.c_api", global = "org.tensorflow.internal.c_api.global.tensorflow") @NoException public class tensorflow implements LoadEnabled, InfoMapper { - @Override - public void init(ClassProperties properties) { - String platform = properties.getProperty("platform"); - String extension = properties.getProperty("platform.extension"); - List preloads = properties.get("platform.preload"); - List resources = properties.get("platform.preloadresource"); - List preloadpaths = properties.get("platform.preloadpath"); + @Override public void init(ClassProperties properties) { + String platform = properties.getProperty("platform"); + String extension = properties.getProperty("platform.extension"); + List preloads = properties.get("platform.preload"); + List resources = properties.get("platform.preloadresource"); + List preloadpaths = properties.get("platform.preloadpath"); - String vcredistdir = System.getenv("VCToolsRedistDir"); - if (vcredistdir != null && vcredistdir.length() > 0) { - switch (platform) { - case "windows-x86": - preloadpaths.add(0, vcredistdir + "\\x86\\Microsoft.VC142.CRT"); - preloadpaths.add(1, vcredistdir + "\\x86\\Microsoft.VC142.OpenMP"); - preloadpaths.add(2, vcredistdir + "\\x86\\Microsoft.VC141.CRT"); - preloadpaths.add(3, vcredistdir + "\\x86\\Microsoft.VC141.OpenMP"); - break; - case "windows-x86_64": - preloadpaths.add(0, vcredistdir + "\\x64\\Microsoft.VC142.CRT"); - preloadpaths.add(1, vcredistdir + "\\x64\\Microsoft.VC142.OpenMP"); - preloadpaths.add(2, vcredistdir + "\\x64\\Microsoft.VC141.CRT"); - preloadpaths.add(3, vcredistdir + "\\x64\\Microsoft.VC141.OpenMP"); - break; - default: - // not Windows - } - } + String vcredistdir = System.getenv("VCToolsRedistDir"); + if (vcredistdir != null && vcredistdir.length() > 0) { + switch (platform) { + case "windows-x86": + preloadpaths.add(0, vcredistdir + "\\x86\\Microsoft.VC142.CRT"); + preloadpaths.add(1, vcredistdir + "\\x86\\Microsoft.VC142.OpenMP"); + preloadpaths.add(2, vcredistdir + "\\x86\\Microsoft.VC141.CRT"); + preloadpaths.add(3, vcredistdir + "\\x86\\Microsoft.VC141.OpenMP"); + break; + case "windows-x86_64": + preloadpaths.add(0, vcredistdir + "\\x64\\Microsoft.VC142.CRT"); + preloadpaths.add(1, vcredistdir + "\\x64\\Microsoft.VC142.OpenMP"); + preloadpaths.add(2, vcredistdir + "\\x64\\Microsoft.VC141.CRT"); + preloadpaths.add(3, vcredistdir + "\\x64\\Microsoft.VC141.OpenMP"); + break; + default: + // not Windows + } + } - // Only apply this at load time - if (!Loader.isLoadLibraries()) { - return; - } + // Only apply this at load time + if (!Loader.isLoadLibraries()) { + return; + } - // Let users enable loading of the full version of MKL - String load = - System.getProperty( - "org.bytedeco.openblas.load", System.getProperty("org.bytedeco.mklml.load", "")) - .toLowerCase(); + // Let users enable loading of the full version of MKL + String load = System.getProperty("org.bytedeco.openblas.load", + System.getProperty("org.bytedeco.mklml.load", "")).toLowerCase(); - int i = 0; - if (load.equals("mkl") || load.equals("mkl_rt")) { - String[] libs = { - "iomp5", - "libiomp5md", - "mkl_core", - "mkl_avx", - "mkl_avx2", - "mkl_avx512", - "mkl_avx512_mic", - "mkl_def", - "mkl_mc", - "mkl_mc3", - "mkl_intel_lp64", - "mkl_intel_thread", - "mkl_gnu_thread", - "mkl_rt" - }; - for (i = 0; i < libs.length; i++) { - preloads.add(i, libs[i] + "#" + libs[i]); - } - load = "mkl_rt"; - resources.add("/org/bytedeco/mkl/"); - } + int i = 0; + if (load.equals("mkl") || load.equals("mkl_rt")) { + String[] libs = {"iomp5", "libiomp5md", "mkl_core", "mkl_avx", "mkl_avx2", "mkl_avx512", "mkl_avx512_mic", + "mkl_def", "mkl_mc", "mkl_mc3", "mkl_intel_lp64", "mkl_intel_thread", "mkl_gnu_thread", "mkl_rt"}; + for (i = 0; i < libs.length; i++) { + preloads.add(i, libs[i] + "#" + libs[i]); + } + load = "mkl_rt"; + resources.add("/org/bytedeco/mkl/"); + } + + if (load.length() > 0) { + if (platform.startsWith("linux")) { + preloads.add(i, load + "#mklml_intel"); + } else if (platform.startsWith("macosx")) { + preloads.add(i, load + "#mklml"); + } else if (platform.startsWith("windows")) { + preloads.add(i, load + "#mklml"); + } + } - if (load.length() > 0) { - if (platform.startsWith("linux")) { - preloads.add(i, load + "#mklml_intel"); - } else if (platform.startsWith("macosx")) { - preloads.add(i, load + "#mklml"); - } else if (platform.startsWith("windows")) { - preloads.add(i, load + "#mklml"); - } + // Only apply this at load time since we don't want to copy the CUDA libraries here + if (!Loader.isLoadLibraries() || extension == null || !extension.endsWith("-gpu")) { + return; + } + String[] libs = {"cudart", "cublasLt", "cublas", "cufft", "curand", "cusolver", "cusparse", "cudnn", "nccl", "nvrtc", "myelin", "nvinfer", + "cudnn_ops_infer", "cudnn_ops_train", "cudnn_adv_infer", "cudnn_adv_train", "cudnn_cnn_infer", "cudnn_cnn_train"}; + for (String lib : libs) { + if (platform.startsWith("linux")) { + lib += lib.startsWith("cudnn") ? "@.8" + : lib.equals("nccl") ? "@.2" + : lib.equals("myelin") ? "@.1" + : lib.equals("nvinfer") ? "@.7" + : lib.equals("cufft") || lib.equals("curand") || lib.equals("cusolver") ? "@.10" + : lib.equals("cudart") ? "@.11.0" + : lib.equals("nvrtc") ? "@.11.0" + : "@.11"; + } else if (platform.startsWith("windows")) { + lib += lib.startsWith("cudnn") ? "64_8" + : lib.equals("nccl") ? "64_2" + : lib.equals("myelin") ? "64_1" + : lib.equals("nvinfer") ? "64_7" + : lib.equals("cufft") || lib.equals("curand") || lib.equals("cusolver") ? "64_10" + : lib.equals("cudart") ? "64_110" + : lib.equals("nvrtc") ? "64_110_0" + : "64_11"; + } else { + continue; // no CUDA + } + if (!preloads.contains(lib)) { + preloads.add(i++, lib); + } + } + if (i > 0) { + resources.add("/org/bytedeco/cuda/"); + resources.add("/org/bytedeco/tensorrt/"); + } } - // Only apply this at load time since we don't want to copy the CUDA libraries here - if (!Loader.isLoadLibraries() || extension == null || !extension.endsWith("-gpu")) { - return; + public void map(InfoMap infoMap) { + infoMap.put(new Info("TF_CAPI_EXPORT", "TF_Bool", "TF_MUST_USE_RESULT").cppTypes().annotations()) + .put(new Info("TF_Buffer::data").javaText("public native @Const Pointer data(); public native TF_Buffer data(Pointer data);")) + .put(new Info("TF_Status").pointerTypes("TF_Status").base("org.tensorflow.internal.c_api.AbstractTF_Status")) + .put(new Info("TF_Buffer").pointerTypes("TF_Buffer").base("org.tensorflow.internal.c_api.AbstractTF_Buffer")) + .put(new Info("TF_Tensor").pointerTypes("TF_Tensor").base("org.tensorflow.internal.c_api.AbstractTF_Tensor")) + .put(new Info("TF_Session").pointerTypes("TF_Session").base("org.tensorflow.internal.c_api.AbstractTF_Session")) + .put(new Info("TF_SessionOptions").pointerTypes("TF_SessionOptions").base("org.tensorflow.internal.c_api.AbstractTF_SessionOptions")) + .put(new Info("TF_Graph").pointerTypes("TF_Graph").base("org.tensorflow.internal.c_api.AbstractTF_Graph")) + .put(new Info("TF_Graph::graph").javaText("public native @MemberGetter @ByRef Graph graph();")) + .put(new Info("TF_Graph::refiner").javaText("public native @MemberGetter @ByRef ShapeRefiner refiner();")) + .put(new Info("TF_Function").pointerTypes("TF_Function").base("org.tensorflow.internal.c_api.AbstractTF_Function")) + .put(new Info("TF_ImportGraphDefOptions").pointerTypes("TF_ImportGraphDefOptions").base("org.tensorflow.internal.c_api.AbstractTF_ImportGraphDefOptions")) + .put(new Info("TF_Operation", "TF_WhileParams", "TFE_MonitoringCounterCell", "TFE_MonitoringSamplerCell", + "TFE_MonitoringCounter0", "TFE_MonitoringCounter1", "TFE_MonitoringCounter2", + "TFE_MonitoringIntGaugeCell", "TFE_MonitoringStringGaugeCell", "TFE_MonitoringBoolGaugeCell", + "TFE_MonitoringIntGauge0", "TFE_MonitoringIntGauge1", "TFE_MonitoringIntGauge2", + "TFE_MonitoringStringGauge0", "TFE_MonitoringStringGauge1", "TFE_MonitoringStringGauge2", + "TFE_MonitoringBoolGauge0", "TFE_MonitoringBoolGauge1", "TFE_MonitoringBoolGauge2", + "TFE_MonitoringSampler0", "TFE_MonitoringSampler1", "TFE_MonitoringSampler2").purify()) + .put(new Info("TF_Operation::node").javaText("public native @MemberGetter @ByRef Node node();")) + .put(new Info("TFE_MonitoringCounterCell::cell").javaText("public native @MemberGetter @ByRef CounterCell cell();")) + .put(new Info("TFE_MonitoringSamplerCell::cell").javaText("public native @MemberGetter @ByRef SamplerCell cell();")) + .put(new Info("TFE_MonitoringIntGaugeCell::cell").javaText("public native @MemberGetter @ByRef IntGaugeCell cell();")) + .put(new Info("TFE_MonitoringStringGaugeCell::cell").javaText("public native @MemberGetter @ByRef StringGaugeCell cell();")) + .put(new Info("TFE_MonitoringBoolGaugeCell::cell").javaText("public native @MemberGetter @ByRef BoolGaugeCell cell();")) + .put(new Info("TFE_Context").pointerTypes("TFE_Context").base("org.tensorflow.internal.c_api.AbstractTFE_Context")) + .put(new Info("TFE_ContextOptions").pointerTypes("TFE_ContextOptions").base("org.tensorflow.internal.c_api.AbstractTFE_ContextOptions")) + .put(new Info("TFE_Context::context").javaText("@MemberGetter public native @ByRef EagerContext context();")) + .put(new Info("TFE_Op").pointerTypes("TFE_Op").base("org.tensorflow.internal.c_api.AbstractTFE_Op")) + .put(new Info("TFE_Op::operation").javaText("@MemberGetter public native @ByRef EagerOperation operation();")) + .put(new Info("TFE_TensorHandle").pointerTypes("TFE_TensorHandle").base("org.tensorflow.internal.c_api.AbstractTFE_TensorHandle")) + .put(new Info("TF_ShapeInferenceContextDimValueKnown", "TFE_NewTensorHandle(const tensorflow::Tensor&, TF_Status*)", + "TF_InitKernel", "tensorflow::errors::internal::PrepareForStrCat").skip()) + + .put(new Info("absl::Span", "tensorflow::gtl::ArraySlice").annotations("@Span")) + .put(new Info("std::unordered_set").pointerTypes("IntSet").define()) + .put(new Info("std::unordered_map").pointerTypes("StringStringMap").define()) + .put(new Info("std::unordered_map >").pointerTypes("StringIntSetMap").define()) + .put(new Info("std::unordered_map").pointerTypes("TensorTape").define()) + .put(new Info("const std::unordered_map").pointerTypes("LongTapeTensorMap").define()) + .put(new Info("std::unordered_map >").pointerTypes("OpTape").define()) + .put(new Info("std::vector").valueTypes("@StdMove StackFrameVector").pointerTypes("StackFrameVector").define()) + .put(new Info("tensorflow::error::Code", "tensorflow::DataType").cast().valueTypes("int").pointerTypes("IntPointer", "IntBuffer", "int[]")) + .put(new Info("tensorflow::AbstractTensorHandle::AbstractTensorHandleKind", + "tensorflow::AbstractFunction::AbstractFunctionKind", + "tensorflow::AbstractOperation::AbstractOperationKind", + "tensorflow::AbstractContext::AbstractContextKind").valueTypes("int").pointerTypes("IntPointer", "IntBuffer", "int[]")) + .put(new Info("tensorflow::int64").cast().valueTypes("long").pointerTypes("LongPointer", "LongBuffer", "long[]")) + .put(new Info("tensorflow::string", "absl::string_view", "tensorflow::StringPiece").annotations("@StdString").valueTypes("BytePointer", "String").pointerTypes("BytePointer")) + .put(new Info("SP_Stream", "tensorflow::AttrBuilder", "tensorflow::FunctionDef", "tensorflow::core::RefCounted", "tensorflow::PartialTensorShape").cast().pointerTypes("Pointer")) + + .put(new Info("tensorflow::Status::GetPayload").javaText( + "public native @ByVal @Cast(\"tensorflow::StringPiece*\") PointerPointer GetPayload(@StdString BytePointer type_url);\n" + + "public native @ByVal @Cast(\"tensorflow::StringPiece*\") PointerPointer GetPayload(@StdString String type_url);")) + + .put(new Info("tensorflow::AbstractOperation::AddInputList").javaText( + "public native @ByVal Status AddInputList(\n" + + " @Cast(\"tensorflow::AbstractTensorHandle**\") @Span PointerPointer inputs);")) + .put(new Info("tensorflow::AbstractOperation::Execute").javaText( + "public native @ByVal Status Execute(@Cast(\"tensorflow::AbstractTensorHandle**\") @Span PointerPointer retvals,\n" + + " IntPointer num_retvals);")) + .put(new Info("tensorflow::AbstractOperation::SetAttrFunctionList").javaText( + "public native @ByVal Status SetAttrFunctionList(\n" + + " @Cast(\"const char*\") BytePointer attr_name, @Cast(\"const tensorflow::AbstractOperation**\") @Span PointerPointer values);")) + + .put(new Info("tensorflow::gradients::ForwardOperation").immutable()) + .put(new Info("tensorflow::gradients::GradientFunction").virtualize()) + .put(new Info("tensorflow::gradients::GradientFunction::Compute").javaText( + "@Virtual(true) public native @ByVal Status Compute(AbstractContext ctx,\n" + + " @Cast({\"tensorflow::AbstractTensorHandle* const*\", \"absl::Span\"}) @Span PointerPointer grad_outputs,\n" + + " @Cast({\"tensorflow::AbstractTensorHandle**\", \"absl::Span\"}) @Span PointerPointer grad_inputs);")) + + .put(new Info("tensorflow::eager::OpTapeEntry").annotations("@NoOffset").valueTypes("@ByVal OpEntry").pointerTypes("OpEntry")) + .put(new Info("tensorflow::eager::OpTapeEntry::backward_function_deleter").javaText( + "public native @ByRef @Cast(\"std::function*\") Pointer backward_function_deleter(); public native OpEntry backward_function_deleter(Pointer setter);\n" + + "public native @MemberSetter OpEntry backward_function_deleter(GradientFunctionDeleter setter);")) + + .put(new Info("tensorflow::eager::VSpace").pointerTypes("TapeVSpace")) + .put(new Info("tensorflow::eager::VSpace::AggregateGradients", + "tensorflow::gradients::TapeVSpace::AggregateGradients").javaText( + "public native AbstractTensorHandle AggregateGradients(\n" + + " @Cast(\"tensorflow::AbstractTensorHandle**\") @Span PointerPointer gradient_tensors);")) + .put(new Info("tensorflow::eager::VSpace::CallBackwardFunction", + "tensorflow::gradients::TapeVSpace::CallBackwardFunction").javaText( + "public native @ByVal Status CallBackwardFunction(\n" + + " @StdString String op_type, GradientFunction backward_function,\n" + + " @Cast(\"tensorflow::int64*\") @StdVector LongPointer unneeded_gradients,\n" + + " @Cast(\"tensorflow::AbstractTensorHandle**\") @Span PointerPointer output_gradients,\n" + + " @Cast(\"tensorflow::AbstractTensorHandle**\") @Span PointerPointer result);")) + .put(new Info("tensorflow::eager::VSpace::BuildOnesLike", + "tensorflow::gradients::TapeVSpace::BuildOnesLike").javaText( + "public native @ByVal Status BuildOnesLike(@Const @ByRef TapeTensor t,\n" + + " @Cast(\"tensorflow::AbstractTensorHandle**\") PointerPointer result);")) + + .put(new Info("tensorflow::eager::GradientTape").pointerTypes("Tape")) + .put(new Info("tensorflow::eager::GradientTape::ComputeGradient").javaText( + "public native @ByVal Status ComputeGradient(\n" + + " @Const @ByRef TapeVSpace vspace,\n" + + " @Cast(\"tensorflow::int64*\") @Span LongPointer target_tensor_ids,\n" + + " @Cast(\"tensorflow::int64*\") @Span LongPointer source_tensor_ids,\n" + + " @Const @ByRef LongTapeTensorMap sources_that_are_targets,\n" + + " @Cast(\"tensorflow::AbstractTensorHandle**\") @Span PointerPointer output_gradients,\n" + + " @Cast(\"tensorflow::AbstractTensorHandle**\") @Span PointerPointer result, @Cast(\"bool\") boolean build_default_zeros_grads/*=true*/);")) + + .put(new Info("std::function").pointerTypes("GradientFunctionFactory")) + .put(new Info("std::function").pointerTypes("GradientFunctionGetter")) + .put(new Info("std::function").pointerTypes("GradientFunctionDeleter")); } - String[] libs = { - "cudart", - "cublasLt", - "cublas", - "cufft", - "curand", - "cusolver", - "cusparse", - "cudnn", - "nccl", - "nvrtc", - "myelin", - "nvinfer", - "cudnn_ops_infer", - "cudnn_ops_train", - "cudnn_adv_infer", - "cudnn_adv_train", - "cudnn_cnn_infer", - "cudnn_cnn_train" - }; - for (String lib : libs) { - if (platform.startsWith("linux")) { - lib += - lib.startsWith("cudnn") - ? "@.8" - : lib.equals("nccl") - ? "@.2" - : lib.equals("myelin") - ? "@.1" - : lib.equals("nvinfer") - ? "@.7" - : lib.equals("cufft") || lib.equals("curand") || lib.equals("cusolver") - ? "@.10" - : lib.equals("cudart") - ? "@.11.0" - : lib.equals("nvrtc") ? "@.11.0" : "@.11"; - } else if (platform.startsWith("windows")) { - lib += - lib.startsWith("cudnn") - ? "64_8" - : lib.equals("nccl") - ? "64_2" - : lib.equals("myelin") - ? "64_1" - : lib.equals("nvinfer") - ? "64_7" - : lib.equals("cufft") || lib.equals("curand") || lib.equals("cusolver") - ? "64_10" - : lib.equals("cudart") - ? "64_110" - : lib.equals("nvrtc") ? "64_110_0" : "64_11"; - } else { - continue; // no CUDA - } - if (!preloads.contains(lib)) { - preloads.add(i++, lib); - } + + @Documented @Retention(RetentionPolicy.RUNTIME) + @Target({ElementType.METHOD, ElementType.PARAMETER}) + @Cast({"absl::Span", "&"}) @Adapter("SpanAdapter") + public @interface Span { String value() default ""; } + + public static class GradientFunctionFactory extends FunctionPointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public GradientFunctionFactory(Pointer p) { super(p); } + protected GradientFunctionFactory() { allocate(); } + private native void allocate(); + public native @Cast("tensorflow::gradients::GradientFunction*") Pointer call(@ByRef @Cast("const tensorflow::gradients::ForwardOperation*") Pointer op); } - if (i > 0) { - resources.add("/org/bytedeco/cuda/"); - resources.add("/org/bytedeco/tensorrt/"); + + public static class GradientFunctionGetter extends FunctionPointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public GradientFunctionGetter(Pointer p) { super(p); } + protected GradientFunctionGetter() { allocate(); } + private native void allocate(); + public native @Cast("tensorflow::gradients::GradientFunction*") Pointer call(); } - } - @Override - public void map(InfoMap infoMap) { - infoMap - .put(new Info("TF_CAPI_EXPORT", "TF_Bool").cppTypes().annotations()) - .put( - new Info("TF_Buffer::data") - .javaText( - "public native @Const Pointer data(); public native TF_Buffer data(Pointer data);")) - .put( - new Info("TF_Status") - .pointerTypes("TF_Status") - .base("org.tensorflow.internal.c_api.AbstractTF_Status")) - .put( - new Info("TF_Buffer") - .pointerTypes("TF_Buffer") - .base("org.tensorflow.internal.c_api.AbstractTF_Buffer")) - .put( - new Info("TF_Tensor") - .pointerTypes("TF_Tensor") - .base("org.tensorflow.internal.c_api.AbstractTF_Tensor")) - .put( - new Info("TF_Session") - .pointerTypes("TF_Session") - .base("org.tensorflow.internal.c_api.AbstractTF_Session")) - .put( - new Info("TF_SessionOptions") - .pointerTypes("TF_SessionOptions") - .base("org.tensorflow.internal.c_api.AbstractTF_SessionOptions")) - .put( - new Info("TF_Graph") - .pointerTypes("TF_Graph") - .base("org.tensorflow.internal.c_api.AbstractTF_Graph")) - .put( - new Info("TF_Graph::graph") - .javaText("public native @MemberGetter @ByRef Graph graph();")) - .put( - new Info("TF_Graph::refiner") - .javaText("public native @MemberGetter @ByRef ShapeRefiner refiner();")) - .put( - new Info("TF_Function") - .pointerTypes("TF_Function") - .base("org.tensorflow.internal.c_api.AbstractTF_Function")) - .put( - new Info("TF_ImportGraphDefOptions") - .pointerTypes("TF_ImportGraphDefOptions") - .base("org.tensorflow.internal.c_api.AbstractTF_ImportGraphDefOptions")) - .put( - new Info( - "TF_Operation", - "TF_WhileParams", - "TFE_MonitoringCounterCell", - "TFE_MonitoringSamplerCell", - "TFE_MonitoringCounter0", - "TFE_MonitoringCounter1", - "TFE_MonitoringCounter2", - "TFE_MonitoringIntGaugeCell", - "TFE_MonitoringStringGaugeCell", - "TFE_MonitoringBoolGaugeCell", - "TFE_MonitoringIntGauge0", - "TFE_MonitoringIntGauge1", - "TFE_MonitoringIntGauge2", - "TFE_MonitoringStringGauge0", - "TFE_MonitoringStringGauge1", - "TFE_MonitoringStringGauge2", - "TFE_MonitoringBoolGauge0", - "TFE_MonitoringBoolGauge1", - "TFE_MonitoringBoolGauge2", - "TFE_MonitoringSampler0", - "TFE_MonitoringSampler1", - "TFE_MonitoringSampler2") - .purify()) - .put( - new Info("TF_Operation::node") - .javaText("public native @MemberGetter @ByRef Node node();")) - .put( - new Info("TFE_MonitoringCounterCell::cell") - .javaText("public native @MemberGetter @ByRef CounterCell cell();")) - .put( - new Info("TFE_MonitoringSamplerCell::cell") - .javaText("public native @MemberGetter @ByRef SamplerCell cell();")) - .put( - new Info("TFE_MonitoringIntGaugeCell::cell") - .javaText("public native @MemberGetter @ByRef IntGaugeCell cell();")) - .put( - new Info("TFE_MonitoringStringGaugeCell::cell") - .javaText("public native @MemberGetter @ByRef StringGaugeCell cell();")) - .put( - new Info("TFE_MonitoringBoolGaugeCell::cell") - .javaText("public native @MemberGetter @ByRef BoolGaugeCell cell();")) - .put( - new Info("TFE_Context") - .pointerTypes("TFE_Context") - .base("org.tensorflow.internal.c_api.AbstractTFE_Context")) - .put( - new Info("TFE_ContextOptions") - .pointerTypes("TFE_ContextOptions") - .base("org.tensorflow.internal.c_api.AbstractTFE_ContextOptions")) - .put( - new Info("TFE_Context::context") - .javaText("@MemberGetter public native @ByRef EagerContext context();")) - .put( - new Info("TFE_Op") - .pointerTypes("TFE_Op") - .base("org.tensorflow.internal.c_api.AbstractTFE_Op")) - .put( - new Info("TFE_Op::operation") - .javaText("@MemberGetter public native @ByRef EagerOperation operation();")) - .put( - new Info("TFE_TensorHandle") - .pointerTypes("TFE_TensorHandle") - .base("org.tensorflow.internal.c_api.AbstractTFE_TensorHandle")) - .put(new Info("SP_Stream").cast().pointerTypes("Pointer")) - .put( - new Info( - "TF_ShapeInferenceContextDimValueKnown", - "TFE_NewTensorHandle(const tensorflow::Tensor&, TF_Status*)", - "TF_InitKernel") - .skip()); - } + public static class GradientFunctionDeleter extends FunctionPointer { + static { Loader.load(); } + /** Pointer cast constructor. Invokes {@link Pointer#Pointer(Pointer)}. */ + public GradientFunctionDeleter(Pointer p) { super(p); } + protected GradientFunctionDeleter() { allocate(); } + private native void allocate(); + public native void call(@Cast("tensorflow::gradients::GradientFunction*") Pointer op); + } } diff --git a/tensorflow-core/tensorflow-core-api/src/main/resources/org/tensorflow/internal/c_api/include/tensorflow_adapters.h b/tensorflow-core/tensorflow-core-api/src/main/resources/org/tensorflow/internal/c_api/include/tensorflow_adapters.h new file mode 100644 index 00000000000..a3035ddb5db --- /dev/null +++ b/tensorflow-core/tensorflow-core-api/src/main/resources/org/tensorflow/internal/c_api/include/tensorflow_adapters.h @@ -0,0 +1,47 @@ +/* + Copyright 2021 The TensorFlow Authors. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ======================================================================= + */ + +#include "absl/types/span.h" + +using namespace absl; + +template class SpanAdapter { +public: + SpanAdapter(T const * ptr, typename Span::size_type size, void* owner) : ptr((T*)ptr), size(size), owner(owner), + arr2(ptr ? Span((T*)ptr, size) : Span()), arr(arr2) { } + SpanAdapter(const Span& arr) : ptr(0), size(0), owner(0), arr2(arr), arr(arr2) { } + SpanAdapter( Span& arr) : ptr(0), size(0), owner(0), arr(arr) { } + SpanAdapter(const Span* arr) : ptr(0), size(0), owner(0), arr(*(Span*)arr) { } + void assign(void** ptr, typename Span::size_type size, void* owner) { assign((T*)ptr, size, owner); } + void assign(T* ptr, typename Span::size_type size, void* owner) { + this->ptr = ptr; + this->size = size; + this->owner = owner; + arr = Span(ptr, size); + } + static void deallocate(void* owner) { free(owner); } + operator void**() { size = arr.size(); return (void**)arr.data(); } + operator T*() { size = arr.size(); return (T*)arr.data(); } + operator Span&() { return arr; } + operator Span*() { return ptr ? &arr : 0; } + T* ptr; + typename Span::size_type size; + void* owner; + Span arr2; + Span& arr; +}; +