zl程序教程

您现在的位置是:首页 >  其他

当前栏目

阿里云HPC升级 tensorfow 1.0之cuda、cudnn、glibc、libcxx详解大数据

阿里数据 详解 升级 1.0 CUDA glibc cudnn
2023-06-13 09:20:26 时间

昨天开始升级hpc的tensorflow,中间踩了个大坑。到现在才弄顺,mark一下。

gpu版的tf,可以在github上下载,然后按照教程使用pip安装。但需要更新很多系统包

升级cuda 8 及cudnn8 到官网下载 https://developer.nvidia.com/cuda-downloads
按照教程直接安装就可以。
2.下载cudnn5.1 https://developer.nvidia.com/cudnn
tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
cd cudnn-8.0-linux-x64-v5.1
sudo cp lib64/* /usr/local/cuda/lib64/
sudo cp cudnn.h /usr/local/cuda/include/ 升级glibc

glibc掌管着系统很多基础命令,例如ls,rm等,是系统的基础库。我也是被它坑的不浅。
先说正确的步骤:
wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.23.tar.xz
xz -d glibc-2.23.tar.xz
tar -xvf glibc-2.23.tar
cd glibc-2.23
mkdir build
cd build
../configure –prefix=/usr –disable-profile –enable-add-ons –with-headers=/usr/include –with-binutils=/usr/bin (博客显示有问题,应该是双横线。不行手敲吧)
make
make check (结果有错误,没有理它)
make install

我出错的问题:最初下载了一个6.23的包,make install 失败了,在lib64下产生了libc-2.23.so,但是没有完成libc.so.6的链接更新。 我想手动做这个软链接,就rm -f libc.so.6, 然后想使用ln, 但发现删除libc.so.6删除后,系统很多命令(包括ln)无法使用了,提示relocation error: libc.so.6: symbol _dl_starting_up, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference。 按照某篇博客的说法,执行了ldconfig,问题出现了。 ld出错了。 应该用LD_PRELOAD重新把原先的libc.so.6恢复。但错误已经发生了,系统都无法登录了。 最终更新/lib64/ld-linux-x86-64.so.2,才是系统可以重启。 这中间还遇到 “/lib64/libm.so.6: invalid ELF header”、 “/lib64/libm.so.6: invalid ELF header”这两个的问题,g++都无法使用了。
最终按照上面说的步骤,把glibc更新完,谢天谢地

升级GLIBCXX

错误:/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found
解决方法: 上述错误是因为libstdc++.so.6太久。 现在 libstdc++.so.6已经被纳入gcc安装包中,所以安装更新版本的gcc即可。 gcc 5.2就包含GLIBCXX_3.4.21的libstdc++.so.6
步骤:
1. wget http://ftp.gnu.org/gnu/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2
2. tar -xf gcc-5.2.0.tar.bz2
3. cd gcc-5.2.0
4. ./contrib/download_prerequisites
5. mkdir gcc-temp
6. ../configure –enable-checking=release –enable-languages=c,c++ –disable-multilib (博客显示有问题,双横杠)
7. make (大概一个小时)
8. make install
更新完gcc后,libstdc++.so.6并没有被更新,需要手动完成,如下:
1. find / -name “libstdc++.so*”
发现有个
/home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 //最新动态库
……
2. cp /home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
3. cd /usr/lib64
4. rm -rf libstdc++.so.6
5. ln -s libstdc++.so.6.0.21 libstdc++.so.6
6. 执行strings /usr/lib64/libstdc++.so.6 | grep GLIBC就可以看到了

如果gpu还是用不了,可以检查下显卡驱动是否需要更新 http://blog.csdn.net/leiting_imecas/article/details/61414313

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/9344.html

分布式文件系统,分布式数据库区块链并行处理(MPP)数据库,数据挖掘开源大数据平台数据中台数据分析数据开发数据治理数据湖数据采集