Deeplearning4J installation & quick check setup [back]
(1) At this moment Maven is installed, then:
$ cd ~/deep-learning
$ git clone https://github.com/deeplearning4j/dl4j-0.4-examples.git dl4j-0.4-examples.git
$ cd dl4j-0.4-examples.git
(2) Build DL4J Examples:
$ mvn clean package
(3) Check DL4J installation:
$ time java -cp target/deeplearning4j-examples-0.4-rc0-SNAPSHOT.jar org.deeplearning4j.examples.multinetwork.DBNMnistFullExample
o.d.e.m.DBNMnistFullExample - Load data....
o.d.b.MnistFetcher - Downloading mnist...
Feb 19, 2016 11:13:17 PM com.github.fommil.jni.JniLoader liberalLoad
INFO: successfully loaded /tmp/jniloader4273761144438629527netlib-native_system-linux-x86_64.so
o.d.e.m.DBNMnistFullExample - Build model....
o.d.e.m.DBNMnistFullExample - Train model....
o.d.n.m.MultiLayerNetwork - Training on layer 1 with 100 examples
...
o.d.o.s.BaseOptimizer - Objective function automatically set to minimize. Set stepFunction in neural net configuration to change default settings.
o.d.o.l.ScoreIterationListener - Score at iteration 0 is 0.7298707580566406
o.d.e.m.DBNMnistFullExample - ****************Example finished********************
real 0m11.385s
user 0m25.023s
sys 0m54.658s
... [Ok]
(4) Setup GPU version of dl4j:
$ sudo apt-get install libblas*
(5) Change maven-config to allow jcublas nd4j-jcublas-7.5/0.4-rc3.8
$ cd ~/deep-learning/dl4j-0.4-examples.git
$ cp pom.xml pom.xml-cpu-x86
$ cat ./pom.xml-cpu-x86 | sed 's/nd4j-x86/nd4j-jcublas-7.5/g' > ./pom.xml
(5.1) Rebuild project:
$ mvn clean package
(5.2) Check output Jar-package:
$ jar -tf ./target/deeplearning4j-examples-0.4-rc0-SNAPSHOT.jar | grep 'so$'
META-INF/native/linux32/libleveldbjni.so
META-INF/native/linux64/libleveldbjni.so
libsigar-amd64-linux-1.6.4.so
libsigar-amd64-solaris-1.6.4.so
libsigar-x86-linux-1.6.4.so
* lib/libJCublas-linux-x86_64.so
* lib/libJCusparse-linux-x86_64.so
* lib/libJCurand-linux-x86_64.so
* lib/libJCudaRuntime-linux-x86_64.so
* lib/libJCusolver-linux-x86_64.so
* lib/libJCufft-linux-x86_64.so
* lib/libJCudaDriver-linux-x86_64.so
* lib/libJCublas2-linux-x86_64.so
**... Ok, looks good **
(5.3) Try to run the test application with GPU:
$ java -cp target/deeplearning4j-examples-0.4-rc0-SNAPSHOT.jar org.deeplearning4j.examples.multinetwork.DBNMnistFullExample
o.d.e.m.DBNMnistFullExample - Load data....
o.n.l.j.k.KernelFunctionLoader - Registering cuda functions...
o.n.l.j.k.KernelFunctionLoader - Compiling cuda kernels
java.lang.RuntimeException: java.lang.IllegalStateException: Unable to find path /tmp/nd4j-kernels/output/std_strided.cubin. Recompiling
at org.nd4j.linalg.jcublas.kernel.KernelFunctionLoader.compileAndLoad(KernelFunctionLoader.java:297)
at org.nd4j.linalg.jcublas.kernel.KernelFunctionLoader.compileAndLoad(KernelFunctionLoader.java:219)
....
at org.deeplearning4j.datasets.iterator.BaseDatasetIterator.next(BaseDatasetIterator.java:33)
at org.deeplearning4j.examples.multinetwork.DBNMnistFullExample.main(DBNMnistFullExample.java:39)
Caused by: java.lang.IllegalStateException: Unable to find path /tmp/nd4j-kernels/output/std_strided.cubin. Recompiling
at org.nd4j.linalg.jcublas.kernel.KernelFunctionLoader.loadModules(KernelFunctionLoader.java:331)
at org.nd4j.linalg.jcublas.kernel.KernelFunctionLoader.compileAndLoad(KernelFunctionLoader.java:282)
... 14 more
o.n.l.j.k.KernelFunctionLoader - Registering cuda functions...
o.n.l.j.k.KernelFunctionLoader - Compiling cuda kernels
Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: java.lang.IllegalStateException: Unable to find path /tmp/nd4j-kernels/output/std_strided.cubin. Recompiling
at org.nd4j.linalg.jcublas.context.ContextHolder.configure(ContextHolder.java:250)
at org.nd4j.linalg.jcublas.context.ContextHolder.getInstance(ContextHolder.java:116)
....
at org.deeplearning4j.datasets.iterator.BaseDatasetIterator.next(BaseDatasetIterator.java:33)
at org.deeplearning4j.examples.multinetwork.DBNMnistFullExample.main(DBNMnistFullExample.java:39)
Caused by: java.lang.RuntimeException: java.lang.IllegalStateException: Unable to find path /tmp/nd4j-kernels/output/std_strided.cubin. Recompiling
at org.nd4j.linalg.jcublas.kernel.KernelFunctionLoader.compileAndLoad(KernelFunctionLoader.java:297)
at org.nd4j.linalg.jcublas.kernel.KernelFunctionLoader.compileAndLoad(KernelFunctionLoader.java:219)
at org.nd4j.linalg.jcublas.kernel.KernelFunctionLoader.load(KernelFunctionLoader.java:186)
at org.nd4j.linalg.jcublas.context.ContextHolder.configure(ContextHolder.java:248)
... 10 more
Caused by: java.lang.IllegalStateException: Unable to find path /tmp/nd4j-kernels/output/std_strided.cubin. Recompiling
at org.nd4j.linalg.jcublas.kernel.KernelFunctionLoader.loadModules(KernelFunctionLoader.java:331)
at org.nd4j.linalg.jcublas.kernel.KernelFunctionLoader.compileAndLoad(KernelFunctionLoader.java:282)
... 13 more
... Ohh, damn it! [Error]. From Deeplearnin4J Gitter channel [https://gitter.im/deeplearning4j/deeplearning4j/archives/2016/01/12]:
> [wiku] (Jan 12 13:53)
> now I have this:
> Caused by: java.lang.IllegalStateException: Unable to find path /tmp/nd4j-kernels/output/std_strided.cubin. Recompiling
> at org.nd4j.linalg.jcublas.kernel.KernelFunctionLoader.loadModules(KernelFunctionLoader.java:331)
> at org.nd4j.linalg.jcublas.kernel.KernelFunctionLoader.get(KernelFunctionLoader.java:141)
> [raver119] (Jan 12 13:54)
> @wiku iâve told you - cuda isnât supposed to be used in few latest releases
> wiku (Jan 12 13:55)
> okay okay
> [raver119] (Jan 12 13:55)
> itâs available there only due to maven build. but itâs not usable. and wonât untill weâll finish overhaul :)
> [wiku] (Jan 12 13:55)
> I give up :D
> don't shoot
Mac OSX stack trace running example with 7.5
For some reason there are duplicate classes (with different behavior)
in nd4j-jcublas-7.5 and nd4j-jcublas-common.
The 7.5 version of org.nd4j.linalg.jcublas.kernel.KernelFunctionLoader
seems to be totally broken :disappointed: