news 2026/7/18 11:50:19

Ascend C SIMT Cache一致性接口文档

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ascend C SIMT Cache一致性接口文档

asc_dcci_single

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品AI Core:不支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:不支持

功能说明

该接口用于刷新指定地址所在的Cache Line,保证数据读取时Cache的一致性。

在SIMT编程中,写入数据时会立即写入Global Memory,使其他核可见,因此不存在核间一致性问题。当从Global Memory读取数据时,该数据可能已被其他核修改,此时应使用dcci接口直接访问Global Memory,以获取最新数据。

函数原型

inline void asc_dcci_single(void *dst)

参数说明

表1参数说明

参数名输入/输出描述
dst输入Global Memory的地址。

返回值说明

约束说明

输入必须为有效的Global Memory地址。传入非Global Memory地址或无效地址时,不能保证Cache刷新行为有效。

需要包含的头文件

使用该接口需要包含"simt_api/device_functions.h"头文件。

#include "simt_api/device_functions.h"

调用示例

  • SIMT编程场景:

    __global__ __launch_bounds__(1024) void kernelDcci_single(uint32_t* data, uint32_t* output) { // 线程块0的线程0进行数据写操作 if (blockIdx.x == 0 && threadIdx.x == 0) { data[1] = 10; // 写入数据 asc_threadfence(); // 确保数据写入完成 data[0] = 1; // 标志位,数据已就绪 } // 线程块1的线程0进行数据读操作 if (blockIdx.x == 1 && threadIdx.x == 0) { while (data[0] != 1) { asc_dcci_single((void*)(data)); // 从Global Memory读标志位 } output[0] = data[1]; // 数据就绪,获取数据 } }
  • SIMD与SIMT混合编程场景:

    __simt_vf__ __launch_bounds__(1024) inline void kernelDcci_single(__gm__ uint32_t* data, __gm__ uint32_t* output) { // 线程块0的线程0进行数据写操作 if (blockIdx.x == 0 && threadIdx.x == 0) { data[1] = 10; // 写入数据 asc_threadfence(); // 确保数据写入完成 data[0] = 1; // 标志位,数据已就绪 } // 线程块1的线程0进行数据读操作 if (blockIdx.x == 1 && threadIdx.x == 0) { while (data[0] != 1) { asc_dcci_single((__gm__ void*)(data)); // 从Global Memory读标志位 } output[0] = data[1]; // 数据就绪,获取数据 } }

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 11:49:44

FunClip终极指南:3步搭建本地AI智能视频剪辑系统

FunClip终极指南:3步搭建本地AI智能视频剪辑系统 【免费下载链接】FunClip FunASR-powered video transcription, subtitle generation, and LLM-assisted clipping tool with a local Gradio UI. 项目地址: https://gitcode.com/GitHub_Trending/fu/FunClip …

作者头像 李华
网站建设 2026/7/18 11:49:13

高校微电子封装实验课程体系与教学设备配置

高校微电子封装实验课程体系与教学设备配置长三角地区高校微电子封装实验课程建设已形成"理论-仿真-实践"三位一体教学模式,但设备配置与产业需求仍存在30%的技术代差。高校实验室普遍面临设备更新周期长(5-8年)、学生人均操作时间不足(平均技术背景微电子…

作者头像 李华
网站建设 2026/7/18 11:47:24

深入解析TI MSS_GIO寄存器:从原理到实战的嵌入式GPIO编程指南

1. MSS_GIO模块架构与设计哲学在嵌入式开发领域,通用输入输出(GIO)接口是连接微控制器与外部物理世界的桥梁。它不像UART、SPI这类专用外设有复杂的协议栈,其核心任务简单而直接:读取外部信号的电平状态,或…

作者头像 李华