JCuda Version 12.1

Hi Marco,
NeoCoreTechs here, guy that got JCuda to work with CUDA 12.1.
Have not dropped out, just had meltdown on main workstation. Upped my game to new tower with ThreadRipper/RTX A2000 12GB. Back at it.
Thanks.

I have seen the comment at CUDA 12 · Issue #56 · jcuda/jcuda-main · GitHub - I started the update for CUDA 12 internally, e.g. the new _64-API of CUBLAS and parts of the Runtime/Driver API. I’ve seen that there are „many“ errors in CUSPARSE and haven’t tackled that yet, but will just throw the new headers into my code generator and see how this goes, and post any updates in the linked issue.

I just updated the forked JCusparse yesterday here:
https://github.com/neocoretechs/jcusparse

The only issue I have is that
When I tested the bindings for JCudnn under my Win11/CUDA 12.1.0/Java17 build it had unsatisfied linkages which I assume are the massive DLL’s in CUDNN. I created a JAR with lib/(cudnn DLLs) but it still failed to resolve. Do you recall how to set up CUDNN for proper runtime linkage?
Thanks.

I haven’t started the update of CUDNN yet, but that usually went smoothly (apart from NVIDIA arbitrarily changing the API, of course). I’ll probably be able to tackle that in the next days, and post any updates here or in the CUDA 12 update issue.

@NeoCoreTechs The update for CUDA 12.0.0 is done, as mentioned at CUDA 12 · Issue #56 · jcuda/jcuda-main · GitHub

You mentioned difficulties with CUDNN, and it sounded like this was related to CUDA 12.1, but from what I see, the latest CUDNN version is tagged as suitable for „CUDA 12.x“, so I think that it should work with CUDA 12.1 as well.

Which linker errors did you encounter there?

(Maybe this is related to something that has to be pointed out more clearly in the docs: When you want to use JCudnn, then the CUDNN DLL files have to be in a path that is „visible“ for the JVM to resolve. This usually can just be ~„the project directory“, or a path that is in the PATH environment variable, or something that is listed in the java.library.path - the exact way then may depend on how the application is supposed to be used…)