JTorch icon indicating copy to clipboard operation
JTorch copied to clipboard

Java/JVM bindings for Torch: A Tensor Computation Library

Future development of this binding has been moved to nexus-torch (https://github.com/ctongfei/nexus/tree/master/torch), serving as a computation backend of nexus, a typesafe deep learning engine.

JTorch: JVM bindings for Torch (PyTorch C/C++ core)

Corresponding PyTorch version: 0.4.0

🚧 Ongoing project 🚧 Status: Not ready for use 🚧

Windows Linux MacOS
CPU
CUDA

Installation

Step 1: Install PyTorch from source.

Locate the headers (*.h) and shared libraries (*.so / *.dylib / *.dll)

Step 2: Build SWIG bindings and publish to local Ivy repository.

./build-{mac/linux}.sh

You probably need to modify something in the script to make it work.

[TODO] Will be refactored into a Makefile.

Step 3: Use!

    <dependency>
      <groupId>me.tongfei</groupId>
      <artifactId>jtorch-java</artifactId>
      <version>0.1-TH0.4-SNAPSHOT</version>
    </dependency>

When starting a JVM, add -Djava.library.path=/usr/local/lib (or where your libATen.dylib is), or set $LD_LIBRARY_PATH to include that directory, so that JVM can properly load native the binary.

Package mappings

Torch has several C packages, to which each is mapped to the following Java package:

Torch package Mapped Java package
TH jtorch
THNN jtorch.nn
THS jtorch.sparse
THC jtorch.cuda
THCUNN jtorch.cuda.nn
THCS jtorch.cuda.sparse

Type mappings

Torch has the following Storage/Tensor types, which are mapped to the Java corresponding types on the right.

Torch type Element type (C) Bits Mapped element type (Java) Java type
THHalfTensor THHalf 16 float HalfTensor
THFloatTensor float 32 float FloatTensor
THDoubleTensor double 64 double DoubleTensor
THByteTensor uint8_t 8 short UByteTensor
THCharTensor int8_t 8 byte ByteTensor
THShortTensor int16_t 16 short ShortTensor
THIntTensor int32_t 32 int IntTensor
THLongTensor int64_t 64 long LongTensor