Closed NotLoose closed 2 years ago
This is essentially the same as https://github.com/jcuda/jcuda-main/issues/45 . The tl;dr of the discussion there: Yes, it would be good to build the binaries with the lowest GLIBC version that actually works.
It may also be beneficial to document this minimum required GLIBC version somewhere.
A disclaimer: I'm not deeply familiar with Linux, GLIBC and versioning policies. But I assume that CUDA itself has some requirements, and the requirements for JCuda should be these or lower.
This issue might be resolved by any contributor who is willing to build the linux binaries with an "older" GLIBC version. This could, for example, be you or @corepointer
The binaries for CUDA 11.7 are in the pipeline: https://github.com/jcuda/jcuda-main/issues/50
You might want to try and build them with an earlier version of GLIBC than the one that @blueberry is using.
You mentioned
I have attempted to build the JCuda native libraries myself, using the older GLIBC, but ran into several issues.
Which issues have this been? If these issues could be resolved, then the binaries with the lower GLIBC requirement could become part of the JCuda 11.7.0 release.
@ACheekyLlama, you can try the binaries from this repo. Afaik Debian 11 uses glibc 2.31 and I compiled on Ubuntu 18 which is glibc 2.29 iirc.
@jcuda Could you use binaries provided by @corepointer to release JCuda 11.6.1b with better backward compatibility?
We reached as well the conclusion, that JCuda 11.6 cannot be used on "most" systems due to it requiring GLIBC_2.34. Or is this a too strong statement ?
I'll try to create a release "11.6.1b" with the (hopefully) more compatible binaries ASAP (Sunday, if possible)
I am trying to run JCuda 11.6.1 using Maven in a Linux (Debian 11) environment. When trying to run a basic JCuda test I get an UnsatisfiedLinkError, with the attempt to load the library as a resource reporting:
Unfortunately this GLIBC version is proving very difficult to get, as each Linux OS comes with its pre-installed version, and you cannot simply update it (contrary to what is mentioned here, the quoted commands will only bring it to the latest version supported by the OS). Debian 11 comes with GLIBC 2.31, and as shown in the CUDA installation guide in the table of supported Linux versions, there are actually only two supported distributions that have GLIBC >= 2.34, namely Ubuntu 22.04 and Fedora 35. However Ubuntu 22.04 is also ruled out as this is only available in CUDA 11.7, which JCuda does not yet support!
I have attempted to build the JCuda native libraries myself, using the older GLIBC, but ran into several issues. I have also attempted to download GLIBC 2.34 separately, and point the
libJCudaRuntime-11.6.1-linux-x86_64.so
file to this version in a number of different ways (such as patching the file withpatchelf
), however none have been successful. At this stage I don't think it is possible to do this, and so the only option is to use a supported OS that comes with GLIBC >= 2.34, which is currently only Fedora 35.I will attempt to use Fedora 35 for now, however as a more permanent solution I believe the library files included in the JARs uploaded to Maven should be built using a lower version of GLIBC, so that more of the currently supported Linux operating systems can be used. It may also be beneficial to document this minimum required GLIBC version somewhere. Thanks for your time :)