Error after upgrade to 1.0.0-beta7

Hello,
I have problem with error after upgrading from beta6 to beta7.

My gradle file:

dependencies {
    implementation 'org.deeplearning4j:deeplearning4j-core:1.0.0-beta7'
    implementation 'org.deeplearning4j:deeplearning4j-ui:1.0.0-beta7'
    implementation 'ch.qos.logback:logback-classic:1.2.3'
    implementation 'org.projectlombok:lombok:1.18.12'

    implementation group: 'org.nd4j', name: 'nd4j-cuda-10.2-platform', version: '1.0.0-beta7'
    implementation group: 'org.deeplearning4j', name: 'deeplearning4j-cuda-10.2', version: '1.0.0-beta7'

    implementation group: 'org.bytedeco', name: 'cuda', version: '10.2-7.6-1.5.3'
}

I have instaled latest nvida driver, cuda 10.2 and cudnn 7.6.5.

Errors:

Caused by: java.lang.RuntimeException: ND4J is probably missing dependencies. For more information, please refer to: https://deeplearning4j.konduit.ai/nd4j/backend

Caused by: java.lang.UnsatisfiedLinkError: no jnind4jcuda in java.library.path: [C:\Program Files\Java\jdk-14.0.1\bin, C:\WINDOWS\Sun\Java\bin, C:\WINDOWS\system32, C:\WINDOWS, C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin, C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\libnvvp, C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin, C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\libnvvp,...

Caused by: java.lang.UnsatisfiedLinkError: C:\Users\rogov\.javacpp\cache\nd4j-cuda-10.2-1.0.0-beta7-windows-x86_64.jar\org\nd4j\nativeblas\windows-x86_64\jnind4jcuda.dll: Can't find dependent libraries

The one thing that jumps out at me here is that you are referencing org.bytedeco:cuda which is just the low level cuda api. If you wanted to have the cuda drivers with cudnn, it would be the cuda-platform-redist artifact instead.

If that is actually what you wanted to do, and you want to use the installed drivers, we’ll have to figure out what is keeping it from actually loading it. You can use https://github.com/lucasg/Dependencies to load C:\Users\rogov.javacpp\cache\nd4j-cuda-10.2-1.0.0-beta7-windows-x86_64.jar\org\nd4j\nativeblas\windows-x86_64\jnind4jcuda.dll and figure out what the library is that it is missing.

Sometimes you have too much on your library path, and things conflict with each other.

Strongly agree on using Dependencies as suggested above. I had a slew of these when I went to Beta 7 which I tracked down using Dependencies to be missing Microsoft Visual C++ Redistributables. I would never have found that out otherwise. You may well find that Dependencies in its full form will fall foul of your Anti-Virus as one of the files it includes will get flagged. Just get the version which says “If you’re running an AV, use this download”. It does everything you will need.

Oh, good to know!

Can you open an issue with more details about that? Usually DL4J doesn’t require any additional redistributables.

I seem to have 11 of those things installed and I think it was pure chance that the ones I needed were not part of the 9 I already had! Screengrab from Dependencies for jnind4jcuda.dll
image

I think I was missing VCRUNTIME_140_1.dll. The issue from a DL4J perspective I think is more one about documentation than anything else. Not really a “bug” per se. I’ll raise an issue to that effect if that makes sense?

Yes, either it has to be documented, or it has to work without it :slight_smile:
Ideally it should work with out it, as usually starting with DL4J is as simple as adding two dependencies. One for the core functionality and one to choose the backend.

That’s been fixed: https://github.com/bytedeco/javacpp/commit/524c8ec9f08c84f4fbb0bd843d5b6a5ee3f7ddd8

1 Like