Skip to main content

5 posts tagged with "hpc"

View All Tags

在神威太湖之光上使用 vscode Remote

· 5 min read

vs code 可谓是开发利器,其中的 vscode-remote 插件给开发者提供了在远程机器上(包括 ssh、docker、WSL)进行开发的选择,且十分便利。 再次之前,我们在太湖之光上编写代码很多时候都是ssh登录到机器到登录节点,然后在命令行下使用 vi 编辑器进行代码编写。 这样的开发方式固然可行,但很多 vscode 的先进功能都没有用上,如代码补全、智能提示、git集成、插件系统。

本文希望将 vscode 的功能给带到太湖之光上,以方便在该机器上的代码开发;通过 vscode 的强大功能来提升工作效率。

在太湖之光上 psn 节点安装 remote-ssh 扩展

本地安装好 Remote-SSH 扩展后,使用该扩展连接 psn 节点,即会开始下载 vscode-serve (由于远程无法连接互联网,会本地下载然后上传到远程)。
如果本地下载上传还是失败,可以参照该链接 手动下载并安装 vscode-serve。
随后的尝试连接 remote 过程会出现失败(可以在 OUTPUT 中查看具体错误信息):

/home/export/base/{my_username}/.vscode-server/bin/{id}/node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by /home/export/base/{my_username}/.vscode-server/bin/{id}/node)
> /home/export/base/{my_username}/.vscode-server/bin/{id}/node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /home/export/base/{my_username}/.vscode-server/bin/{id}/node)
> /home/export/base/{my_username}/.vscode-server/bin/{id}/node: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by /home/export/base/{my_username}/.vscode-server/bin/{id}/node)
> /home/export/base/{my_username}/.vscode-server/bin/{id}/node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/export/base/{my_username}/.vscode-server/bin/{id}/node)
> /home/export/base/{my_username}/.vscode-server/bin/{id}/node: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /home/export/base/{my_username}/.vscode-server/bin/{id}/node)
> /home/export/base/{my_username}/.vscode-server/bin/{id}/node: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by /home/export/base/{my_username}/.vscode-server/bin/{id}/node)
> /home/export/base/{my_username}/.vscode-server/bin/{id}/node: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/export/base/{my_username}/.vscode-server/bin/{id}/node)

注⚠️:~/.vscode-server/bin/ 下会有一个较长到十六进制字符串的目录,为方便这里用 {id} 代替。

这是由于 spn 节点的linux版本是 red-hat 6,其提供的 glibc 等链接库的版本比较落后, 而 vscode-serve 中的 node 需要 GLIBC_2.17 及以上的 glibc 和高版本的 libstdc++.so。
另外,官方也有相关说明, 要求 RedHat Enterprise Linux 6 (64-bit) 版本需要 glibc >= 2.17 与 libstdc++ >= 3.4.18。

写给新生的高性能计算入门(一) —— 高性能计算国内外发展现状及发展趋势

· 10 min read

说起超级计算机,大家应该会有一个概念,大致就是计算能力很强的计算机。甚至在某乎,还有人问 在超算上面打游戏是什么体验。 这里解释一下,实际上,由于超算系统的限制,很少能够可以连接互联网,而且远程连接网络性能也可能不好; 还有就是,游戏的程序并没有做大规模并行化(实际上也没必要),顶多只能单节点多核运行(可能还没GPU),所以打游戏的计算性能和单个普通服务器的性能差不多。对于超算来说,其强势主要在于计算能力(而且为了保证你的程序可以利用上超算的计算资源,需要针对超算环境去编写/改写并行程序,这个我们后面讨论并行编程的时候会讲)。

在高性能计算领域,有一个榜单 top500,该榜单每半年(6月份和11月份)公布一次世界上计算能力前500的超级计算机,其中6月份是在ISC(the International Supercomputing Conference)大会上公布,11月份是在SC(SuperComputing Conference)大会上公布。 该榜单最早由Hans MeuerErich StrohmaierJack Dongarra于1993年发起。

超算中的基本概念

节点(nodes)

简单来说,超算就是有很多计算节点,通过高速互联网络连接而成的计算机系统。每个节点实际上是一台比较独立的计算机,每个节点上可能会有多块 CPU 、加速计算硬件(如GPU、Intel phi等)、内存、操作系统(基本都是Linux系统)。 由于一个节点上,可能有多快CPU,每个CPU可能还是多核的,再加上加速卡,所以一般单节点都是一个具有多个核心的节点。
例如,目前(2019.09)排名 top500 第一的超算 summit,每个节点的结构如下图所示。其每个节点有一个 Power9 CPU,外加3块 NVIDIA V100 GPU。节点内部的 CPU-GPU 以及 GPU-GPU之间通过 NVIDIA NVLink 互联起来。
summit link

文件系统

一般地,超算上不是每个节点都有一块硬盘的,而是用的各个节点共享的并行文件系统,使用并行文件系统,各个节点都可以向这个共享的文件系统中写入或读取文件。

计算能力的衡量指标: FLOPS

FLOPS,或者叫 Flops、flops 或 flop/s,即 floating point operations per second, 指的是计算机系统每秒可以进行的浮点数操作次数, 具体可参见 wikipedia-FLOPS。 除了FLOPS作为单位外,还有 GFlops,TFlops,EFlops,ZFlops等单位,其中:

  • 1 KFlops = 1000 Flops
  • 1 MFlops = 1000 KFlops
  • 1 GFlops = 1000 MFlops
  • 1 TFlops = 1000 GFlops
  • 1 PFlops = 1000 TFlops
  • 1 EFlops = 1000 PFlops
  • 1 ZFlops = 1000 EFlops

例如目前,无锡神威太湖之光超级计算机,其持续浮点性能为 93.0146 PFlops,9.3亿亿次/秒 (在 top500 网站上列出的超级计算机性能表里面,会提到系统的峰值性能(Rpeak)和持续性能(Rmax))。