HCOMM Experimental NIC Plugin 使用说明

📅 2026/7/10 21:56:16
HCOMM Experimental NIC Plugin 使用说明
HCOMM Experimental NIC Plugin 使用说明【免费下载链接】hcommHCOMMHuawei Communication是HCCL的通信基础库提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm功能简介HCOMM Experimental NIC Plugin 用于在通用服务器场景下扩展 host 侧网卡通信实现。插件以独立.so形式构建和部署HCOMM 在创建 HOST endpoint/channel 时根据EndpointDesc.protocol查找已注册插件 命中插件协议后走插件实现未命中时继续走原有内置实现。当前目录提供两个示例插件插件产物注册协议HOST RoCE 插件libhcomm_cpu_roce_plugin.soCOMM_PROTOCOL_ROCEHOST UB 插件libhcomm_cpu_ub_plugin.soCOMM_PROTOCOL_UBC_TP、COMM_PROTOCOL_UBC_CTP编译打包编译前请先参考仓库根目录下的docs/zh/build/build.md完成依赖安装、CANN 软件包安装和环境变量配置。进入代码仓根目录后执行以下命令编译 host 包并开启 experimental 插件bash build.sh --pkg --experimental如需同时编译 host device 包执行bash build.sh --pkg --full --experimental如果编译环境无法访问网络可在联网环境下载第三方依赖包后上传到编译环境并通过--cann_3rd_lib_path指定依赖包路径bash build.sh --pkg --experimental --cann_3rd_lib_path{your_3rd_party_path}编译完成后会在仓库根目录的build_out目录生成 HCOMM 软件包./build_out/cann-hcomm_version_linux-arch.run其中version为软件版本号arch为系统架构例如x86_64或aarch64。安装部署安装编译生成的 HCOMM 软件包bash ./build_out/cann-hcomm_version_linux-arch.run --full请将命令中的软件包名称替换为实际生成的文件名。安装完成后experimental 插件会安装到 HCOMM 插件目录${ASCEND_HOME_PATH}/hcomm_plugin/libhcomm_cpu_roce_plugin.so ${ASCEND_HOME_PATH}/hcomm_plugin/libhcomm_cpu_ub_plugin.so手动调试时也可以直接将插件.so复制到${ASCEND_HOME_PATH}/hcomm_plugin/目录。验签说明host-only 插件使用不涉及 device 包验签如果编译安装--full包并运行上板测试关闭验签步骤参考docs/zh/build/build.md。运行启用运行前先加载 CANN/HCOMM 环境变量。默认路径安装时可执行source /usr/local/Ascend/cann/set_env.sh指定路径安装时可执行source ${install_path}/cann/set_env.sh插件加载规则如下ASCEND_HOME_PATH非空时HCOMM 扫描${ASCEND_HOME_PATH}/hcomm_plugin/*.so。ASCEND_HOME_PATH为空时HCOMM 读取HCOMM_NIC_PLUGIN_SO指定的插件路径。HCOMM_NIC_PLUGIN_SO支持使用冒号分隔多个.so路径。示例export HCOMM_NIC_PLUGIN_SO/path/to/libhcomm_cpu_roce_plugin.so:/path/to/libhcomm_cpu_ub_plugin.so业务代码无需直接调用插件接口。HCOMM 在HcommEndpointCreate创建 HOST endpoint 时会根据EndpointDesc.protocol查找插件如果协议由插件注册则后续 endpoint、channel 和数据面接口会分发到插件 ops如果没有匹配插件则保持原有内置路径。使用条件和限制插件仅对EndpointDesc.loc.locType ENDPOINT_LOC_TYPE_HOST的 endpoint 生效。当前示例插件面向通用服务器 host-only 场景。当前加载器在检测到 runtime device 数量非 0 时会跳过插件加载。多个插件注册同一协议时后加载的插件会覆盖先加载插件。插件 ABI 需要匹配HcommNicPluginInfo、HcommNicEndpointOps、HcommNicChannelOps中定义的 magic word、version 和 size。自定义插件开发入口自定义插件需要导出以下 C ABI 符号const HcommNicPluginInfo *HcommNicPluginGetInfo(void); int32_t HcommNicPluginCreateEndpoint( const EndpointDesc *endpointDesc, void **outCtx, HcommNicEndpointOps **outOps); int32_t HcommNicPluginCreateChannel( void *epCtx, const HcommChannelDesc *channelDesc, void **outCtx, HcommNicChannelOps **outOps);开发时需要在HcommNicPluginInfo中声明插件名称和支持的CommProtocol。为 endpoint 填充HcommNicEndpointOps实现初始化、内存注册、导出、导入和销毁等接口。为 channel 填充HcommNicChannelOps实现初始化、状态查询、读写、notify、fence 和销毁等接口。保持 ABI header 中的 magic word、version 和 size 与hcomm_nic_plugin.h定义一致。可参考以下文件host_roce_plugin.ccHOST RoCE 插件入口。host_ub_plugin.ccHOST UB 插件入口。nic_plugin_ops.h示例插件 ops 适配模板。plugin_core.cc插件公共辅助逻辑。问题定位如插件未生效可按以下顺序检查确认构建时已添加--experimental并且软件包中包含插件.so。确认插件.so已安装到${ASCEND_HOME_PATH}/hcomm_plugin/。确认ASCEND_HOME_PATH或HCOMM_NIC_PLUGIN_SO设置符合当前加载规则。确认业务创建的是 HOST endpoint即EndpointDesc.loc.locType ENDPOINT_LOC_TYPE_HOST。确认EndpointDesc.protocol已在插件HcommNicPluginInfo.protocols中注册。查看运行日志中的[NicPlugin]关键字确认插件是否被扫描、加载和注册协议。【免费下载链接】hcommHCOMMHuawei Communication是HCCL的通信基础库提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考