传统传统

如上图所示, 做科学计算, 安装各种软件, 经常遭遇依赖问题.

可能是各计算软件/代码, 过多侧重于能否解决问题, 依赖优化方面考量的较少. 再或者是各种矩阵运算、数学近似, 在不同MPI版本以及不同版本数学库之间有些许差异, 导致计算结果可能有明显的差异, 即所谓差之毫厘, 谬之千里.

为了保证计算软件/代码能顺利安装和运行, 保证数据可重复性, 一般建议按照软件/代码作者所测试的平台和工具链版本来进行安装部署, 否则极有可能安装失败, 或者算出来结果不对.

绝大多数情况下, HPC的用户是没有管理权限的, 顶多也只能在$HOME里面折腾, 而且绝大多数情形下, HPC是几乎不会对外联网的, 所以, git, wget都基本会无法使用的. 少数情况下, HPC管理员会搭理你, 但是会说, 我只负责HPC平台运行, 不负责用户的具体运算软件.

用户摆弄自己的专业代码都很头疼了, 哪有功夫去摆弄Linux? 况且市面上的Linux教程, 基本针对Linux系统管理员或者运维, 哪有针对做科学计算应该具备什么样的Linux技能的教科书呀?

所谓鸟格私房菜这种教程, 做科研计算的小伙伴, 看了也是白看.

Singularity方案

下图描述一种解决方案.

这里, 把每一个App的特殊依赖和App直接打包为一个可执行的二进制文件. 解决一切烦恼.

这种模式下, 用户的App不再和系统的各种库打交道, 而直接和内核沟通. 细节如图片文字所述.

Singularity是什么

Singularity is a free, cross-platform and open-source computer program that performs operating-system-level virtualization. One of the main uses of Singularity is to bring containers and reproducibility to scientific computing and the high-performance computing world. https://en.wikipedia.org/wiki/Singularity_(software)https://en.wikipedia.org/wiki/Singularity_(software)

跨平台意味着, 在A机器处理完毕的软件镜像包, 在你的机器上可以可以顺利的运行呀.

比如我已经处理了很多科学计算软件的singularity二进制版本, 你可以自己取用呀. 传送门如下: 
https://pan.baidu.com/s/1r7PduYXqjn3kpS-ie0H8NQ?pwd=aknchttps://gitee.com/link?target=https%3A%2F%2Fpan.baidu.com%2Fs%2F1r7PduYXqjn3kpS-ie0H8NQ%3Fpwd%3Daknc

谁在使用/Who are using Singularity

  • Texas Advanced Computing Center

    Oak Ridge Leadership Computing Facility

    Purdue University

    National Institutes of Health HPC

    UFIT Research Computing at the University of Florida

    San Diego Supercomputing Center

    Lawrence Berkeley National Laboratory

    University of Chicago

    Argonne National Lab

    … the list is growing…

​​​​​​​虚拟化效率低下??? 开玩笑!!!

什么? !!!!

那么你认为这么多知名实验室超算用户都是傻子吗?

各种Linux平台上跑docker虚拟化的互联网公司都是傻子吗?

建议摒弃基于微软平台下的虚拟机性能认知.

补充一个对比图, 来自华为openEuler sig-HPC分享讨论:

​​​​​​​

运行计算示例

case 1, run parallel VASP/ 运行VASP

传统模式

  1. 安装Intel编译器套件,
  2. 拿到VASP源码, 修改配置文件,
  3. 使用intel编辑器编译vasp源码, 得到二进制文件,
  4. 配置二进制文件, 启用MPI, 避免和其他版本冲突(一个HPC平台上, 不仅仅只有一个版本的编译器吧? 不仅仅只有一个版本的OpenMPI吧? 既有MPI未必满足你的要求吧? )
  5. 运行 
    mpirun -np 4 vasp_std

Singularity模式

  1. 下载制作好的文件, 比如是vasp6-hpc4you.exe, 放到$HOME/bin
  2. 运行
    vasp6-hpc4you.exe 4 vasp_std
  3. 注意, 你无需在机器上安装任何MPI或者关照任何已经存在的MPI版本.

