CANN/HCOMM CCU_ELSE执行控制

📅 2026/6/19 14:23:03
CANN/HCOMM CCU_ELSE执行控制
CCU_ELSE【免费下载链接】hcommHCOMMHuawei Communication是HCCL的通信基础库提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持功能说明在CCU kernel内开始CCU_IF的else分支当CCU_IF条件不满足时执行该分支。CCU_ELSE是一个预处理器宏必须紧跟在CCU_IF { body }之后使用不能独立出现与CCU_IF形成完整的if-else结构。[!NOTE]说明CCU_ELSE是可选的。CCU_IF可以单独使用不搭配CCU_ELSE也是合法的。宏语法CCU_IF(condExpr) { // then 分支body } CCU_ELSE { // else 分支body }完整用法请参见CCU_IF。参数说明CCU_ELSE无参数与前一个CCU_IF自动配对用户无需传入任何参数。返回值CCU_ELSE为预处理器宏本身不返回CcuResult在正常用法下不会失败。约束说明CCU_ELSE必须紧跟在CCU_IF { body }之后不可独立出现不可出现在其他位置。CCU_IF { body } CCU_ELSE { else-body }之间不允许插入其他CCU API调用。[!CAUTION]注意 中间一旦插入任何CCU API调用如数据搬运、同步等框架会自动提前闭合该CCU_IF随后到达的CCU_ELSE找不到可配对的CCU_IF其body会被跳过、注册仍然成功运行期不会有任何错误返回值极难调试。务必保持CCU_IF { ... } CCU_ELSE { ... }之间无任何CCU API调用。不支持else if写法如需多分支可嵌套CCU_IFCCU_IF(v 0) { // case 0 } CCU_ELSE { CCU_IF(v 1) { // case 1 } CCU_ELSE { // other case } }调用示例using namespace AscendC::ccu; CcuResult MyKernel(CcuKernelArg arg) { Variable mode; LoadArg(mode, 0); CCU_IF(mode 0) { // 模式0处理 Variable result; result 100; } CCU_ELSE { // 非模式0处理 Variable result; result 200; } return CCU_SUCCESS; }【免费下载链接】hcommHCOMMHuawei Communication是HCCL的通信基础库提供通信域以及通信资源的管理能力。项目地址: https://gitcode.com/cann/hcomm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考