计算化学公社

标题: CentOS7.6采用SCL快速升级gcc到7-11版本 [打印本页]

作者
Author:
tjuptz    时间: 2022-4-5 20:17
标题: CentOS7.6采用SCL快速升级gcc到7-11版本
最近有要试用gcc7或8,论坛里有帖子涉及到centos7下升级gcc的帖子,如以下俩都是手动编译的。
无需超级用户授权, 以普通用户源码编译安装 gcc
CentOS7下安装GROMACS(GPU+AVX512)的经历分享

简单检索了一下,通过yum升级也挺简单的,适合懒人。例如这个链接https://www.xshell.net/Linux/update-gcc.html
不过我在发帖时间看,似乎只有7-11版本的。
简单摘录命令行如下
  1. 安装SCL源:
  2. yum install centos-release-scl scl-utils-build -y

  3. 列出SCL可用源:
  4. yum list all --enablerepo='centos-sclo-rh' | grep "devtoolset-"

  5. 安装8版本的gcc、gcc-c++、gdb工具链(toolchian):(要哪个版本的就把命令中的数字8改成你要的主版本号就可以了。这样升级到的是最新的版本。例如8升级到的是8.3.1而不是8.2。)
  6. yum install devtoolset-8-toolchain -y

  7. 切换gcc8:
  8. scl enable devtoolset-8 bash

  9. 退出gcc8
  10. exit
复制代码
通过scl命令启动gcc,这个只是暂时的,当你的shell关闭后或者重启就会恢复原来的版本,要想一直使用升级后的版本可以将其添加到.bashrc。

作者
Author:
abin    时间: 2022-4-5 21:52
容器模式,
anaconda方案亦可.

容器模式, 可能是最佳的.
一旦配置完毕, 拷贝就可以用, 当然前提是, 机器有容器支持.
作者
Author:
snljty    时间: 2022-4-6 09:10
devtoolset看起来是很理想,装起来也很方便,不过实际用的时候还是会遇到一些问题的。比如我结合devtoolset-8或者9编译CP2K的时候,编译无报错最后编译完不能用。(好像是基于它编译的Open MPI有问题,记不清了)。后来还是自己编译gcc 8.5.0解决的。
作者
Author:
Daniel_Arndt    时间: 2022-4-6 09:44
举一个例子,CXXABI_1.3.9是从gcc 5.1开始的。CentOS 7里面的devtoolset-7对应的gcc版本是7.2.1,但你用SCL安装好gcc 7.2.1后会发现还是没有CXXABI_1.3.9。可能维护devtoolset的团队为求稳妥采取了一种相对而言保守的策略。
作者
Author:
乐平    时间: 2022-4-6 10:12
snljty 发表于 2022-4-6 03:10
devtoolset看起来是很理想,装起来也很方便,不过实际用的时候还是会遇到一些问题的。比如我结合devtoolset ...

不能用可能是因为 devtoolset-9 安装的时候是在管理节点的 /opt/rh 目录,但是运行 CP2K 的时候是在各个计算节点。但是计算节点没有一起升级。

手动编译 gcc 时,放在了共享目录里,所以计算节点和管理节点都同时升级了 gcc
作者
Author:
snljty    时间: 2022-4-6 10:27
乐平 发表于 2022-4-6 10:12
不能用可能是因为 devtoolset-9 安装的时候是在管理节点的 /opt/rh 目录,但是运行 CP2K 的时候是在各个 ...

不是的,我们集群所有/opt挂载的同一个硬盘阵列的相同目录。而且不是计算节点不能用,是我编译的节点就用不了。报错也不是缺库,是直接segmentation fault了。
作者
Author:
plus    时间: 2022-4-6 16:22
snljty 发表于 2022-4-6 10:27
不是的,我们集群所有/opt挂载的同一个硬盘阵列的相同目录。而且不是计算节点不能用,是我编译的节点就用 ...

可能是libquadmath版本的问题,在/lib64目录下
作者
Author:
zsu007    时间: 2022-4-6 16:35
学习了,谢谢分享!
作者
Author:
snljty    时间: 2022-4-6 16:50
plus 发表于 2022-4-6 16:22
可能是libquadmath版本的问题,在/lib64目录下

谢谢,devtoolset的gfortran不自带quadmath库么?
作者
Author:
highlight    时间: 2022-4-6 17:14
snljty 发表于 2022-4-6 16:50
谢谢,devtoolset的gfortran不自带quadmath库么?

devtoolset 的库都不在 /lib64 下,所以如果你编译的是动态库版,除了 source setup 外还需要 scl enable devtoolset-X bash 才能链接正确
我之前就是用 devtoolset 编译的 cp2k-8.2 版本,自己修改 arch 变成静态库版后,拿到别的机器上不用 source setup 和 scl enable 也是可以运行的
作者
Author:
snljty    时间: 2022-4-6 18:55
highlight 发表于 2022-4-6 17:14
devtoolset 的库都不在 /lib64 下,所以如果你编译的是动态库版,除了 source setup 外还需要 scl enable ...

