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.