当前位置: 首页 > news >正文

CANN运行时TDT通道容量示例

1_channel_capacity

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

概述

本示例演示带容量限制的 TDT Channel,重点观察容量查询、清理与停止操作,以及切片信息和 Tensor 类型查询。

产品支持情况

本样例支持以下产品:

产品是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

  • 创建一个容量为 2 的 Channel,以满足接口文档要求的最小容量限制。
  • 发送第一份 Dataset 后查询通道大小。
  • 以非阻塞方式继续发送 Dataset,观察容量受限时的返回结果;如果第二次发送成功,则继续第三次发送直到触发容量压力。
  • 调用 SliceInfo、TensorType 和 DatasetName 查询接口补充检查。
  • 完成 Channel 清理、停止和销毁。

说明

在当前 Runtime 未启用队列式 TDT Channel 能力、相关依赖未就绪,或底层队列初始化/创建失败时,acltdtCreateChannelWithCapacity可能返回nullptr。样例当前会将该情况记录为告警,跳过容量受限演示流程,并在完成清理后正常退出。

编译运行

环境安装详情以及运行详情请见 example 目录下的 README。

运行步骤如下:

# ${install_root} 替换为 CANN 安装根目录,默认安装在`/usr/local/Ascend`目录 source ${install_root}/cann/set_env.sh export ASCEND_INSTALL_PATH=${install_root}/cann # 编译运行 bash run.sh

CANN RUNTIME API

在该Sample中,涉及的关键功能点及其关键接口,如下所示:

  • 初始化
    • 调用aclInit接口初始化AscendCL配置。
    • 调用aclFinalize接口实现AscendCL去初始化。
  • Device管理
    • 调用aclrtSetDevice接口指定用于运算的Device。
    • 调用aclrtResetDeviceForce接口强制复位当前运算的Device,回收Device上的资源。
  • 容量受限Channel创建
    • 调用acltdtCreateChannelWithCapacity接口创建带容量限制的Channel,并将容量设置为文档允许的最小值 2。
    • 调用acltdtCreateDataItem、acltdtCreateDataset和acltdtAddDataItem接口构造Dataset。
  • Tensor发送与容量查询
    • 调用acltdtSendTensor接口发送第一份Dataset,并调用acltdtQueryChannelSize接口查询Channel当前大小。
    • 在非阻塞模式下继续调用acltdtSendTensor接口,观察当前环境下何时触发容量受限返回结果。
  • 附加信息查询
    • 调用acltdtGetDataItem和acltdtGetDatasetSize接口读取Dataset中的DataItem。
    • 调用acltdtGetSliceInfoFromItem、acltdtGetTensorTypeFromItem和acltdtGetDatasetName接口查看Slice信息、Tensor类型和Dataset名称。
  • Channel清理与资源释放
    • 调用acltdtCleanChannel、acltdtStopChannel和acltdtDestroyChannel接口清理、停止并销毁Channel。
    • 调用acltdtDestroyDataItem和acltdtDestroyDataset接口释放Dataset资源。

已知 issue

暂无。

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/786854/

相关文章:

  • 基于Agent-as-a-Service架构的多智能体编排平台设计与实现
  • ARM指令集开发与SVC/SWP指令实战指南
  • AI+MrP:大语言模型与偏差校正融合的民意调查新范式
  • Godot双网格瓦片地图系统:实现逻辑与渲染分离的2D地图架构
  • CANN逆排列算子文档
  • Rust内存布局深度解析:从栈到堆的高效管理
  • 一文讲透 .NET 中的 `GetHashCode`:从一段错误的去重代码说起
  • Helm Charts 实战:从用户视角构建生产就绪的Kubernetes应用部署模板
  • 2026年比较好的纯氮气保护铝钎焊炉公司哪家好 - 行业平台推荐
  • AI Agent安全审计实战:开源工具Have I Been Clawned深度解析
  • 提示工程实战指南:从核心心法到工程化落地
  • 为Claude Code编程助手配置稳定可靠的API后端服务
  • 基于Helm与Kubernetes的5G核心网云原生部署实践
  • ai应用开发中如何利用多模型能力提升系统鲁棒性
  • 为Cursor编辑器打造专属浅色主题:从色彩体系到实践应用
  • 2026年05月09日最热门的开源项目(Github)
  • ArkUI电商首页完整实战
  • CANN/ATVOSS块调度运行接口
  • 人与人的四种差别
  • 5分钟学会:无需越狱导出iOS微信聊天记录的终极方案
  • Hyprland高效截图工具链:集成hyprshot、swappy与pngquant的一键工作流
  • ARM GICv3虚拟化架构与ICH_LR寄存器解析
  • 从零搭建轻量级夜间构建系统:基于Docker与Cron的自动化实践
  • AI应用测试工程2026:如何系统化测试你的LLM应用
  • 基于Vue 3与Vite的快速后台管理框架:fast-soy-admin深度解析
  • 在Taotoken控制台中清晰追踪项目成本与各模型消耗明细
  • BLDC电机控制原理与PID优化实践
  • DeepSeek API调用延迟怎么优化?首字生成时间怎么降低?
  • 边缘部署LLM的混合精度量化技术与优化实践
  • NCM文件格式逆向解析与音频转换技术实现