计算化学公社

 找回密码 Forget password
 注册 Register
Views: 4719|回复 Reply: 12
打印 Print 上一主题 Last thread 下一主题 Next thread

[Linux] Singularity中怎么设置动态加载环境变量

[复制链接 Copy URL]

254

帖子

4

威望

4744

eV
积分
5078

Level 6 (一方通行)

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 djjj148 于 2021-9-5 09:40 编辑

最近用Singularity安装了centos 7.6并在里面装了CP2K,测试正常,感觉容器技术还是有很大的优点,但是也发现Singularity和正常的系统有一个很大的区别:"好像无法动态加载环境变量"。比如CP2K运行时需要加载不少环境变量,包括一些source和export命令。当然,这些命令可以写在/.singularity.d/env/91-environment.sh,但是这就和写在正常系统的.bashrc里一样了,不是动态加载。如果一个容器里装了多个软件,这肯定难以避免环境变量冲突。
网上搜索无果。自己用类似"singularity exec centos.sif source cp2k.sh"命令尝试无效,也试过把加载命令写到一个脚本A里,再写另个脚本B去source脚本A,最后"singularity exec centos.sif B"也还是不行。故来请教下大家。


166

帖子

0

威望

3347

eV
积分
3513

Level 5 (御坂)

13#
发表于 Post on 2021-11-29 21:38:58 | 只看该作者 Only view this author
本帖最后由 neocc 于 2021-11-29 21:48 编辑
neocc 发表于 2021-11-29 02:15
请问 cp2k82 的singlarity安装,运行最后的投任务脚本为什么会报错

/.singularity.d/actions/exec: 1: / ...

问题已自行解决

方法如下:
1.写入/opt/env.sh和修改/.singularity.d/env/91-environment.sh文件
  1. singularity build --sandbox --tmpdir /home cp2k82-512/ cp2k82-avx512-1.sif
复制代码
  1. singularity shell -w cp2k82-512
复制代码
singularity里面写入/opt/env.sh
  1. vi /opt/env.sh
复制代码
按“i”写入如下内容
  1. source /opt/cp2k-toolchain/install/setup
  2. export PATH=$PATH:/opt/cp2k-8.2/exe/local
  3. export CP2K_DATA_DIR=/opt/cp2k-8.2/data
复制代码
按“ESC”,保存退出
  1. :wq
复制代码
singularity里面修改/.singularity.d/env/91-environment.sh文件
  1. vi /.singularity.d/env/91-environment.sh
复制代码
按“i”写入如下内容
  1. bash /opt/env.sh
复制代码
按“ESC”,保存退出
  1. :wq
复制代码


2.更改shell解释器singularity里面继续输入
  1. dpkg-reconfigure dash
复制代码
命令,然后输入no,回车
执行如下命令
  1. ls -l /bin/sh
复制代码
若得到结果/bin/sh -> bash,则说明成功更改shell的解释器为bash。

3.生成新sig
  1. singularity build --tmpdir /home cp2k82-ubuntu2004.sif cp2k82-512/
复制代码




问题原因:
如何解决ubuntu系统下source: not found错误?
https://help.aliyun.com/knowledge_detail/109503.html



PS:运行程序的时候强烈建议加上目录映射 -B <绝对路径>,绑定和宿主inp文件,其他会用上的文件的路径

  1. mpirun -np {cpu_cores}  (root用户要加上 --allow-run-as-root )  singularity exec --bind /inp文件所在路径,/data文件路径   /绝对路径/cp2k82-ubuntu2004.sif   cp2k.popt cp2k.inp 1> cp2k.out 2> cp2k.err
复制代码


仅供参考:http://docs.hpc.whu.edu.cn/files/whuhpcdocs.wiki/sbatch/singularity.html

166

帖子

0

威望

3347

eV
积分
3513

Level 5 (御坂)

12#
发表于 Post on 2021-11-29 02:15:25 | 只看该作者 Only view this author
本帖最后由 neocc 于 2021-11-29 09:04 编辑

请问 cp2k82 的singlarity安装,运行最后的投任务脚本为什么会报错

/.singularity.d/actions/exec: 1: /.singularity.d/env/91-environment.sh: source: not found

已激活 intel oneapi
singularity 里面也有91-environment.sh这个文件
但是singularity shell /opt/cp2k82-avx512-1.sif
里面source没问题
在/.singularity.d/env/91-environment.sh里面加上 !#/bin/bash 后再构建sif,还是会报错
系统用的是ubuntu20.04

254

帖子

4

威望

4744

eV
积分
5078

Level 6 (一方通行)

11#
 楼主 Author| 发表于 Post on 2021-9-10 13:18:57 | 只看该作者 Only view this author
KiritsuguPapa 发表于 2021-9-10 12:05
你有空的话能不能做个性能测试?我之前随便试过一次gromacs 容器内外还是有不小的差距(>10%) 不过后来也 ...

我用的VASP,CP2K,容器内外的速度没有差别的。

2407

帖子

1

威望

5950

eV
积分
8377

Level 6 (一方通行)

10#
发表于 Post on 2021-9-10 12:15:46 | 只看该作者 Only view this author
本帖最后由 abin 于 2021-9-10 13:29 编辑

高斯, VASP,CP2K,几乎无差。
我自己测试的。

