slurm环境配置
- 若为商业软件,请自行获取软件使用权并安装;
- 若为常用开源软件,查看/opt/app目录下是否已安装;
- 若未安装
- 请先考虑是否能用conda 安装;
- 再考虑在自己家目录下使用源码安装,遇到问题,请将可复现的步骤发到用户交流qq群咨询;
- 或者考虑容器安装的方法。
1、预装软件的使用
/usr/bin等$PATH变量中指定的路径下的工具都可直接使用,另安装了spack,anaconda等软件在/opt目录下。
为了避免不恰当编辑 bash 配置文件引起的环境变量冲突、混乱的问题,同时为了方便不同版本的管理,集群配置了 module 工具来调用系统预装的软件。只有系统预装的软件才可以使用 module 工具来加载。
module的常用命令:
- module avail 查看所有可用的模块
- module avail xx 查看指定的模块
- module load module_name 来加载所需模块
示例:默认的/usr/bin/gcc版本是4.85,想更换更高版本的gcc,可通过以下命令实现:
1 2 3 4 5 6 7 | |
也可通过module switch切换。如果需要恢复之前的gcc,直接module unload gcc-10.1.0-gcc-4.8.5-2new4ox即可。
在slurm任务脚本中,加载系统预装软件环境的命令和运行系统预装软件的命令,不能在脚本的同一行里。加载命令的一行,必须在运行命令的一行的上方。
部分预装软件需运行相关脚本初始化,例如: - 通过 source /opt/app/anaconda3/bin/activate 命令来激活conda环境 - 通过 source /opt/intel/bin/compilervars.sh intel64 命令来激活intel的编译套件
1 2 3 4 5 | |
module是Environment Modules 开源项目的命令,提供用户环境的动态修改,详细使用请参考:
- https://github.com/cea-hpc/modules
- https://modules.readthedocs.io/en/latest/INSTALL.html
- https://en.wikipedia.org/wiki/Environment_Modules_(software)
cat ${MODULESHOME} 查看moudles的安装和配置目录。
2、自行安装软件
2.1 Conda
集群支持也允许通过conda安装自己需要的软件包:
- 使用集群预安装的版本:将Anaconda的可执行文件路径添加到~/.bashrc文件中PATH环境变量,
echo 'export PATH=/opt/app/anaconda3/bin:$PATH' >> ~/.bashrc。 - 自行安装指定版本的conda:
1 2 3 4 5 6 | |
2.2 Spack
Spack是专为大型超级计算中心设计的自动化包管理器,支持各种平台和环境中的多个版本和软件配置。slurm集群已经设置安装好了spack,安装目录在/opt/app/spack。
如果预安装的软件没有自己想要的,需要管理员通过spack安装。因权限控制,集群不允许用户使用系统spack安装。不过=可以自己的目录下安装spack再安装其他软件。Spack 是 “包管理器”,负责下载、编译、安装软件,Modules 是 “环境切换器”,负责激活/停用已经安装好的软件,通过修改环境变量实现。
- Conda 使用预编译的软件包,通常已经包含了其依赖项,可以直接安装使用。
- Spack 支持从源码编译软件包,并且可以根据用户的需求配置编译器、编译选项、MPI 实现等。
- Conda 支持在不同虚拟环境中安装同一个软件包的不同版本。通过环境隔离来管理多版本的依赖。
- Spack 内置支持多个版本、不同编译器选项和编译选项的安装。一个用户可以在同一系统上安装多种配置的相同软件包,而不需要手动创建多个环境。
conda对于深度学习等领域应用更广泛,更容易上手。但都用conda,会使得有很多重复的软件包,浪费存储空间。
3、slurm上源码编译:glibc
conda中预编译好的软件通常不是最新的,或者没有自己想要的版本,则可以通过直接从源码编译的方式安装。
以glibc 2.29为例,glibc是GNU发布的c运行库,是linux系统中最底层的api。依赖glibc系统组件多,一般使用系统默认的,无法在整体部署高版本glibc,如果需要高版本glibc,可通过源码自行安装。集群上glibc对应的文件是/lib64/libc.so.6,strings /lib64/libc.so.6 | grep GLIBC_ 可以看到当前 glibc 提供的 ABI 版本,最高版本是GLIBC_2.17,向后兼容所有更低版本的 GLIBC 接口,使用ldd --version 会显示ldd (GNU libc) 2.17。
先配置好conda并激活指定的环境,默认的base环境会安装软件到公共目录,没有写权限会导致安装失败。
申请计算节点并连接到计算节点,后续所有操作在计算节点操作,登录节点会因资源限制部分操作会失败。
1 2 3 4 5 6 7 8 9 10 11 | |
依赖升级:系统默认的make是3.82版本较低,编译glibc 2.29需要make和gmake 4.0及以上的版本,slurm上gmake链接到make。系统默认 gcc是 4.8 无法编译 glibc 2.29,需要切换到gcc 7.5版本,10.1的版本过高。
1 2 | |
然后执行以下命令下载解压并环境探测和配置构建,--prefix指定的安装目录前缀不要与源文件相同,否则后面安装会因为文件覆盖报错。
1 2 3 4 5 | |
若configure操作出现如下的错误提示,
1 2 | |
使用echo $LD_LIBRARY_PATH 检查下路径是否包含了 . (当前目录) 或空条目(代表当前目录),通常是最后多了一个:号,将内容复制去掉最后的:并重新配置环境变量$LD_LIBRARY_PATH,示例如下。
1 | |
再编译安装
1 2 3 4 5 | |