Skip to main content

4 posts tagged with "hpc"

View All Tags

DCU 上的 Matrix Core 编程(part1)

· 10 min read
genshen
student in CS

预备知识:Matrix Core 简介

英伟达GPU上,Volta架构首次引入 tensor core,可以在一个周期内计算完两个4*4矩阵的乘法,其最广泛的用法就是矩阵乘,因此tensor core硬件受到深度学习研究者的广泛欢迎。

AMD 的GPU,也自 CDNA架构开始引入 Matrix Core,来对标 NVIDIA Tensor Core。 由于功能类似,所以有时候,我们也将 Matrix Core 称为 tensor core,但这两者在编程接口上区别还是比较大的。 DCU 架构的GPU,由于部分采用ROCm生态,其上的 Matrix Core 编程接口和 AMD GPU相近,因此很多 AMD GPU的编程资料可供参考。

在 CUDA 环境下安装 HIP

· 9 min read

HIP (Heterogeneous-Compute Interface for Portability) 是 AMD 开发的一款异构计算的接口工具。 HIP 允许只用写一套代码(hip代码), 就可以将程序同时在 NVIDIA GPU 和 AMD GPU 及 DCU 上编译运行。

HIP is a C++ Runtime API and Kernel Language that allows developers to create portable applications for AMD and NVIDIA GPUs from single source code.

HIP 的 API 和 CUDA 的API十分类似,例如 CUDA 中内存拷贝用cuMemory, 在 hip 中用hipMemcpy,且参数也十分一致。 因此,会 CUDA 的开发者可以很轻松地转移到 hip 上。 并且,hip 还提供了hipfy 工具,将 CUDA 代码转换为 hip 代码。
HIP 在不降低性能的前提下,统一了CUDA API 和AMD GPU 编程API,可谓极大地降低了各个平台的适配与移植工作, 做到了一套代码,在多个异构平台上运行。 可以说, "舍弃 CUDA,进入HIP时代"。

那么,在 NV GPU下,如何安装并使用 hip 呢?

在神威太湖之光上使用 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。