【2023 · CANN训练营第一季】笔记
【摘要】 算子执行的不同模式TIK C++算子可用CPU模式或NPU模式执行CPU模式:算子功能调试用,可以模拟在NPU上的计算行为,不需要依赖昇腾设备NPU模式:算子功能/性能调试,可以使用NPU的强大算力进行运算加速使用内置宏__CCE_KT_TEST__标识被宏包括的代码在特定的模式下编译#ifdef __CCE_KT_TEST__ 表示在CPU模式下会编译该段代码#ifndef __CCE_K...
算子执行的不同模式
TIK C++算子可用CPU模式或NPU模式执行
CPU模式:算子功能调试用,可以模拟在NPU上的计算行为,不需要依赖昇腾设备
NPU模式:算子功能/性能调试,可以使用NPU的强大算力进行运算加速
使用内置宏__CCE_KT_TEST__标识被宏包括的代码在特定的模式下编译
#ifdef __CCE_KT_TEST__ 表示在CPU模式下会编译该段代码
#ifndef __CCE_KT_TEST__ 表示在NPU模式下会编译该段代码
GlobalTensor用来存放Global Memory(外部存储)的全局数据
定义原型
template <typename T> class GlobalTensor {
// 传入全局数据的指针,并手动设置一个buffer size,初始化GlobalTensor
void SetGlobalBuffer(__gm__ T* buffer, uint32_t bufferSize);
LocalTensor用于存放核上Local Memory(内部存储)的数据
定义原型
template <typename T> class LocalTensor {
T GetValue(const uint32_t offset) const; // 获取 LocalTensor 中的某个值,返回 T 类型的立即数。
template <typename T1> void SetValue(const uint32_t offset, const T1 value) const; // 设置 LocalTensor 中的某个值。offset单位为element
// 获取距原LocalTensor起始地址偏移量为offset的新LocalTensor,注意offset不能超过原有LocalTensor的size大小。offset单位为element
LocalTensor operator[](const uint32_t offset) const;
uint32_t GetSize() const; // 获取当前LocalTensor size大小
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)