简要概述
CNCLCambricon Communications Library,寒武纪通信库)是面向MLU设计的高性能通信库,是运行在 CNRT (Cambricon Runtime Library,寒武纪运行时库) 之上,完成MLU设备之间数据传输操作的通信库。
『CNCL帮助应用开发者优化了基于MLU进行多机多卡的集合通信(Collective)操作。CNCL支持多种MLU处理芯片的互联技术,包括PCIe、MLU-Link、RoCE、Infiniband Verbs 以及 Sockets。CNCL能够根据芯片的互联拓扑关系,自动的选择最优的通信算法和数据传输路径,从而最大化利用传输带宽完成不同的通信操作。
有关MLU系列产品介绍详细信息请查阅大大通博文《寒武纪产品简介》。 』
环境依赖
CNCL主要支持的Linux平台有:CentOS7.6/8.3, Ubuntu 16.04/Ubuntu 18.04/Ubuntu 20.04, Debian9/10。
CNCL依赖库:CNDrv,CNRT,CNDev,CNCC,CNAS,CNPX。
依赖中寒武纪相关的依赖库均可以通过安装寒武纪 CNToolkit 工具包获得。
部署CNCL
用户在使用Cambricon CNCL库之前需要先安装寒武纪CNToolkit工具包,详细安装步骤可以参考大大通博文《寒武纪MLU SDK 之CNToolkit介绍和使用说明》。
安装完成CNToolkit工具包后,执行下面命令部署Cambricon CNCL。默认头文件(cncl.h)会安装在 /usr/local/neuware/include目录下,链接库文件(libcncl.so)会安装在 /usr/local/neuware/lib64 目录下,示例程序会安装在 /usr/local/neuware/samples/cncl 目录下,其目录结构及说明如下:
|-- cncl
├── CMakeLists.txt cmake描述文件,用于编译样例。
├── README.md 样例描述与指导。
├── allreduce_demo.cc cnclAllReduce接口使用样例。
├── broadcast_demo.cc cnclBroadcast接口使用样例。
└── build.sh 首先检查依赖库文件是否完整,然后使用cmake编译所有样例。
依赖库目录结构
```
|-- neuware_home
| |-- include
| | |-- cncl.h
| | |-- cnrt.h
| |-- lib64
| | |-- libcndev.so
| | |-- libcndrv.so
| | |-- libcnrt.so
| | |-- libcncl.so
|
```
- For Ubuntu
命令行执行如下命令安装:
sudo apt install cncl_0.8.0-1.ubuntu16.04_amd64.deb
或者 sudo dpkg -I cncl_0.8.0-1.ubuntu16.04_amd64.deb
- For Centos
命令行执行如下命令安装:
sudo rpm -ivh cncl-<x.y.z>-1.el7.x86_64.rpm 或者 sudo yum install cncl-<x.y.z>-1.el7.x86_64.rpm
- For Debian
sudo dpkg -i cncl_<x.y.z>-1.debian<v>_amd64.deb 或者 sudo apt install cncl_<x.y.z>-1.debian<v>_amd64.deb
编译运行
- cd path2/cncl
export NEUWARE_HOME=/usr/local/neuware
./build.sh运行脚本编译sample
2.运行样例(如需源码可查看参考资料的链接中”示例程序”)
参考资料
https://www.cambricon.com/docs/sdk_1.7.0/cncl_1.2.1/user_guide/4_quickstart/installation/index.html
评论