uncomplicate / deep-diamond

A fast Clojure Tensor & Deep Learning library
https://aiprobook.com
Eclipse Public License 1.0
428 stars 17 forks source link

Clarification: Default CUDA required? #16

Closed behrica closed 2 years ago

behrica commented 2 years ago

Just to ask a Clarification from a previous discussion. Does deep-diamond currently needs CUDA 11.6 ? (and 11.4 does not work ?)

Otherwise asked:

Even downgrading all CUDA related Java dependencies (both transitive from Neanderthal and [org.jcuda/jcudnn "11.6.1"]) to 11.4 (and of course having CUDA 11.4 installed) ) is likely not working, as deep-diamond relies on features only present in jcudnn 11.6

Sorry to repeat the question here, just to have clarity on the requirements for deep-diamond.

blueberry commented 2 years ago

Yes. While Neanderthal might (and in general will) work with older versions, Deep Diamond is very sensitive to CUDA versions due to heavy use of cuDNN, which changed a lot in recent versions.

behrica commented 2 years ago

ok, thanks. Last clarification :

Due to the GLIB issue (version 2.34 required) for org.jcuda 11.6

there are very few OS on which deep-diamond can currently work (without recompiling org.jcuda) , arch linux is one of them.

Correct ?

blueberry commented 2 years ago

I don't think that would be a correct statement.

https://repology.org/project/glibc/versions

As far as I can see, glibc 2.34 is available in Arch, Centos (Stream 8), Fedora (35+), Debian (Experimental), Gentoo, Manjaro (Stable), Nix, OpenSuse, Ubuntu (22.04).

It seems to me that recent versions of all popular distros do use glibc 2.34+. 2 year old versions don't. I understand that many people use 2 year old versions of Linux for this reason or that (all legitimate), but that's how it is.

However, the solution is easy: build and contribute JCuda with an older glibc (the newer systems will still be able to work!) and contribute that to JCuda. The build is fairly automatic, it's just not trivial. It requires some manual steps, but not many.

behrica commented 2 years ago

Thanks that clarifies it.

I tried what you suggested (install CUDA 11.6 on Ubuntu 22.04 and / or re-compile JCuda on GLIB 2.32 system). Both failed for various reasons, but nothing on which deep-diamond can do anything about.

blueberry commented 2 years ago

I am fairly certain that this would solve itself soon, as there are people who compile to older glibc (soon or later someone will step up and contribute), and as OSs upgrade glibc.

blueberry commented 2 years ago

@behrica Please check out Deep Diamond 0.23.1. It should now work with older Linux distros with older glibc.