case 2,  run ORCA/ 运行ORCA

传统模式

  1. 1.安装特定版本gcc,

    2.源码编译安装特定版本的openMPI,

    3.下载ORCA,

    4.配置ORCA和对应的openMPI版本, 避免和其他版本openMPI冲突, 合理屏蔽系统MPI. 可能要涉及到编辑~/.bashrc文件或者配置module文件, 并学会如何激活这种设定.

    5.运行

    orca InputFile > OutputFile

Singularity模式

  1. 下载制作好的文件, 比如是orca5-hpc4you.exe, 放到$HOME/bin
  2. 运行
    orca5-hpc4you.exe InputFile > OutputFile
  3. 注意, 你无需在机器上安装任何MPI, 也无需关照任何已经存在的MPI设定.

case 3,  run g09/ 运行g09

传统模式

  1. 拿到g09软件包, 解压到指定目录
  2. 根据手册, 设定用户组和组权限(很多小伙伴在这一步就卡住了)
  3. 配置g09, 设定g09root以及编写g09初始化脚本(99%的硕士博士新生搞不定的)
  4. 启用g09脚本, 比如放在~/.bashrc中 (99%的硕士博士新生搞不定的, 找不到~/.bashrc,更不晓得怎么把脚本放里面, 因为不会vi)
  5. 运行计算
    g09 InputFile.com &

Singularity模式

  1. 下载制作好的文件, 比如是g09-hpc4you.exe, 放到$HOME/bin
  2. 运行
    g09-hpc4you.exe InputFile &
  3. 注意, 你无需在机器上做任何设定哦.

可镜像化的科学计算软件

可以通过singularity来处理为单个可执行文件的科学计算软件, 并不限于以上提到的几个例子.

处理支持CPU, 内存等计算资源外, 支持GPU以及各种加速卡也是毋庸置疑的. 当然也支持OPA, InfiniBand等HPC平台的高速网络了.

在编译制作二进制的时候, 注意处理器指令集的选择, 应该就可以全平台适用了吧?

我是个计算机外行, 编译参数这个层面不懂.

我自己测试, 我制作的二进制文件, 在Intel处理器上都可以工作. 如果编译限定了支持AVX512指令集, 那么只有在支持该指令集的处理器上可以使用. 因为手里没有AMD EYPC平台的处理器, 无法测试在Intel平台指定AVX2指令集处理得到的二进制文件, 能否在AMD平台上顺利运行?

后记

或许docker也能做同样的事情.

但是我作为一个计算机外行, 实在是看不懂docker手册. 那玩意写的太专业了, 本人智力水平有限, 实在无法理解.

反而是看了singularity手册之后, 直接感慨, Thank God! 这才是为科学计算定做的解决方案. 简单明了.

我这种计算机外行, 看了手册10分钟, 就在主机的Ubuntu 20.04主机上, 顺利跑了一个centOS8.4了.

docker太专业了, 太高端了, 不适合没有计算机基础的做计算的小伙伴使用. 仅个人见解.

