CANN/hixl C++示例指南
目录【免费下载链接】hixlHIXLHuawei Xfer Library是一个灵活、高效的昇腾单边通信库面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl样例介绍目录结构环境要求程序编译样例运行样例介绍功能通过LLM-DataDist接口实现分离部署场景下KvCache管理功能。目录结构├── cpp | ├── prompt_pull_cache_and_blocks.cpp // pull cache和pull blocks的prompt侧实现 | ├── decoder_pull_cache_and_blocks.cpp // pull cache和pull blocks的decoder侧实现 | ├── prompt_push_cache_and_blocks.cpp // push cache和push blocks的prompt侧实现 | ├── decoder_push_cache_and_blocks.cpp // push cache和push blocks的decoder侧实现 | ├── prompt_switch_roles.cpp // switch_roles的prompt侧实现 | ├── decoder_switch_roles.cpp // switch_roles的decoder侧实现 | ├── client_server_h2d.cpp // HIXL的client-server模式, h2d场景样例 | ├── server_server_d2d.cpp // HIXL的server-server模式, d2d场景样例 | ├── fabric_mem_d2d.cpp // HIXL的fabric-mem模式下的d2d场景样例 | ├── CMakeLists.txt // 编译脚本样例配置说明部分用例支持在A5环境使用RDMA链路执行且需要在双机上执行会在对应用例中进行特别说明。在执行前需要手动配置local_comm_res配置格式参考通信设备配置。可通过以下操作获取 host 网卡的 ip 信息# 查询RoCE设备和网口的对应关系查看状态为Up的网口名 ibdev2netdev # 根据网口名找出对应的ip信息 ifconfig程序编译参考构建里的编译执行章节利用build.sh的--examples参数进行编译。编译结束后在build/examples/cpp目录下生成多个可执行文件。样例运行1. prompt/decoder样例说明所有样例需要成对运行prompt侧和decoder侧执行间隔时间不要过长样例中decoder侧设置WAIT_PROMPT_TIME为5sprompt侧设置WAIT_TIME为10s用户可根据实际情况自行修改这两个变量的值以保证用例成功运行。下面所有样例是以prompt和decoder运行在相同机器上为前提编写将local_ip和remote_ip设为相同。配置环境变量若运行环境上安装的“Ascend-cann-toolkit”包环境变量设置如下source ${HOME}/Ascend/cann/set_env.sh“${HOME}/Ascend”请替换相关软件包的实际安装路径。若运行环境上安装的“CANN-XXX.run”包环境变量设置如下source ${HOME}/Ascend/latest/bin/setenv.bash“${HOME}/Ascend”请替换相关软件包的实际安装路径。在运行环境执行可执行文件。(1) 执行pull_cache_and_blocks此样例介绍了decoder向prompt进行pull cache和pull blocks流程其中link和pull的方向与角色无关可以根据需求更改执行prompt_pull_cache_and_blocks, 参数为device_id和local_ip, 其中device_id为prompt要使用的device_id, local_ip为prompt所在host的ip, 如:./prompt_pull_cache_and_blocks 0 10.10.170.1执行decoder_pull_cache_and_blocks, 参数为device_id、local_ip和remote_ip, 其中device_id为decoder要使用的device_id, local_ip为decoder所在host的ipremote_ip为prompt所在host的ip如:./decoder_pull_cache_and_blocks 2 10.170.10.1 10.170.10.1若在A5环境执行还需要增加参数local_comm_res如# prompt主机 HCCL_INTRA_ROCE_ENABLE1 ./prompt_pull_cache_and_blocks 0 10.10.170.0 ‘{net_instance_id:superpod1_1,endpoint_list:[{protocol:roce,comm_id:1.0.0.1,placement:host}],version:1.3}’ # decoder主机 HCCL_INTRA_ROCE_ENABLE1 ./decoder_pull_cache_and_blocks 0 10.170.10.1 10.170.10.0 ‘{net_instance_id:superpod1_1,endpoint_list:[{protocol:roce,comm_id:1.0.0.2,placement:host}],version:1.3}’(2) 执行push_cache_and_blocks此样例介绍了prompt向decoder进行push cache和push blocks流程其中link和push的方向与角色无关可以根据需求更改执行prompt_push_cache_and_blocks, 参数为device_id, local_ip与remote_ip 其中device_id为prompt要使用的device_id, local_ip为prompt所在host的ipremote_ip为prompt所在host的ip, 如:./prompt_push_cache_and_blocks 0 10.10.10.1 10.10.10.1执行decoder_push_cache_and_blocks, 参数为device_id与local_ip, 其中device_id为decoder要使用的device_id, local_ip为decoder所在host的ip, 如:./decoder_push_cache_and_blocks 4 10.10.10.1若在A5环境执行还需要增加参数local_comm_res如# prompt主机 HCCL_INTRA_ROCE_ENABLE1 ./prompt_push_cache_and_blocks 0 10.10.10.0 10.10.10.1 ‘{net_instance_id:superpod1_1,endpoint_list:[{protocol:roce,comm_id:1.0.0.1,placement:host}],version:1.3}’ # decoder主机 HCCL_INTRA_ROCE_ENABLE1 ./decoder_push_cache_and_blocks 0 10.10.10.1 ‘{net_instance_id:superpod1_1,endpoint_list:[{protocol:roce,comm_id:1.0.0.2,placement:host}],version:1.3}’(3) 执行switch_roles此样例介绍了prompt和decoder进行角色切换并结合pull以及push使用流程执行prompt_switch_roles, 参数为device_id、local_ip和remote_ip, 其中device_id为prompt要使用的device_id, local_ip为prompt所在host的ip, remote_ip为decoder所在host的ip如:./prompt_switch_roles 0 10.10.170.1 10.170.10.1执行decoder_switch_roles, 参数为device_id、local_ip和remote_ip, 其中device_id为decoder要使用的device_id, local_ip为decoder所在host的ipremote_ip为prompt所在host的ip如:./decoder_switch_roles 2 10.170.10.1 10.170.10.12. HIXL样例说明所有样例需要成对运行client侧和server侧执行间隔时间不要过长client-server用例中设置WAIT_REG_TIME为5sWAIT_TRANS_TIME为20sserver-server用例中设置WAIT_TIME为5s用户可根据实际情况自行修改这两个变量的值以保证用例成功运行。下面所有用例都只能在单机上执行local_engine和remote_engine的ip部分设为相同server侧engine为ip:port形式client侧engine为ip形式。如果需要多机执行需对用例进行改造。配置环境变量若运行环境上安装的“Ascend-cann-toolkit”包环境变量设置如下source ${HOME}/Ascend/cann/set_env.sh“${HOME}/Ascend”请替换相关软件包的实际安装路径。若运行环境上安装的“CANN-XXX.run”包环境变量设置如下source ${HOME}/Ascend/latest/bin/setenv.bash“${HOME}/Ascend”请替换相关软件包的实际安装路径。在运行环境执行可执行文件。(1) 执行client_server_h2d, client-server模式h2d场景执行client client_server_h2d, 参数为device_id、local engine和remote engine, 其中device_id为client要使用的device_id如:HCCL_INTRA_ROCE_ENABLE1 ./client_server_h2d 0 10.10.10.0 10.10.10.0:16000执行server client_server_h2d, 参数为device_id、local engine, 其中device_id为server要使用的device_id, 如:HCCL_INTRA_ROCE_ENABLE1 ./client_server_h2d 1 10.10.10.0:16000(2) 执行server_server_d2d, 均作为serverd2d场景执行server1 server_server_d2d, 参数为device_id、local engine和remote engine, 其中device_id为当前engine要使用的device_id, 如:HCCL_INTRA_ROCE_ENABLE1 ./server_server_d2d 0 10.10.10.0:16000 10.10.10.0:16001执行server2 server_server_d2d, 参数为device_id、local engine和remote engine, 其中device_id为当前engine要使用的device_id, 如:HCCL_INTRA_ROCE_ENABLE1 ./server_server_d2d 1 10.10.10.0:16001 10.10.10.0:16000注HCCL_INTRA_ROCE_ENABLE1表示使用RDMA进行传输(3) 执行fabric_mem_d2d, fabric mem模式下d2d场景注意要使用fabric mem模式HDK需升级至26.0以上版本执行server1 fabric_mem_d2d, 参数为device_id、local engine和remote engine, 其中device_id为当前engine要使用的device_id如:./fabric_mem_d2d 0 127.0.0.1:16000 127.0.0.1:16001执行server2 fabric_mem_d2d, 参数为device_id、local engine和remote engine, 其中device_id为当前engine要使用的device_id, 如:./fabric_mem_d2d 1 127.0.0.1:16001 127.0.0.1:16000【免费下载链接】hixlHIXLHuawei Xfer Library是一个灵活、高效的昇腾单边通信库面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2598993.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!