This section shall provide solutions for issues that may appear.
CUDA: GOMP Version 4.0 not found
Issue: Starting the Dl4jMlpClassifier
while using the GPU version of the package results in something similar to:
Caused by: java.lang.UnsatisfiedLinkError:
/home/user/.javacpp/cache/nd4j-cuda-8.0-0.9.1-linux-x86_64.jar/org/nd4j/nativeblas/linux-x86_64/libjnind4jcuda.so:
/usr/lib/x86_64-linux-gnu/libgomp.so.1:
version `GOMP_4.0' not found
(required by /home/user/.javacpp/cache/nd4j-cuda-8.0-0.9.1-linux-x86_64.jar/org/nd4j/nativeblas/linux-x86_64/libnd4jcuda.so)
This happens when your system is using a version below 4.9 of the gcc compiler. You can check this with:
$ gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Therefore the libgomp.so.1 library is still of version 3.0, while the nd4j backend expects version 4.0.
Solution: Download the latest version of libgomp for your system and export the following:
export LD_PRELOAD=<PATH-TO-NEW-LIBGOMP.SO>
For Ubuntu you can get the library here, choose your architecture, download and extract the deb-file. For amd64 architectures this would be:
$ wget http://security.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgomp1_5.4.0-6ubuntu1~16.04.4_amd64.deb
$ ar vx libgomp1_5.4.0-6ubuntu1~16.04.4_amd64.deb
$ tar -xvf data.tar.xz
This extracts the library to ./usr/lib/x86_64-linux-gnu/libgomp.so.1
. Afterward set the LD_PRELOAD
variable to this path as an absolute path and export it as shown above.
CUDA: Failed to allocate X bytes from DEVICE memory
Issue: Your network architecture or your batch size consumes too much memory.
Solution: Use a lower batch size, or adjust your Java heap and off-heap limits to your available memory accordingly to the official Dl4J memory description.
Package Installation: Skipping package wekaDeeplearning4j the OS/arch (Windows 7/8/10 x86) does not meet package OS/arch constraints: 64
Issue: Either your operating system is 32 bit or your installed Java version is 32 bit. WekaDeeplearning4j requires a 64 bit OS and Java installation.
Solution: Install a 64 bit Java version. If your operating system is 32 bit, there is no solution besides installing a 64 bit OS.
Layer Specification Not Updating in GUI
Loading the layer specification can take a long time for the larger zoo models, so this
is done in a separate thread to avoid freezing the GUI. The downside is that the GenericObjectEditor
doesn't update the layer specification after it's finished loading.
If you would like to view/edit the layer specification, follow these steps:
- Set Preview zoo model layer specification in GUI
to True
- Select a Zoo Model
, this will trigger the layer specification to be loaded (you should see
an on-screen loading message)
- Edit any of the other Dl4jMlpClassifier
options (e.g., number of epochs
). This will trigger
the GUI to redraw, which will grab the layer specification loaded previously.