deeplearning4j: DL4J 1.0.0-M1 no longer compatible with older stdlibc++
Issue Description
While trying to upgrade from 1.0.0-beta7 to M1, we hit the following issue on our CI server:
Caused by: java.lang.UnsatisfiedLinkError: /var/lib/jenkins/.javacpp/cache/nd4j-native-1.0.0-M1-linux-x86_64.jar/org/nd4j/nativeblas/linux-x86_64/libjnind4jcpu.so: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /var/lib/jenkins/.javacpp/cache/nd4j-native-1.0.0-M1-linux-x86_64.jar/org/nd4j/nativeblas/linux-x86_64/libjnind4jcpu.so)
It appears as if the milestone release used a different (newer) g++ compiler version than the previous beta versions to build the some native libraries, which makes it incompatible with hosts running older Linux versions (e.g. CentOS 7).
Was this an intentional breaking change?
Version Information
Please indicate relevant versions, including, if relevant:
- Deeplearning4j version: 1.0.0-M1
- Platform information: CentOS 7
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 39 (23 by maintainers)
@nadre @reckart 1.0.0-M1.1 is out on maven central. Sorry for the delay!
@reckart should be there now - https://repo1.maven.org/maven2/org/nd4j/nd4j-native/1.0.0-M1.1/ thanks again for highlighting this!
@reckart I suspect it’s due to me forgetting to add the classifier to the list for the presets: https://github.com/eclipse/deeplearning4j/pull/9373 I’ll ping you after we get snapshots for that. Thanks for being patient with this.
@reckart minor update here…it took a bit of work to get github actions + our existing configurations working with a centos container, but most things seem to be building with that. We should be able to get the new compat classifier out this week with a bit more polish. We’ll also try to be more explicit about glibc compatibility in our documentation as well. Thanks for highlighting this!
@reckart I have a basic build running on centos 6 now: https://github.com/eclipse/deeplearning4j/actions/workflows/build-deploy-linux-x86_64-compat.yml I’ll work on getting a compat classifier you can migrate to for your release. I am going to leave the default on newer versions so people have to consciously pick both a libc as well as what optimizations they want. I’ll ping you when the new compat builds are up on snapshots. It’s not ideal, but it’s at least a migration path.