阿里云HPC升级 tensorfow 1.0之cuda、cudnn、glibc、libcxx

    xiaoxiao2021-03-26  11

    昨天开始升级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

    转载请注明原文地址: https://ju.6miu.com/read-600149.html

    最新回复(0)