或者说,差异,可以忽略。


补充一下.
换个角度想,
如果会带来明显的性能下降,
这个项目还是存活这么多年?
还能在docker占据上风的情形下, 杀出重围?

Singularity, 绝对是最适用于科学计算平台的最佳解决方案.

如果对docker singularity等容器技术, 是否有性能问题,
最简单的是看Wiki, 然后查阅后面的相关资料.

或者看Official Site上的release note等信息.
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

139

帖子

1

威望

1430

eV
积分
1589

Level 5 (御坂)

9#
发表于 Post on 2021-9-10 12:05:03 | 只看该作者 Only view this author
你有空的话能不能做个性能测试?我之前随便试过一次gromacs 容器内外还是有不小的差距(>10%) 不过后来也没再尝试

139

帖子

1

威望

1430

eV
积分
1589

Level 5 (御坂)

8#
发表于 Post on 2021-9-10 12:03:43 | 只看该作者 Only view this author
djjj148 发表于 2021-9-6 10:29
最后自己摸索了一个折衷的办法,供大家参考:

把sif解压到$HOME(解压速度还是很快的),命名为centos7.6 ...

你直接在提交脚本里source那个文件就行了 环境变量会带入容器内部的

254

帖子

4

威望

4744

eV
积分
5078

Level 6 (一方通行)

7#
 楼主 Author| 发表于 Post on 2021-9-6 10:29:01 | 只看该作者 Only view this author
最后自己摸索了一个折衷的办法,供大家参考:

把sif解压到$HOME(解压速度还是很快的),命名为centos7.6,就可以直接编辑这个目录。把CP2K的环境变量写进${HOME}/centos7.6/cbin/cp2k.sh。在PBS脚本里先
  1. cat ${HOME}/centos7.6/cbin/cp2k.sh > ${HOME}/centos7.6/.singularity.d/env/91-environment.sh
复制代码

就可以正常运行了

  1. time mpirun -np 56 singularity exec ${HOME}/centos7.6 cp2k.popt cp2k.inp 1>cp2k.out 2>cp2k.err
复制代码
这样有个好处,后期想优化运行方式的话可以直接编辑镜像目录。唯一的缺点就是解压后镜像目录占用20多个G,不过比起"每次换到新机器还得从头编译CP2K花费的几个小时"来看还是划算不少。而且还能装很多自己用的常用软件,反正是动态加载,不会相互影响。

254

帖子

4

威望

4744

eV
积分
5078

Level 6 (一方通行)

6#
 楼主 Author| 发表于 Post on 2021-9-5 21:38:26 | 只看该作者 Only view this author
本帖最后由 djjj148 于 2021-9-6 10:17 编辑
KiritsuguPapa 发表于 2021-9-5 19:32
在容器内写一个bash脚本,脚本内进行source和运行任务等,再用singularity exec命令运行这个脚本就行

试了一下,在命令行中可以用singularity exec运行这个脚本,但是写在脚本里想用集群调度就失败了...

139

帖子

1

威望

1430

eV
积分
1589

Level 5 (御坂)

5#
发表于 Post on 2021-9-5 19:32:54 | 只看该作者 Only view this author
在容器内写一个bash脚本,脚本内进行source和运行任务等,再用singularity exec命令运行这个脚本就行

2407

帖子

1

威望

5950

eV
积分
8377

Level 6 (一方通行)

4#
发表于 Post on 2021-9-5 18:34:21 | 只看该作者 Only view this author
djjj148 发表于 2021-9-5 15:22
对于"绝对路径可破"。请问是把sif文件解压成目录(比如centos.sif解压到/home/centos/),然后 ...

你的想法太古怪了。
建议看看手册,不要胡思乱想。这是免费方案。

或者,我可以提供该镜像技术在计算平台的使用技术,
有偿提供一对一教学。
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

254

帖子

4

威望

4744

eV
积分
5078

Level 6 (一方通行)

3#
 楼主 Author| 发表于 Post on 2021-9-5 15:22:48 | 只看该作者 Only view this author
本帖最后由 djjj148 于 2021-9-5 15:23 编辑
abin 发表于 2021-9-5 13:15
绝对路径可破。

之前我提议或者建议使用镜像方案,

对于"绝对路径可破"。请问是把sif文件解压成目录(比如centos.sif解压到/home/centos/),然后在提交任务的时候直接source或export   /home/centos/里的文件或者目录吗?
另外,我是刚接触容器,不太懂门道,关于想"做大而全",主要是因为一个系统镜像很大,比如只编译CP2K的sif镜像就已经5.3G了,每个软件都分开弄sif的话,可能没有动态加载划算。还请指教。

2407

帖子

1

威望

5950

eV
积分
8377

Level 6 (一方通行)

2#
发表于 Post on 2021-9-5 13:15:39 | 只看该作者 Only view this author
绝对路径可破。

之前我提议或者建议使用镜像方案,
一堆白痴给我喷的呀……

另,各做各的不行吗?
弄大而全,背离了镜像技术的初衷。
High-Performance Computing for You
为您专属定制的高性能计算解决方案

更多讯息,请访问:
https://labitc.top
http://tophpc.top:8080
电邮: ask@hpc4you.top

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-14 03:39 , Processed in 0.160401 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list