嗯我enable了的,还是不行。而且是编译没报错,运行有问题。CP2K是9.1。
作者
Author:
ChemG    时间: 2022-4-6 19:09
snljty 发表于 2022-4-6 18:55
嗯我enable了的,还是不行。而且是编译没报错,运行有问题。CP2K是9.1。

确实啊,在centos7.8折腾了好久好久gcc,编译CP2K还是出现各种问题,最后换centos8一次就编译成了
作者
Author:
highlight    时间: 2022-4-7 17:17
snljty 发表于 2022-4-6 18:55
嗯我enable了的,还是不行。而且是编译没报错,运行有问题。CP2K是9.1。

其实我在 centos7.6 上也成功编译过 9.1 静态版
不过 gcc 使用的是 --with-gcc=install,高版本 binutils 问题(http://bbs.keinsci.com/thread-28171-1-1.html)用的 devtoolset
PS:貌似 arch/local_static.psmp 还不大行,还是用了自己修改的 arch
作者
Author:
snljty    时间: 2022-4-7 18:17
highlight 发表于 2022-4-7 17:17
其实我在 centos7.6 上也成功编译过 9.1 静态版
不过 gcc 使用的是 --with-gcc=install,高版本 binutil ...

诶求问怎么修改的?我是用的自己编译的gcc-8.5.0,用这个gcc编译的openmpi 4.1.1,然后加载这两个环境,--with-openmpi=system最后成功的。
作者
Author:
乐平    时间: 2022-4-7 21:55
snljty 发表于 2022-4-7 12:17
诶求问怎么修改的?我是用的自己编译的gcc-8.5.0,用这个gcc编译的openmpi 4.1.1,然后加载这两个环境,-- ...

我用的服务器是 CentOS Linux release 7.4.1708 (Core),用 yum install devtoolset-9-gcc* 将 GCC 升级到 9.3.1 版,Intel 编译器是 2018.1.1 版

但是如果直接 source /YOUR_PATH/intel/parallel_studio_xe_2018/psxevars.sh intel64 大概率是不能顺利编译 CP2K-9.1 的

只有单独  source /YOUR_PATH/intel/mkl/bin/mklvars.sh intel64 才可以编译 CP2K-9.1,或者安装 2020 版的 MKL 也可以(就……很神奇,可能是 Intel 编译器里的 ifort, icc 或者 intel mpi 有影响?)

我编译 CP2K-9.1 的时候用的命令如下:./install_cp2k_toolchain.sh --with-gcc=install --with-openmpi=install --with-scalapack=install --with-libsmm=install --with-ptscotch=install --with-superlu=install --with-pexsi=install --with-quip=install --with-plumed=install

中途会遇到 libsxmm 编译的报错,但是可以通过在 scripts/stage4/install_libxsmm.sh 第 70 行以及第 76 添加 INTRINSICS=1 解决(讨论的链接如下)
http://bbs.keinsci.com/thread-28171-1-1.html#pid191152

作者
Author:
snljty    时间: 2022-4-7 23:31
本帖最后由 snljty 于 2022-4-8 08:35 编辑
乐平 发表于 2022-4-7 21:55
我用的服务器是 CentOS Linux release 7.4.1708 (Core),用 yum install devtoolset-9-gcc* 将 GCC 升级 ...

你都指定了用GNU编译器,干嘛还加载Intel编译器的环境...
作者
Author:
highlight    时间: 2022-4-8 10:48
本帖最后由 highlight 于 2022-4-8 10:50 编辑
snljty 发表于 2022-4-7 23:31
你都指定了用GNU编译器,干嘛还加载Intel编译器的环境...

不是编译器环境,是 intel 套件环境,可以利用 MKL 和 Intel mpi,从早期版本经验上看会快一些
我就是用了 intel oneapi 的 mkl 和 mpi,修改了 stage1/install_intelmpi.sh 调用 intel 编译器的错误(http://bbs.keinsci.com/thread-27675-1-1.html
静态版 arch 修改主要思路就是把原来 local.psmp 的 LIBS 里动态链接的 -lxxx 改成静态 $(PATH)/libxxx.a
作者
Author:
snljty    时间: 2022-4-8 11:47
highlight 发表于 2022-4-8 10:48
不是编译器环境,是 intel 套件环境,可以利用 MKL 和 Intel mpi,从早期版本经验上看会快一些
我就是用 ...

啊我是说我几乎从不直接source那个总的sh的,modulefiles写的都是用哪个加载哪个。
作者
Author:
highlight    时间: 2022-4-8 12:41
snljty 发表于 2022-4-8 11:47
啊我是说我几乎从不直接source那个总的sh的,modulefiles写的都是用哪个加载哪个。

反正我编译的时候通过 inteloneapi.sh 全都加载后只调用 mkl 和 mpi 似乎没过啥大问题




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3