传统传统
如上图所示, 做科学计算, 安装各种软件, 经常遭遇依赖问题.
可能是各计算软件/代码, 过多侧重于能否解决问题, 依赖优化方面考量的较少. 再或者是各种矩阵运算、数学近似, 在不同MPI版本以及不同版本数学库之间有些许差异, 导致计算结果可能有明显的差异, 即所谓差之毫厘, 谬之千里.
为了保证计算软件/代码能顺利安装和运行, 保证数据可重复性, 一般建议按照软件/代码作者所测试的平台和工具链版本来进行安装部署, 否则极有可能安装失败, 或者算出来结果不对.
绝大多数情况下, HPC的用户是没有管理权限的, 顶多也只能在$HOME里面折腾, 而且绝大多数情形下, HPC是几乎不会对外联网的, 所以, git, wget都基本会无法使用的. 少数情况下, HPC管理员会搭理你, 但是会说, 我只负责HPC平台运行, 不负责用户的具体运算软件.
用户摆弄自己的专业代码都很头疼了, 哪有功夫去摆弄Linux? 况且市面上的Linux教程, 基本针对Linux系统管理员或者运维, 哪有针对做科学计算应该具备什么样的Linux技能的教科书呀?
所谓鸟格私房菜这种教程, 做科研计算的小伙伴, 看了也是白看.
Singularity方案
下图描述一种解决方案.