# 快速开始
## 介绍
本系统主要面向昇腾平台上的模型和算子开发者,提供便携易用的多机多卡内存访问方式,方便用户开发在卡间同步数据,加速通信或通算融合类算子开发。
## 软件架构
共享内存库接口主要分为host和device接口部分:
- host侧接口提供初始化、内存管理、通信域管理以及同步功能。
- device侧接口提供内存访问、同步以及通信域管理功能。
## 目录结构说明
详细介绍见[code_organization](code_organization.md)
```
├── 3rdparty // 依赖的第三方库
├── docs // 文档
├── examples // 使用样例
├── include // 头文件
├── scripts // 相关脚本
├── src // 源代码
└── tests // 测试用例
```
## 软件硬件配套说明
- 硬件型号支持
- Atlas 800I A2/A3 系列产品
- Atlas 800T A2/A3 系列产品
- 平台:aarch64/x86
- 配套软件:驱动固件 Ascend HDK 25.0.RC1.1、 CANN 8.2.RC1及之后版本。Ascend HDK版本为商发版本,CANN版本为社区版本,暂无支持商用版本。(参考《[CANN软件安装指南](https://www.hiascend.com/document/detail/zh/canncommercial/82RC1/softwareinst/instg/instg_0000.html?Mode=PmIns&InstallType=local&OS=Ubuntu&Software=cannToolKit)》安装CANN开发套件包以及配套固件和驱动)
cmake >= 3.19
GLIBC >= 2.28
## 快速上手
- 设置CANN环境变量
```sh
# root用户安装(默认路径)
source /usr/local/Ascend/ascend-toolkit/set_env.sh
```
- 共享内存库编译
编译共享内存库,设置共享内存库环境变量:
```sh
cd shmem
bash scripts/build.sh
source install/set_env.sh
```
- run包使用
软件包名为:SHMEM_{version}_linux-{arch}.run
其中,{version}表示软件版本号,{arch}表示CPU架构。
安装run包(需要依赖cann环境)
```sh
chmod +x 软件包名.run # 增加对软件包的可执行权限
./软件包名.run --check # 校验软件包安装文件的一致性和完整性
./软件包名.run --install # 安装软件,可使用--help查询相关安装选项
```
出现提示`xxx install success!`则安装成功
shmem 默认开启tls通信加密。如果需要关闭,需要调用接口主动关闭:
```c
int32_t ret = shmem_set_conf_store_tls(false, NULL, 0);
```
具体细节详见安全声明章节
执行一个样例matmul_allreduce算子。
1.在shmem/目录编译:
```sh
bash scripts/build.sh
```
2.在shmem/examples/matmul_allreduce目录执行demo:
```sh
bash scripts/run.sh -ranks 2 -M 1024 -K 2048 -N 8192
```
注:example及其他样例代码仅供参考,在生产环境中请谨慎使用。
## 功能自测用例
- 共享内存库接口单元测试
在工程目录下执行
```sh
bash scripts/build.sh -uttests
bash scripts/run.sh
```
run.sh脚本提供-ranks -ipport -test_filter等参数自定义执行用例的卡数、ip端口、gtest_filter等
例
```sh
# 8卡,ip:port 127.0.0.1:8666,运行所有*Init*用例
bash scripts/run.sh -ranks 8 -ipport "tcp://127.0.0.1:8666" -test_filter Init
```
## python侧test用例
[python接口API列表](./pythonAPI.md)
1. 在scripts目录下编译的时候,带上build python的选项
```sh
bash build.sh -python_extension
```
2. 在install目录下,source环境变量
```sh
source set_env.sh
```
3. 在src/python目录下,进行setup,获取到wheel安装包
```sh
python3 setup.py bdist_wheel
```
4. 在src/python/dist目录下,安装wheel包
```sh
pip3 install shmem-xxx.whl --force-reinstall
```
5. 设置是否开启TLS认证,默认开启,若关闭TLS认证,请使用如下接口
```python
import shmem as shm
shm.set_conf_store_tls(False, "") # 关闭tls认证
```
```python
import shmem as shm
tls_info = "xxx"
shm.set_conf_store_tls(True, tls_info) # 开启TLS认证
```
6. 使用torchrun运行测试demo
```sh
torchrun --nproc-per-node=k test.py # k为想运行的ranksize
```
看到日志中打印出“test.py running success!”即为demo运行成功