This repository has been archived by the owner. It is now read-only.
Java Other
Switch branches/tags
Clone or download
Failed to load latest commit information.
.github Added PR & issue templates Mar 30, 2017
ci Disable nd4j-native when building for nd4j-cuda on AppVeyor and Travi… Mar 1, 2018
contrib Towards an automated syntax formatting for our projects (#1626) Feb 22, 2017
nd4j-backends serde fix for dl4j (#2913) May 19, 2018
nd4j-buffer serde fix for dl4j (#2913) May 19, 2018
nd4j-common Long Shapes (#2910) May 18, 2018
nd4j-context Update to version 1.0.0-SNAPSHOT May 17, 2018
nd4j-instrumentation Update to version 1.0.0-SNAPSHOT May 17, 2018
nd4j-jdbc Update to version 1.0.0-SNAPSHOT May 17, 2018
nd4j-parameter-server-parent Long Shapes (#2910) May 18, 2018
nd4j-serde Long Shapes (#2910) May 18, 2018
nd4j-shade Update to version 1.0.0-SNAPSHOT May 17, 2018
nd4j-uberjar Update to version 1.0.0-SNAPSHOT May 17, 2018
.appveyor.yml Enable extension-less CPU builds on AppVeyor and Travis CI, no longer… Mar 6, 2018
.codeclimate.yml add codeclimate configuration (#2804) Apr 1, 2018
.gitignore Generate protobuf dependencies at compilation (#2355) Dec 26, 2017
.travis.yml Enable extension-less CPU builds on AppVeyor and Travis CI, no longer… Mar 6, 2018
Jenkinsfile Add Jenkinsfile Feb 1, 2018
LICENSE Initial commit Aug 31, 2014 Update Oct 9, 2017 Changes to support Raspberry Pi (pull #1455) Nov 26, 2016
VERSION Add explicit versioninig. Jan 7, 2016 Update and for CUDA 9.0 (#2172) Oct 5, 2017 Fix for the Mac (#2024) Aug 7, 2017 Update to JavaCPP 1.4.1 Mar 29, 2018 add test for base64 testing of arrays (#1165) Jul 31, 2016 Update dl4j-test-resources.version properly in Apr 13, 2018
pom.xml Update to version 1.0.0-SNAPSHOT May 17, 2018 Build scripts overhaul (#1822) May 16, 2017

ND4J: Scientific Computing on the JVM

Join the chat at Maven Central Javadoc

ND4J is an Apache 2.0-licensed scientific computing library for the JVM. By contributing code to this repository, you agree to make your contribution available under an Apache 2.0 license.

It is meant to be used in production environments rather than as a research tool, which means routines are designed to run fast with minimum RAM requirements.

Please search for the latest version on

Or use the versions displayed in:

Main Features

  • Versatile n-dimensional array object
  • Multiplatform functionality including GPUs
  • Linear algebra and signal processing functions


  • Supports GPUs via with the CUDA backend nd4j-cuda-7.5 and Native via nd4j-native.
  • All of this is wrapped in a unifying interface.
  • The API mimics the semantics of Numpy, Matlab and scikit-learn.


Several of these modules are different backend options for ND4J (including GPUs).

  • api = core
  • instrumentation
  • jdbc = Java Database Connectivity
  • jocl-parent = Java bindings for OpenCL
  • scala-api = API for Scala users
  • scala-notebook = Integration with Scala Notebook

Building Specific Modules

It is possible to build the project without the native bindings. This can be done by specic targeting of the project to build.

mvn clean package test -pl :nd4j-api


Documentation is available at Access the JavaDocs for more detail.


To install ND4J, there are a couple of approaches, and more information can be found on the ND4J website.

Install from Maven Central

  1. Search for nd4j in the Maven Central Repository to find the available nd4j jars.
  2. Include the appropriate dependency in your pom.xml.

Clone from the GitHub Repo


  1. Check for open issues, or open a new issue to start a discussion around a feature idea or a bug.

  2. If you feel uncomfortable or uncertain about an issue or your changes, feel free to contact us on Gitter using the link above.

  3. Fork the repository on GitHub to start making your changes to the master branch (or branch off of it).

  4. Write a test, which shows that the bug was fixed or that the feature works as expected.

  5. Note the repository follows the Google Java style with two modifications: 120-char column wrap and 4-spaces indentation. You can format your code to this format by typing mvn formatter:format in the subproject you work on, by using the contrib/formatter.xml at the root of the repository to configure the Eclipse formatter, or by using the INtellij plugin.

  6. Send a pull request, and bug us on Gitter until it gets merged and published.