HPC平台计算软件依赖, Singularity超级简单相关推荐

  1. 畅购商城canal依赖(超级简单,不会你来kan我!!)

    找到自己的Maven仓库所在的位置(下图是我的!): 这步都一样的操作:将我提供的这个(xpand)复制到你的**com**文件夹下面!!! xpand文件下载地址 点击下载 提取码:sssa 进去你 ...

  2. 寄存器计算软件/寄存器小精灵

    寄存器计算软件/寄存器小精灵.超级好用,一共有两款做选择 第一款:已经打包为EXE 供window使用:下载地址 可以配置颜色 第二款,是比较老的,不过也比较好用, 供window使用:下载地址 源码 ...

  3. 北太天元——首款国产科学计算软件安装及简单测试

    今天看到很多群里的小伙伴都在交流数模国赛,说是取消了matlab创新奖,增加了北太天元奖.这便引得大伙对这款软件展开了不小的讨论. 真假与否暂且未知,但是作为"独立自主研发的国产通用型科学计 ...

  4. Linux安装软件时缺少依赖包的简单较完美解决方法!

    Linux安装软件时缺少依赖包的简单较完美解决方法! 参考文章: (1)Linux安装软件时缺少依赖包的简单较完美解决方法! (2)https://www.cnblogs.com/xiaommvik/ ...

  5. 【超级简单】向量范数计算

    [超级简单]向量范数计算 定义: 公式: 例题:

  6. 卡路里计算JAVA_pedometer 这是一个基于android平台的软件,用于计算你走路的步数,算出消耗的卡路里,以达到健 238万源代码下载...

    详细说明:这是一个基于android平台的软件,用于计算你走路的步数,算出消耗的卡路里,以达到健康的管理.-This is an android platform based software, us ...

  7. Python使用tkinter开发一个简单的参数计算软件模板,可用于设计估算,制造业算料,各种包含参数变量的简单计算

    一.开发前因 最近在制造业转了一圈,发现很多传统制造业在设计或者加工下料过程中,需要根据一些固定参数和现场实际的变量,去估算出设计的范围值或者所需要的材料用量.这种计算当然都会有固定的参数和变量组成的 ...

  8. Python 超级简单精准计算地点日出日落时间

    原文来自Python实用宝典:Python 超级简单精准计算地点日出日落时间 本来想浪漫一把去看个日出,过去后看见天上挂着个大太阳的尴尬情景你经历过吗? 本来想去海边看个日落,结果车到了,太阳也落了的 ...

  9. [软件甜点] 一款Win下超级简单的网络嗅探工具MiniSniffer

    最近使用了一款超级简单的网络嗅探工具Mini Sniffer,不敢独食,和大家一起分享. 软件信息 名称:Mini Sniffer 版本:v1.0 主页:无,作者邮箱:baojianjob@tom.c ...

最新文章

  1. 【数据结构】单调栈和单调队列 详解+例题剖析
  2. 可恶的爬虫直接把生产6台机器爬挂了!
  3. 越小越好:为什么电子器件都这么小巧玲珑?
  4. Python 数据结构视频教程五
  5. 岗位推荐 | 微软小冰团队招聘数据挖掘/算法工程师实习生
  6. HTTP缓存及其使用
  7. 举例说明层次分析的三大原则_一起来复习下陈印老师关于多选题做题思路的分析...
  8. DataTable是否存在某个列的判断
  9. openstack及组件简要介绍
  10. phpfpm怎么连接mysql_php-fpm连不上mysql的问题?
  11. redis aof和rdb区别
  12. 神经网络优化——学习率
  13. LINUX使用gpg签名校验文件
  14. Luogu3444:[POI2006]ORK-Ploughing
  15. 《自卑与超越》读书笔记优秀范文3200字
  16. ATX电源接口定义及颜色定义 (转载)
  17. 笔记本计算机涂硅脂,笔记本电脑怎么涂cpu散热硅脂
  18. 机器学习 ---- 新词发现
  19. 【渝粤教育】国家开放大学2018年秋季 1355T高级英语(2) 参考试题
  20. 2015第二届上海国际机上内饰与翻新展览会

热门文章

  1. 109:vue+openlayers 定位动画(平移-弹性平移-飞行 示例代码)
  2. python实现矢量分级渲染_PyQGIS开发 -- 聊聊矢量图层渲染(一)
  3. 微星MPG Z490 GAMING PLUS i7-10700K电脑 Hackintosh 黑苹果efi引导文件
  4. 基于QT的华为网络摄像头二次开发
  5. 精简计算机管理,Windows系统精简工具,将你的系统精简到最快最小!
  6. U盘写保护无法格式化
  7. 学习笔记——SDRAM学习
  8. 2021-12-17 每日一练 100元怎么买100个蛋,鸡蛋1毛一个,鸭蛋3元一个,鹅蛋6元一个
  9. Win10系统 Office2010程序打开PPT文档报错“此应用无法在你的电脑上运行
  10. 我的MP3收藏精选,推荐一些最近我常听的歌