已合并
接口文档中添加头文件路径说明 #5633
JC1126创建于 9月3日
接口文档中添加头文件路径说明 #5633
已合并
共 522 个文件变更+1044-4
| @@ -26,7 +26,7 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | -头文件路径为:`"c_api/atomic/atomic.h"`。 | 29 | +头文件路径为:`"c_api/atomic/datamove_atomic.h"`。 |
| 30 | 30 | ||
| 31 | 与[asc_set_atomic_add](asc_set_atomic_add.md)、[asc_set_atomic_max](asc_set_atomic_max.md)、[asc_set_atomic_min](asc_set_atomic_min.md)接口配合使用,用于在完成原子操作后关闭原子操作,避免影响后续搬运。 | 31 | 与[asc_set_atomic_add](asc_set_atomic_add.md)、[asc_set_atomic_max](asc_set_atomic_max.md)、[asc_set_atomic_min](asc_set_atomic_min.md)接口配合使用,用于在完成原子操作后关闭原子操作,避免影响后续搬运。 |
| 32 | 32 | ||
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/datamove_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 原子累加过程:将待搬运到GM的数据和GM上已有数据进行求和,然后将求和结果写入GM。本接口对后续目的地址为GM的数据搬运指令开启原子累加,不同产品支持的数据搬运通路请参考[约束说明](#约束说明)。 | 31 | 原子累加过程:将待搬运到GM的数据和GM上已有数据进行求和,然后将求和结果写入GM。本接口对后续目的地址为GM的数据搬运指令开启原子累加,不同产品支持的数据搬运通路请参考[约束说明](#约束说明)。 |
| 30 | 32 | ||
| 31 | 接口可选择不同的函数原型来设定不同的累加数据类型。 | 33 | 接口可选择不同的函数原型来设定不同的累加数据类型。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/datamove_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 设置对后续的从Unified Buffer(UB)/L0C Buffer/L1 Buffer到GM的数据传输开启原子比较取大操作。数据类型支持int8_t、int16_t、half、bfloat16_t、int32_t、float。 | 31 | 设置对后续的从Unified Buffer(UB)/L0C Buffer/L1 Buffer到GM的数据传输开启原子比较取大操作。数据类型支持int8_t、int16_t、half、bfloat16_t、int32_t、float。 |
| 30 | 开启原子比较取大后,后续执行搬运操作从UB/L0C Buffer/L1 Buffer到GM时,将待拷贝的内容和GM已有内容进行比较,将最大值写入GM。 | 32 | 开启原子比较取大后,后续执行搬运操作从UB/L0C Buffer/L1 Buffer到GM时,将待拷贝的内容和GM已有内容进行比较,将最大值写入GM。 |
| 31 | <!-- npu="950" id8 --> | 33 | <!-- npu="950" id8 --> |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/datamove_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 设置对后续的从Unified Buffer(UB)/L0C Buffer/L1 Buffer到GM的数据传输开启原子比较取小操作。数据类型支持int8_t、int16_t、half、bfloat16_t、int32_t、float。 | 31 | 设置对后续的从Unified Buffer(UB)/L0C Buffer/L1 Buffer到GM的数据传输开启原子比较取小操作。数据类型支持int8_t、int16_t、half、bfloat16_t、int32_t、float。 |
| 30 | 开启原子比较取小后,后续执行搬运操作从UB/L0C Buffer/L1 Buffer到GM时,将待拷贝的内容和GM已有内容进行比较,将最小值写入GM。 | 32 | 开启原子比较取小后,后续执行搬运操作从UB/L0C Buffer/L1 Buffer到GM时,将待拷贝的内容和GM已有内容进行比较,将最小值写入GM。 |
| 31 | <!-- npu="950" id8 --> | 33 | <!-- npu="950" id8 --> |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 对Global Memory中`address`指向的单个元素执行原子加操作。读取该元素的旧值`old_value`,将`old_value + val`写回该地址,并返回`old_value`。整个读取、计算和写回过程为原子操作。 | 31 | 对Global Memory中`address`指向的单个元素执行原子加操作。读取该元素的旧值`old_value`,将`old_value + val`写回该地址,并返回`old_value`。整个读取、计算和写回过程为原子操作。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 对Global Memory中`address`指向的单个元素执行原子按位与操作。读取该元素的旧值`old_value`,将`old_value & val`写回该地址,并返回`old_value`。整个读取、计算和写回过程为原子操作。 | 31 | 对Global Memory中`address`指向的单个元素执行原子按位与操作。读取该元素的旧值`old_value`,将`old_value & val`写回该地址,并返回`old_value`。整个读取、计算和写回过程为原子操作。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 对Global Memory中`address`指向的单个元素执行原子比较交换操作。读取该元素的旧值`old_value`,按照以下公式计算并写回新值`new_value`: | 31 | 对Global Memory中`address`指向的单个元素执行原子比较交换操作。读取该元素的旧值`old_value`,按照以下公式计算并写回新值`new_value`: |
| 30 | 32 | ||
| 31 | $$ | 33 | $$ |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 对Global Memory中`address`指向的一个`uint32_t`或`uint64_t`元素执行原子递减操作。读取该元素的旧值`old_value`,按照以下公式计算并写回新值`new_value`: | 31 | 对Global Memory中`address`指向的一个`uint32_t`或`uint64_t`元素执行原子递减操作。读取该元素的旧值`old_value`,按照以下公式计算并写回新值`new_value`: |
| 30 | 32 | ||
| 31 | $$ | 33 | $$ |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 对Global Memory中`address`指向的单个元素执行原子交换操作。读取该元素的旧值`old_value`,将`val`写回该地址以替换旧值,并返回`old_value`。整个读取和写回过程为原子操作。 | 31 | 对Global Memory中`address`指向的单个元素执行原子交换操作。读取该元素的旧值`old_value`,将`val`写回该地址以替换旧值,并返回`old_value`。整个读取和写回过程为原子操作。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 对Global Memory中`address`指向的一个`uint32_t`或`uint64_t`元素执行原子递增操作。读取该元素的旧值`old_value`,按照以下公式计算并写回新值`new_value`: | 31 | 对Global Memory中`address`指向的一个`uint32_t`或`uint64_t`元素执行原子递增操作。读取该元素的旧值`old_value`,按照以下公式计算并写回新值`new_value`: |
| 30 | 32 | ||
| 31 | $$ | 33 | $$ |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 对Global Memory中`address`指向的单个元素执行原子取大操作:读取该地址中的旧值`old_value`,比较`old_value`与输入标量值`val`,将较大值`new_value`写回该地址,并返回`old_value`。整个读取、比较和写回过程为原子操作。 | 31 | 对Global Memory中`address`指向的单个元素执行原子取大操作:读取该地址中的旧值`old_value`,比较`old_value`与输入标量值`val`,将较大值`new_value`写回该地址,并返回`old_value`。整个读取、比较和写回过程为原子操作。 |
| 30 | 32 | ||
| 31 | 计算公式如下: | 33 | 计算公式如下: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 对Global Memory中`address`指向的单个元素执行原子取小操作:读取该地址中的旧值`old_value`,比较`old_value`与输入标量值`val`,将较小值`new_value`写回该地址,并返回`old_value`。整个读取、比较和写回过程为原子操作。 | 31 | 对Global Memory中`address`指向的单个元素执行原子取小操作:读取该地址中的旧值`old_value`,比较`old_value`与输入标量值`val`,将较小值`new_value`写回该地址,并返回`old_value`。整个读取、比较和写回过程为原子操作。 |
| 30 | 32 | ||
| 31 | 计算公式如下: | 33 | 计算公式如下: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 对Global Memory中`address`指向的单个元素执行原子按位或操作:读取该地址中的旧值`old_value`,将`old_value`与输入标量值`val`进行按位或运算,将结果`new_value`写回该地址,并返回`old_value`。整个读取、计算和写回过程为原子操作。 | 31 | 对Global Memory中`address`指向的单个元素执行原子按位或操作:读取该地址中的旧值`old_value`,将`old_value`与输入标量值`val`进行按位或运算,将结果`new_value`写回该地址,并返回`old_value`。整个读取、计算和写回过程为原子操作。 |
| 30 | 32 | ||
| 31 | 计算公式如下: | 33 | 计算公式如下: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 对Global Memory中`address`指向的单个元素执行原子减操作:读取该地址中的旧值`old_value`,计算`old_value`与输入标量值`val`的差,将结果`new_value`写回该地址,并返回`old_value`。整个读取、计算和写回过程为原子操作。 | 31 | 对Global Memory中`address`指向的单个元素执行原子减操作:读取该地址中的旧值`old_value`,计算`old_value`与输入标量值`val`的差,将结果`new_value`写回该地址,并返回`old_value`。整个读取、计算和写回过程为原子操作。 |
| 30 | 32 | ||
| 31 | 计算公式如下: | 33 | 计算公式如下: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 对Global Memory中`address`指向的单个元素执行原子按位异或操作:读取该地址中的旧值`old_value`,将`old_value`与输入标量值`val`进行按位异或运算,将结果`new_value`写回该地址,并返回`old_value`。整个读取、计算和写回过程为原子操作。 | 31 | 对Global Memory中`address`指向的单个元素执行原子按位异或操作:读取该地址中的旧值`old_value`,将`old_value`与输入标量值`val`进行按位异或运算,将结果`new_value`写回该地址,并返回`old_value`。整个读取、计算和写回过程为原子操作。 |
| 30 | 32 | ||
| 31 | 计算公式如下: | 33 | 计算公式如下: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 获取原子操作启用位与原子操作类型的值,可用于校验[asc_set_store_atomic_config_v1](asc_set_store_atomic_config_v1.md)和[asc_set_store_atomic_config_v2(废弃)](../../deprecated_interface/asc_set_store_atomic_config_v2_deprecated.md)设置的原子操作启用位和原子操作类型的值是否符合预期。 | 31 | 获取原子操作启用位与原子操作类型的值,可用于校验[asc_set_store_atomic_config_v1](asc_set_store_atomic_config_v1.md)和[asc_set_store_atomic_config_v2(废弃)](../../deprecated_interface/asc_set_store_atomic_config_v2_deprecated.md)设置的原子操作启用位和原子操作类型的值是否符合预期。 |
| 30 | 32 | ||
| 31 | <!-- npu="950" id8 --> | 33 | <!-- npu="950" id8 --> |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/atomic/scalar_atomic.h"`。 | ||
| 30 | + | ||
| 29 | 设置原子操作启用位与原子操作类型的值。 | 31 | 设置原子操作启用位与原子操作类型的值。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cache_ctrl/cache_ctrl.h"`。 | ||
| 30 | + | ||
| 29 | 从源地址所在的特定GM地址预加载数据到Data Cache中,每次调用只能预加载一个Cache Line大小的数据。 | 31 | 从源地址所在的特定GM地址预加载数据到Data Cache中,每次调用只能预加载一个Cache Line大小的数据。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cache_ctrl/cache_ctrl.h"`。 | ||
| 30 | + | ||
| 29 | 在AI Core内部,Scalar单元和DMA单元都可能对Global Memory进行访问。 | 31 | 在AI Core内部,Scalar单元和DMA单元都可能对Global Memory进行访问。 |
| 30 | 32 | ||
| 31 |  \\ | 33 |  \\ |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cache_ctrl/cache_ctrl.h"`。 | ||
| 30 | + | ||
| 29 | 数据缓存失效,该指令用于使整个数据缓存无效化,且不会对处于“脏”状态的缓存行执行写回操作。换言之,所有缓存行将被直接标记为无效,其修改过但尚未同步至主存的数据将被丢弃。 | 31 | 数据缓存失效,该指令用于使整个数据缓存无效化,且不会对处于“脏”状态的缓存行执行写回操作。换言之,所有缓存行将被直接标记为无效,其修改过但尚未同步至主存的数据将被丢弃。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cache_ctrl/cache_ctrl.h"`。 | ||
| 30 | + | ||
| 29 | 获取ICache的Preload的状态。 | 31 | 获取ICache的Preload的状态。 |
| 30 | 32 | ||
| 31 | 该接口为调试接口,在[asc_icache_preload](asc_icache_preload.md)后调用,用于获取ICache的PreLoad的状态。当返回值为0时,说明ICache的PreLoad已完成;当返回值为1时,说明ICache的PreLoad未完成。 | 33 | 该接口为调试接口,在[asc_icache_preload](asc_icache_preload.md)后调用,用于获取ICache的PreLoad的状态。当返回值为0时,说明ICache的PreLoad已完成;当返回值为1时,说明ICache的PreLoad未完成。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cache_ctrl/cache_ctrl.h"`。 | ||
| 30 | + | ||
| 29 | 读取当前标量读(load)路径的L2 Cache管理策略,并返回[asc_load_l2_cache_mode](../defs/enum/asc_load_l2_cache_mode.md)枚举值。 | 31 | 读取当前标量读(load)路径的L2 Cache管理策略,并返回[asc_load_l2_cache_mode](../defs/enum/asc_load_l2_cache_mode.md)枚举值。 |
| 30 | 32 | ||
| 31 | 常用于临时切换策略前保存原配置,或在设置后做回读校验。 | 33 | 常用于临时切换策略前保存原配置,或在设置后做回读校验。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cache_ctrl/cache_ctrl.h"`。 | ||
| 30 | + | ||
| 29 | 读取当前标量写(store)路径的L2 Cache管理策略,并返回[asc_store_l2_cache_mode](../defs/enum/asc_store_l2_cache_mode.md)枚举值。 | 31 | 读取当前标量写(store)路径的L2 Cache管理策略,并返回[asc_store_l2_cache_mode](../defs/enum/asc_store_l2_cache_mode.md)枚举值。 |
| 30 | 32 | ||
| 31 | 常用于临时切换策略前保存原配置,或在设置后做回读校验。 | 33 | 常用于临时切换策略前保存原配置,或在设置后做回读校验。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cache_ctrl/cache_ctrl.h"`。 | ||
| 30 | + | ||
| 29 | 从指令所在GM地址预加载数据到对应的cacheline中。 | 31 | 从指令所在GM地址预加载数据到对应的cacheline中。 |
| 30 | 32 | ||
| 31 | 开发者手动调用该接口,能够从指令所在GM地址预加载指令到ICache中。 | 33 | 开发者手动调用该接口,能够从指令所在GM地址预加载指令到ICache中。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cache_ctrl/cache_ctrl.h"`。 | ||
| 30 | + | ||
| 29 | 配置标量单元访问Global Memory时的L2 Cache管理策略。接口通过修改CTRL寄存器对应比特域生效: | 31 | 配置标量单元访问Global Memory时的L2 Cache管理策略。接口通过修改CTRL寄存器对应比特域生效: |
| 30 | 32 | ||
| 31 | - 传入[asc_load_l2_cache_mode](../defs/enum/asc_load_l2_cache_mode.md)时,设置标量读(load)策略。 | 33 | - 传入[asc_load_l2_cache_mode](../defs/enum/asc_load_l2_cache_mode.md)时,设置标量读(load)策略。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于设置Mmad计算关闭HF32模式,其作用与[asc_enable_hf32](./asc_enable_hf32.md)相反,两个接口不同时生效。关闭HF32模式后,L0A Buffer与L0B Buffer中的`float`数据在参与Mmad计算之前不做舍入处理。 | 31 | 本接口用于设置Mmad计算关闭HF32模式,其作用与[asc_enable_hf32](./asc_enable_hf32.md)相反,两个接口不同时生效。关闭HF32模式后,L0A Buffer与L0B Buffer中的`float`数据在参与Mmad计算之前不做舍入处理。 |
| 30 | 32 | ||
| 31 | 本接口为矩阵计算相关配置接口,仅在AIC上生效。 | 33 | 本接口为矩阵计算相关配置接口,仅在AIC上生效。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于设置Mmad计算关闭HiF8模式(与[asc_enable_hif8](./asc_enable_hif8.md)相反),调用此接口后L0A Buffer/L0B Buffer中的FP8数据在参与Mmad计算之前不会被转化为hifloat8_t类型数据。 | 31 | 本接口用于设置Mmad计算关闭HiF8模式(与[asc_enable_hif8](./asc_enable_hif8.md)相反),调用此接口后L0A Buffer/L0B Buffer中的FP8数据在参与Mmad计算之前不会被转化为hifloat8_t类型数据。 |
| 30 | 32 | ||
| 31 | 本接口为矩阵计算相关配置接口,仅在AIC上生效。 | 33 | 本接口为矩阵计算相关配置接口,仅在AIC上生效。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 用于设置Mmad计算开启FP8模式。该接口会关闭HiF8模式(与[asc_enable_hif8](asc_enable_hif8.md)相反),开启该模式后L0A Buffer/L0B Buffer中的FP8数据在参与Mmad计算之前不会被转化为hifloat8_t类型数据。 | 31 | 用于设置Mmad计算开启FP8模式。该接口会关闭HiF8模式(与[asc_enable_hif8](asc_enable_hif8.md)相反),开启该模式后L0A Buffer/L0B Buffer中的FP8数据在参与Mmad计算之前不会被转化为hifloat8_t类型数据。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于设置Mmad计算开启HF32模式,开启该模式后,Mmad计算FP32数据的性能将得到提升,但会带来一定的精度损失。 | 31 | 本接口用于设置Mmad计算开启HF32模式,开启该模式后,Mmad计算FP32数据的性能将得到提升,但会带来一定的精度损失。 |
| 30 | 32 | ||
| 31 | 是否开启HF32对Mmad计算理论性能的影响见下表: | 33 | 是否开启HF32对Mmad计算理论性能的影响见下表: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于设置HF32模式舍入方式,使用该接口前需要先使用[asc_enable_hf32](asc_enable_hf32.md)开启HF32模式。 | 31 | 本接口用于设置HF32模式舍入方式,使用该接口前需要先使用[asc_enable_hf32](asc_enable_hf32.md)开启HF32模式。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 用于设置Mmad计算开启HiF8模式,开启该模式后L0A Buffer/L0B Buffer中的8bit数据将在参与矩阵乘法运算前被转化为hifloat8_t类型数据。 | 31 | 用于设置Mmad计算开启HiF8模式,开启该模式后L0A Buffer/L0B Buffer中的8bit数据将在参与矩阵乘法运算前被转化为hifloat8_t类型数据。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 本接口是Ascend C面向昇腾AI芯片的矩阵乘加(Mmad)核心计算接口,专为高性能算子开发设计,封装了昇腾NPU硬件的矩阵乘加计算能力,广泛用于神经网络层(如全连接层、卷积层)、数值计算类算子的开发,其计算公式如下: | 31 | 本接口是Ascend C面向昇腾AI芯片的矩阵乘加(Mmad)核心计算接口,专为高性能算子开发设计,封装了昇腾NPU硬件的矩阵乘加计算能力,广泛用于神经网络层(如全连接层、卷积层)、数值计算类算子的开发,其计算公式如下: |
| 30 | 32 | ||
| 31 | $$ | 33 | $$ |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于完成带有量化系数的矩阵乘加计算(MmadMx),即左矩阵A和右矩阵B均有对应的量化系数矩阵,左量化系数矩阵ScaleA和右量化系数矩阵ScaleB。在MmadMx场景中,左量化系数矩阵与左矩阵相乘,右量化系数矩阵与右矩阵相乘,然后对两个乘积的结果做矩阵乘法,其计算公式如下: | 31 | 本接口用于完成带有量化系数的矩阵乘加计算(MmadMx),即左矩阵A和右矩阵B均有对应的量化系数矩阵,左量化系数矩阵ScaleA和右量化系数矩阵ScaleB。在MmadMx场景中,左量化系数矩阵与左矩阵相乘,右量化系数矩阵与右矩阵相乘,然后对两个乘积的结果做矩阵乘法,其计算公式如下: |
| 30 | 32 | ||
| 31 | $$ | 33 | $$ |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 完成矩阵乘加操作,传入的左矩阵A为稀疏矩阵,右矩阵B为稠密矩阵。对于矩阵A,在asc_mmad_sparse计算时完成稠密化;对于矩阵B,在计算执行前的输入数据准备时自行完成稠密化(按照下文中介绍的稠密算法进行稠密化)。稠密矩阵B需要通过[asc_copy_l12l0b_sparse](../cube_datamove/asc_copy_l12l0b_sparse.md)载入,同时加载索引矩阵,索引矩阵在矩阵B稠密化的过程中生成,再用于矩阵A的稠密化。 | 31 | 完成矩阵乘加操作,传入的左矩阵A为稀疏矩阵,右矩阵B为稠密矩阵。对于矩阵A,在asc_mmad_sparse计算时完成稠密化;对于矩阵B,在计算执行前的输入数据准备时自行完成稠密化(按照下文中介绍的稠密算法进行稠密化)。稠密矩阵B需要通过[asc_copy_l12l0b_sparse](../cube_datamove/asc_copy_l12l0b_sparse.md)载入,同时加载索引矩阵,索引矩阵在矩阵B稠密化的过程中生成,再用于矩阵A的稠密化。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于设置Mmad计算关闭HF32模式,其作用与[asc_enable_hf32](asc_enable_hf32.md)相反,两个接口不同时生效。关闭HF32模式后,L0A Buffer与L0B Buffer中的`float`数据在参与Mmad计算之前不做舍入处理。 | 31 | 本接口用于设置Mmad计算关闭HF32模式,其作用与[asc_enable_hf32](asc_enable_hf32.md)相反,两个接口不同时生效。关闭HF32模式后,L0A Buffer与L0B Buffer中的`float`数据在参与Mmad计算之前不做舍入处理。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于设置HF32模式舍入方式,使用该接口前需要先使用[asc_enable_hf32](asc_enable_hf32.md)开启HF32模式。 | 31 | 本接口用于设置HF32模式舍入方式,使用该接口前需要先使用[asc_enable_hf32](asc_enable_hf32.md)开启HF32模式。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于设置矩阵乘加计算(Mmad)时逐列生成矩阵计算结果分形。该配置只改变L0C Buffer上结果分形的生成顺序,不改变计算结果、乘加次数或输出格式。 | 31 | 本接口用于设置矩阵乘加计算(Mmad)时逐列生成矩阵计算结果分形。该配置只改变L0C Buffer上结果分形的生成顺序,不改变计算结果、乘加次数或输出格式。 |
| 30 | 32 | ||
| 31 | 在开启UnitFlag的场景下,当L0C Buffer上结果分形的生成顺序与数据搬出指令的搬出顺序保持一致时,可以获得更好的性能表现,因此本接口可用于以下场景: | 33 | 在开启UnitFlag的场景下,当L0C Buffer上结果分形的生成顺序与数据搬出指令的搬出顺序保持一致时,可以获得更好的性能表现,因此本接口可用于以下场景: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于设置矩阵乘加计算(Mmad)时逐行生成矩阵计算结果分形。该配置只改变L0C Buffer上结果分形的生成顺序,不改变计算结果、乘加次数或输出格式。 | 31 | 本接口用于设置矩阵乘加计算(Mmad)时逐行生成矩阵计算结果分形。该配置只改变L0C Buffer上结果分形的生成顺序,不改变计算结果、乘加次数或输出格式。 |
| 30 | 32 | ||
| 31 | 在开启UnitFlag的场景下,当L0C Buffer上结果分形的生成顺序与数据搬出指令的搬出顺序保持一致时,可以获得更好的性能表现,因此本接口可用于以下场景: | 33 | 在开启UnitFlag的场景下,当L0C Buffer上结果分形的生成顺序与数据搬出指令的搬出顺序保持一致时,可以获得更好的性能表现,因此本接口可用于以下场景: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从GM搬运到L0A Buffer。 | 31 | 将数据从GM搬运到L0A Buffer。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将矩阵数据从Global Memory搬运到L0B Buffer。 | 31 | 将矩阵数据从Global Memory搬运到L0B Buffer。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从Global Memory搬运到L1 Buffer。以512字节的分形为单位,从GM中按行列方向的起始位置、步长切分提取多个分形矩阵搬运到L1 Buffer,搬运过程中不支持分形格式转换,用于矩阵计算所需的2D格式数据加载。 | 31 | 将数据从Global Memory搬运到L1 Buffer。以512字节的分形为单位,从GM中按行列方向的起始位置、步长切分提取多个分形矩阵搬运到L1 Buffer,搬运过程中不支持分形格式转换,用于矩阵计算所需的2D格式数据加载。 |
| 30 | 32 | ||
| 31 | 本接口仅在AIC上执行有效。 | 33 | 本接口仅在AIC上执行有效。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将矩阵数据从Global Memory搬运到L1 Buffer中,并支持不同类型的pad模式。 | 31 | 将矩阵数据从Global Memory搬运到L1 Buffer中,并支持不同类型的pad模式。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
Mdocs/zh/api/SIMD-API/c_api/cube_datamove/asc_copy_gm2l1/asc_copy_gm2l1_highdim_split_arch_3510.md+2-0
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从Global Memory搬运到L1 Buffer,数据搬运时格式和内容保持不变。高维切分是指能够通过配置数据块个数、单个数据块长度、地址偏移等搬运参数实现非连续搬运。并且此接口支持在搬运过程中按通道padding模式对32字节粒度的数据插入或移除padding。其中padding值需要通过[asc_set_gm2l1_pad](../asc_set_gm2l1_pad.md)设置。 | 31 | 将数据从Global Memory搬运到L1 Buffer,数据搬运时格式和内容保持不变。高维切分是指能够通过配置数据块个数、单个数据块长度、地址偏移等搬运参数实现非连续搬运。并且此接口支持在搬运过程中按通道padding模式对32字节粒度的数据插入或移除padding。其中padding值需要通过[asc_set_gm2l1_pad](../asc_set_gm2l1_pad.md)设置。 |
| 30 | 32 | ||
| 31 | 本接口仅在AIC上执行有效。 | 33 | 本接口仅在AIC上执行有效。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 对矩阵数据进行实时padding,完成padding后将数据从Global Memory搬运到L1 Buffer。需要与[asc_set_gm2l1_loop_size](asc_set_gm2l1_loop_size.md)、[asc_set_gm2l1_loop1_stride](asc_set_gm2l1_loop1_stride.md)、[asc_set_gm2l1_loop2_stride](asc_set_gm2l1_loop2_stride.md)和[asc_set_gm2l1_pad](asc_set_gm2l1_pad.md)配合使用。 | 31 | 对矩阵数据进行实时padding,完成padding后将数据从Global Memory搬运到L1 Buffer。需要与[asc_set_gm2l1_loop_size](asc_set_gm2l1_loop_size.md)、[asc_set_gm2l1_loop1_stride](asc_set_gm2l1_loop1_stride.md)、[asc_set_gm2l1_loop2_stride](asc_set_gm2l1_loop2_stride.md)和[asc_set_gm2l1_pad](asc_set_gm2l1_pad.md)配合使用。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从Global Memory搬运到L1 Buffer,并在搬运过程中进行DN到Nz格式的转换,使其满足后续矩阵计算对分形列连续性的要求。 | 31 | 将数据从Global Memory搬运到L1 Buffer,并在搬运过程中进行DN到Nz格式的转换,使其满足后续矩阵计算对分形列连续性的要求。 |
| 30 | 32 | ||
| 31 | 进行DN2Nz格式搬运前,需先通过[asc_set_gm2l1_nz_para](asc_set_gm2l1_nz_para.md)接口配置DN2Nz搬运的目的Nz矩阵步长与DN矩阵搬运个数。 | 33 | 进行DN2Nz格式搬运前,需先通过[asc_set_gm2l1_nz_para](asc_set_gm2l1_nz_para.md)接口配置DN2Nz搬运的目的Nz矩阵步长与DN矩阵搬运个数。 |
Mdocs/zh/api/SIMD-API/c_api/cube_datamove/asc_copy_gm2l1_nd2nz/asc_copy_gm2l1_nd2nz_arch_2201.md+2-0
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从Global Memory (GM)搬运到Level 1 cache (L1),支持在数据搬运时进行ND格式到NZ格式的转换。 | 31 | 将数据从Global Memory (GM)搬运到Level 1 cache (L1),支持在数据搬运时进行ND格式到NZ格式的转换。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
Mdocs/zh/api/SIMD-API/c_api/cube_datamove/asc_copy_gm2l1_nd2nz/asc_copy_gm2l1_nd2nz_arch_3510.md+2-0
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从Global Memory搬运到L1 Buffer,并在搬运过程中将源端按N维连续排布的ND格式数据转换为L1 Buffer侧的Nz分形排布,使其满足后续矩阵计算对分形列连续性的要求。该接口也适用于卷积格式NHWC(ND)转换为NC1HWC0格式等转换场景。 | 31 | 将数据从Global Memory搬运到L1 Buffer,并在搬运过程中将源端按N维连续排布的ND格式数据转换为L1 Buffer侧的Nz分形排布,使其满足后续矩阵计算对分形列连续性的要求。该接口也适用于卷积格式NHWC(ND)转换为NC1HWC0格式等转换场景。 |
| 30 | 32 | ||
| 31 | 进行ND2Nz格式搬运前,需先通过[asc_set_gm2l1_nz_para](../asc_set_gm2l1_nz_para.md)接口配置ND2Nz搬运的目的Nz矩阵的stride与ND矩阵搬运个数。 | 33 | 进行ND2Nz格式搬运前,需先通过[asc_set_gm2l1_nz_para](../asc_set_gm2l1_nz_para.md)接口配置ND2Nz搬运的目的Nz矩阵的stride与ND矩阵搬运个数。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 矩阵计算完成后,对结果进行量化处理,之后将处理结果搬运到GM中。量化模式共分为9种,分别为: | 31 | 矩阵计算完成后,对结果进行量化处理,之后将处理结果搬运到GM中。量化模式共分为9种,分别为: |
| 30 | - NoQuant:不开启量化功能。 | 32 | - NoQuant:不开启量化功能。 |
| 31 | - F322F16:float量化成half。量化结果不支持INF_NAN模式。 | 33 | - F322F16:float量化成half。量化结果不支持INF_NAN模式。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将矩阵计算结果从L0C Buffer搬运至Global Memory,搬运过程中可同步支持随路量化、随路激活、随路格式转换(Nz2ND/Nz2DN)等能力组合。 | 31 | 将矩阵计算结果从L0C Buffer搬运至Global Memory,搬运过程中可同步支持随路量化、随路激活、随路格式转换(Nz2ND/Nz2DN)等能力组合。 |
| 30 | 32 | ||
| 31 | 下图展示了随路量化、随路ReLU、随路格式转换、随路通道拆分以及随路通道合并的有效组合、中间数据类型和数据路径。下图中的F32-\>F16与F32-\>BF16为Cast,其余为随路scalar/tensor量化模式。 | 33 | 下图展示了随路量化、随路ReLU、随路格式转换、随路通道拆分以及随路通道合并的有效组合、中间数据类型和数据路径。下图中的F32-\>F16与F32-\>BF16为Cast,其余为随路scalar/tensor量化模式。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 矩阵计算完成后,对结果进行量化处理,之后将处理结果搬运到L1 Buffer中。量化模式共分为9种,分别为: | 31 | 矩阵计算完成后,对结果进行量化处理,之后将处理结果搬运到L1 Buffer中。量化模式共分为9种,分别为: |
| 30 | - NoQuant:不开启量化功能。 | 32 | - NoQuant:不开启量化功能。 |
| 31 | - DEQF16:int32_t量化成half。量化结果不支持INF_NAN模式。 | 33 | - DEQF16:int32_t量化成half。量化结果不支持INF_NAN模式。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 该接口用于将矩阵计算的结果从L0C Buffer搬运至L1 Buffer中,并且在搬运过程中支持与其它接口组合使用,配置多种随路能力。(目前针对量化模式的支持尚不完全,具体支持情况请以[函数原型](#函数原型)中包含的接口为准) | 31 | 该接口用于将矩阵计算的结果从L0C Buffer搬运至L1 Buffer中,并且在搬运过程中支持与其它接口组合使用,配置多种随路能力。(目前针对量化模式的支持尚不完全,具体支持情况请以[函数原型](#函数原型)中包含的接口为准) |
| 30 | 32 | ||
| 31 | 下图展示了随路量化、随路ReLU、随路格式转换、随路通道拆分以及随路通道合并的有效组合、中间数据类型和数据路径。下图中的F32-\>F16与F32-\>BF16为Cast,其余为随路scalar/tensor量化模式。 | 33 | 下图展示了随路量化、随路ReLU、随路格式转换、随路通道拆分以及随路通道合并的有效组合、中间数据类型和数据路径。下图中的F32-\>F16与F32-\>BF16为Cast,其余为随路scalar/tensor量化模式。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将矩阵计算结果从L0C Buffer搬运至Unified Buffer,搬运过程中可同步支持随路量化、随路激活、随路格式转换(Nz2ND/Nz2DN)等能力组合。 | 31 | 将矩阵计算结果从L0C Buffer搬运至Unified Buffer,搬运过程中可同步支持随路量化、随路激活、随路格式转换(Nz2ND/Nz2DN)等能力组合。 |
| 30 | 32 | ||
| 31 | 下图展示了随路量化、随路ReLU、随路格式转换、随路通道拆分以及随路通道合并的有效组合、中间数据类型和数据路径。下图中的F32-\>F16与F32-\>BF16为Cast,其余为随路scalar/tensor量化模式。 | 33 | 下图展示了随路量化、随路ReLU、随路格式转换、随路通道拆分以及随路通道合并的有效组合、中间数据类型和数据路径。下图中的F32-\>F16与F32-\>BF16为Cast,其余为随路scalar/tensor量化模式。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从L1 Buffer搬运到BiasTable Buffer中,BiasTable Buffer用于存放矩阵计算中的Bias。 | 31 | 将数据从L1 Buffer搬运到BiasTable Buffer中,BiasTable Buffer用于存放矩阵计算中的Bias。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将MMAD指令的Bias数据从L1 Buffer搬运到BiasTable Buffer中。 | 31 | 将MMAD指令的Bias数据从L1 Buffer搬运到BiasTable Buffer中。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从L1 Buffer搬运到Fixpipe Buffer中,Fixpipe Buffer用于存放量化参数。 | 31 | 将数据从L1 Buffer搬运到Fixpipe Buffer中,Fixpipe Buffer用于存放量化参数。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从L1 Buffer搬运到Fixpipe Buffer中,Fixpipe Buffer用于存放量化参数。 | 31 | 将数据从L1 Buffer搬运到Fixpipe Buffer中,Fixpipe Buffer用于存放量化参数。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从L1 Buffer搬运到Global Memory。 | 31 | 将数据从L1 Buffer搬运到Global Memory。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 负责完成矩阵计算所需的2D格式数据的搬运,搬运粒度为大小为512字节的数据分形,支持非转置与转置矩阵从L1 Buffer到L0A Buffer的数据搬运。 | 31 | 负责完成矩阵计算所需的2D格式数据的搬运,搬运粒度为大小为512字节的数据分形,支持非转置与转置矩阵从L1 Buffer到L0A Buffer的数据搬运。 |
| 30 | 32 | ||
| 31 | 对于不同的数据类型,对应的分形矩阵如下: | 33 | 对于不同的数据类型,对应的分形矩阵如下: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 3D卷积数据搬运是用于将NC1HWC0格式的Feature Map完成Image to Column展开,然后再从展开后的二维矩阵中选取指定数据块搬入对应内存位置。见图1。 | 31 | 3D卷积数据搬运是用于将NC1HWC0格式的Feature Map完成Image to Column展开,然后再从展开后的二维矩阵中选取指定数据块搬入对应内存位置。见图1。 |
| 30 | 32 | ||
| 31 | 搬运过程中是以512字节的数据分形为单位进行搬运的,此接口也可以用于普通矩阵计算所需的2D格式数据的搬运。如何使用此接口进行2D格式数据的搬运可以参考[关键特性说明](#l12l0a_3d_key_features)。支持从L1 Buffer到L0A Buffer的数据搬运。 | 33 | 搬运过程中是以512字节的数据分形为单位进行搬运的,此接口也可以用于普通矩阵计算所需的2D格式数据的搬运。如何使用此接口进行2D格式数据的搬运可以参考[关键特性说明](#l12l0a_3d_key_features)。支持从L1 Buffer到L0A Buffer的数据搬运。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 用于搬运存放在L1 Buffer里的512B大小的矩阵到L0A Buffer里。包含2D格式搬运、3D格式搬运。 | 31 | 用于搬运存放在L1 Buffer里的512B大小的矩阵到L0A Buffer里。包含2D格式搬运、3D格式搬运。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 负责完成MX矩阵计算过程中所需的左矩阵对应的量化系数的搬运,数据通路为L1 Buffer->L0A_MX Buffer。其中左量化系数矩阵以32字节(固定数据类型为`fp8_e8m0_t`、分形大小为16×2的)的数据分形为单位进行搬运。 | 31 | 负责完成MX矩阵计算过程中所需的左矩阵对应的量化系数的搬运,数据通路为L1 Buffer->L0A_MX Buffer。其中左量化系数矩阵以32字节(固定数据类型为`fp8_e8m0_t`、分形大小为16×2的)的数据分形为单位进行搬运。 |
| 30 | 32 | ||
| 31 | 其中,L0A_MX Buffer的大小为4KB,和L0A Buffer地址的映射关系如下: | 33 | 其中,L0A_MX Buffer的大小为4KB,和L0A Buffer地址的映射关系如下: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 该接口实现带转置的2D格式数据从L1 Buffer到L0A Buffer的加载。 | 31 | 该接口实现带转置的2D格式数据从L1 Buffer到L0A Buffer的加载。 |
| 30 | 32 | ||
| 31 | 下面通过示例来讲解接口功能和关键参数:下文图中一个N形或者一个Z形代表一个分形。 | 33 | 下面通过示例来讲解接口功能和关键参数:下文图中一个N形或者一个Z形代表一个分形。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 负责完成矩阵计算所需的2D格式数据的搬运,搬运粒度为大小为512字节的数据分形,支持非转置与转置矩阵从L1 Buffer到L0B buffer的数据搬运。 | 31 | 负责完成矩阵计算所需的2D格式数据的搬运,搬运粒度为大小为512字节的数据分形,支持非转置与转置矩阵从L1 Buffer到L0B buffer的数据搬运。 |
| 30 | 32 | ||
| 31 | 对于不同的数据类型,对应的分形矩阵如下: | 33 | 对于不同的数据类型,对应的分形矩阵如下: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 3D卷积数据搬运是用于将NC1HWC0格式的Feature Map完成Image to Column展开,按卷积步长、卷积核大小、膨胀系数配置生成img2col二维矩阵,再从展开后的矩阵中选取指定数据块搬运到L0B Buffer,用于3D卷积场景的矩阵计算数据加载。 | 31 | 3D卷积数据搬运是用于将NC1HWC0格式的Feature Map完成Image to Column展开,按卷积步长、卷积核大小、膨胀系数配置生成img2col二维矩阵,再从展开后的矩阵中选取指定数据块搬运到L0B Buffer,用于3D卷积场景的矩阵计算数据加载。 |
| 30 | 32 | ||
| 31 | 搬运过程中是以512字节的数据分形为单位进行搬运的,此接口也可以用于普通矩阵计算所需的2D格式数据的搬运。如何使用此接口进行2D格式数据的搬运可以参考[关键特性说明](#l12l0b_3d_key_features)。支持从L1 Buffer到L0B Buffer的数据搬运。 | 33 | 搬运过程中是以512字节的数据分形为单位进行搬运的,此接口也可以用于普通矩阵计算所需的2D格式数据的搬运。如何使用此接口进行2D格式数据的搬运可以参考[关键特性说明](#l12l0b_3d_key_features)。支持从L1 Buffer到L0B Buffer的数据搬运。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 用于搬运存放在L1 Buffer里的512B大小的矩阵到L0B Buffer里。包含2D格式搬运、3D格式搬运。 | 31 | 用于搬运存放在L1 Buffer里的512B大小的矩阵到L0B Buffer里。包含2D格式搬运、3D格式搬运。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 负责完成MX矩阵计算过程中所需的右矩阵对应的量化系数的搬运,数据通路为L1 Buffer->L0B_MX Buffer。其中右量化系数矩阵以32字节(固定数据类型为`fp8_e8m0_t`、分形大小为2×16的)的数据分形为单位进行搬运。 | 31 | 负责完成MX矩阵计算过程中所需的右矩阵对应的量化系数的搬运,数据通路为L1 Buffer->L0B_MX Buffer。其中右量化系数矩阵以32字节(固定数据类型为`fp8_e8m0_t`、分形大小为2×16的)的数据分形为单位进行搬运。 |
| 30 | 32 | ||
| 31 | 其中,L0B_MX Buffer的大小为4KB,和L0B Buffer地址的映射关系如下: | 33 | 其中,L0B_MX Buffer的大小为4KB,和L0B Buffer地址的映射关系如下: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 用于搬运存放在L1 Buffer里的512B大小的稠密权重矩阵到L0B Buffer里,同时读取128B大小的索引矩阵用于稠密矩阵的稀疏化。 | 31 | 用于搬运存放在L1 Buffer里的512B大小的稠密权重矩阵到L0B Buffer里,同时读取128B大小的索引矩阵用于稠密矩阵的稀疏化。 |
| 30 | 32 | ||
| 31 | 索引矩阵在一个int8_t的地址中的排布是逆序排布的,例如:索引矩阵1 2 0 1 0 2 1 0,在地址中的排布为1 0 2 1 0 1 2 0,其中1 0 2 1(对应索引矩阵前四位1 2 0 1)拼成一个int8_t数据,0 1 2 0(对应索引矩阵后四位0 2 1 0)拼成一个int8_t数据。 | 33 | 索引矩阵在一个int8_t的地址中的排布是逆序排布的,例如:索引矩阵1 2 0 1 0 2 1 0,在地址中的排布为1 0 2 1 0 1 2 0,其中1 0 2 1(对应索引矩阵前四位1 2 0 1)拼成一个int8_t数据,0 1 2 0(对应索引矩阵后四位0 2 1 0)拼成一个int8_t数据。 |
Mdocs/zh/api/SIMD-API/c_api/cube_datamove/asc_copy_l12l0b_trans/asc_copy_l12l0b_trans_arch_2201.md+2-0
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 该接口实现带转置的2D格式数据从L1 Buffer到L0B Buffer的加载。 | 31 | 该接口实现带转置的2D格式数据从L1 Buffer到L0B Buffer的加载。 |
| 30 | 32 | ||
| 31 | 下面通过示例来讲解接口功能和关键参数:下文图中一个N形或者一个Z形代表一个分形。 | 33 | 下面通过示例来讲解接口功能和关键参数:下文图中一个N形或者一个Z形代表一个分形。 |
Mdocs/zh/api/SIMD-API/c_api/cube_datamove/asc_copy_l12l0b_trans/asc_copy_l12l0b_trans_arch_3510.md+2-0
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 该接口实现带转置的2D格式数据从L1 Buffer到L0B Buffer的加载。 | 31 | 该接口实现带转置的2D格式数据从L1 Buffer到L0B Buffer的加载。 |
| 30 | 32 | ||
| 31 | 下面通过示例来讲解接口功能和关键参数:下文图中一个N形或者一个Z形代表一个分形。 | 33 | 下面通过示例来讲解接口功能和关键参数:下文图中一个N形或者一个Z形代表一个分形。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将矩阵由L1 Buffer搬运到L0C Buffer中。该搬运支持的数据类型如下: | 31 | 将矩阵由L1 Buffer搬运到L0C Buffer中。该搬运支持的数据类型如下: |
| 30 | - bfloat16_t->bfloat16_t | 32 | - bfloat16_t->bfloat16_t |
| 31 | - half->half | 33 | - half->half |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从L1 Buffer搬运到Unified Buffer(UB)中。 | 31 | 将数据从L1 Buffer搬运到Unified Buffer(UB)中。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将value的二进制值赋值给dst,对L0A Buffer的Local Memory进行初始化。 | 31 | 将value的二进制值赋值给dst,对L0A Buffer的Local Memory进行初始化。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将value的二进制值赋值给dst,对L0B Buffer的Local Memory进行初始化。 | 31 | 将value的二进制值赋值给dst,对L0B Buffer的Local Memory进行初始化。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将一个标量填充值写入L1 Buffer的目的地址,并将填充值广播到多个32字节分形块中,可用于L1 Buffer的内存初始化。需要通过[asc_fill_value_config](../defs/union/asc_fill_value_config.md)配置的重复次数、单次分形块数、相邻重复之间的间隔。 | 31 | 将一个标量填充值写入L1 Buffer的目的地址,并将填充值广播到多个32字节分形块中,可用于L1 Buffer的内存初始化。需要通过[asc_fill_value_config](../defs/union/asc_fill_value_config.md)配置的重复次数、单次分形块数、相邻重复之间的间隔。 |
| 30 | 32 | ||
| 31 | 本接口仅在AIC上执行有效。 | 33 | 本接口仅在AIC上执行有效。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 数据搬运过程中进行随路量化时,通过调用该接口获取量化操作前矢量的起始地址。 | 31 | 数据搬运过程中进行随路量化时,通过调用该接口获取量化操作前矢量的起始地址。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 数据搬运过程中进行随路量化时,通过调用该接口获取ReLU操作前矢量的起始地址。 | 31 | 数据搬运过程中进行随路量化时,通过调用该接口获取ReLU操作前矢量的起始地址。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 数据搬运过程中进行随路量化时,通过调用该接口获取unit_flag设置。 | 31 | 数据搬运过程中进行随路量化时,通过调用该接口获取unit_flag设置。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将图像数据从Global Memory搬运到L1 Buffer。 | 31 | 将图像数据从Global Memory搬运到L1 Buffer。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从Global Memory (GM)搬运到L1 Buffer时,通过调用该接口设置内层循环中相邻迭代数据块间的间隔。 | 31 | 将数据从Global Memory (GM)搬运到L1 Buffer时,通过调用该接口设置内层循环中相邻迭代数据块间的间隔。 |
| 30 | 32 | ||
| 31 | 以源操作数搬运场景为例,如下图所示。 | 33 | 以源操作数搬运场景为例,如下图所示。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从Global Memory (GM)搬运到L1 Buffer时,通过调用该接口设置外层循环中相邻迭代数据块间的间隔。 | 31 | 将数据从Global Memory (GM)搬运到L1 Buffer时,通过调用该接口设置外层循环中相邻迭代数据块间的间隔。 |
| 30 | 32 | ||
| 31 | 以源操作数搬运场景为例,如下图所示。 | 33 | 以源操作数搬运场景为例,如下图所示。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从Global Memory (GM)搬运到L1 Buffer时,通过调用该接口设置数据搬运流程中的循环次数。 | 31 | 将数据从Global Memory (GM)搬运到L1 Buffer时,通过调用该接口设置数据搬运流程中的循环次数。 |
| 30 | 32 | ||
| 31 | 以源操作数搬运场景为例,如下图所示。 | 33 | 以源操作数搬运场景为例,如下图所示。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于配置从Global Memory搬运至L1 Buffer过程中,ND2Nz或DN2Nz格式转换所需的目的地址布局,包括矩阵数量、目的Nz矩阵中相邻行的步长、相邻Z矩阵的步长以及相邻Nz矩阵的步长。配置完成后,由后续调用的[asc_copy_gm2l1_nd2nz](./asc_copy_gm2l1_nd2nz/asc_copy_gm2l1_nd2nz_arch_3510.md)或[asc_copy_gm2l1_dn2nz](./asc_copy_gm2l1_dn2nz.md)接口使用。 | 31 | 本接口用于配置从Global Memory搬运至L1 Buffer过程中,ND2Nz或DN2Nz格式转换所需的目的地址布局,包括矩阵数量、目的Nz矩阵中相邻行的步长、相邻Z矩阵的步长以及相邻Nz矩阵的步长。配置完成后,由后续调用的[asc_copy_gm2l1_nd2nz](./asc_copy_gm2l1_nd2nz/asc_copy_gm2l1_nd2nz_arch_3510.md)或[asc_copy_gm2l1_dn2nz](./asc_copy_gm2l1_dn2nz.md)接口使用。 |
| 30 | 32 | ||
| 31 | 本接口只完成参数配置,不执行数据搬运。源地址步长、矩阵行数和矩阵列数等搬运参数由后续搬运接口配置。 | 33 | 本接口只完成参数配置,不执行数据搬运。源地址步长、矩阵行数和矩阵列数等搬运参数由后续搬运接口配置。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 将数据从Global Memory (GM)非对齐搬运到L1 Buffer时,通过调用该接口设置连续搬运数据块左右两侧需要填补的数据值。 | 31 | 将数据从Global Memory (GM)非对齐搬运到L1 Buffer时,通过调用该接口设置连续搬运数据块左右两侧需要填补的数据值。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于在L0C Buffer搬出并执行Nz2DN格式转换时,配置源Nz矩阵中相邻行的地址偏移。配置写入后,由后续开启Nz2DN功能的[asc_copy_l0c2gm](asc_copy_l0c2gm/asc_copy_l0c2gm_arch_3510.md)、[asc_copy_l0c2l1](asc_copy_l0c2l1/asc_copy_l0c2l1_arch_3510.md)或[asc_copy_l0c2ub](asc_copy_l0c2ub.md)接口使用;未开启Nz2DN功能时,本配置不生效。 | 31 | 本接口用于在L0C Buffer搬出并执行Nz2DN格式转换时,配置源Nz矩阵中相邻行的地址偏移。配置写入后,由后续开启Nz2DN功能的[asc_copy_l0c2gm](asc_copy_l0c2gm/asc_copy_l0c2gm_arch_3510.md)、[asc_copy_l0c2l1](asc_copy_l0c2l1/asc_copy_l0c2l1_arch_3510.md)或[asc_copy_l0c2ub](asc_copy_l0c2ub.md)接口使用;未开启Nz2DN功能时,本配置不生效。 |
| 30 | 32 | ||
| 31 | 本接口为矩阵搬出相关配置接口,仅在AIC上生效。 | 33 | 本接口为矩阵搬出相关配置接口,仅在AIC上生效。 |
| @@ -25,6 +25,8 @@ | |||
| 25 | 25 | ||
| 26 | ## 功能说明 | 26 | ## 功能说明 |
| 27 | 27 | ||
| 28 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 29 | + | ||
| 28 | 数据搬运过程中进行随路量化时,通过调用该接口设置量化流程中的矢量量化参数。 | 30 | 数据搬运过程中进行随路量化时,通过调用该接口设置量化流程中的矢量量化参数。 |
| 29 | 31 | ||
| 30 | ## 函数原型 | 32 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 用于设置asc_copy_l0c2l1或asc_copy_l0c2gm接口计算过程中使用的Leaky ReLU alpha值。该值只支持half和float两种数据类型。 | 31 | 用于设置asc_copy_l0c2l1或asc_copy_l0c2gm接口计算过程中使用的Leaky ReLU alpha值。该值只支持half和float两种数据类型。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于在L0C Buffer搬出接口[asc_copy_l0c2gm](asc_copy_l0c2gm/asc_copy_l0c2gm_arch_3510.md)、[asc_copy_l0c2l1](asc_copy_l0c2l1/asc_copy_l0c2l1_arch_3510.md)、[asc_copy_l0c2ub](asc_copy_l0c2ub.md)启用随路Nz转ND格式功能时,配置格式转换所需的相关参数。 | 31 | 本接口用于在L0C Buffer搬出接口[asc_copy_l0c2gm](asc_copy_l0c2gm/asc_copy_l0c2gm_arch_3510.md)、[asc_copy_l0c2l1](asc_copy_l0c2l1/asc_copy_l0c2l1_arch_3510.md)、[asc_copy_l0c2ub](asc_copy_l0c2ub.md)启用随路Nz转ND格式功能时,配置格式转换所需的相关参数。 |
| 30 | 32 | ||
| 31 | 本接口为矩阵搬出相关配置接口,仅在AIC上生效。 | 33 | 本接口为矩阵搬出相关配置接口,仅在AIC上生效。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 对QUANT_POST寄存器中的值进行设置, QUANT_POST是一个64bit的寄存器,存储Fixpipe后处理阶段量化信息。 | 31 | 对QUANT_POST寄存器中的值进行设置, QUANT_POST是一个64bit的寄存器,存储Fixpipe后处理阶段量化信息。 |
| 30 | 其中各bit含义如下,其中各种量化模式的说明可见[asc_copy_l0c2l1](asc_copy_l0c2l1/asc_copy_l0c2l1_arch_3510.md)中对各种量化模式的说明: | 32 | 其中各bit含义如下,其中各种量化模式的说明可见[asc_copy_l0c2l1](asc_copy_l0c2l1/asc_copy_l0c2l1_arch_3510.md)中对各种量化模式的说明: |
| 31 | 33 | ||
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 对RELU_ALPHA寄存器中的值进行设置。这是一个64bit的寄存器,存储在fixpipe或cube指令中进行Scalar ReLU时使用的alpha值。 | 31 | 对RELU_ALPHA寄存器中的值进行设置。这是一个64bit的寄存器,存储在fixpipe或cube指令中进行Scalar ReLU时使用的alpha值。 |
| 30 | 32 | ||
| 31 | 其中各bit含义如下: | 33 | 其中各bit含义如下: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于在L0C Buffer搬出并执行Nz2DN格式转换时,配置源Nz矩阵中相邻行的地址偏移。配置写入后,由后续开启Nz2DN功能的[asc_copy_l0c2gm](./asc_copy_l0c2gm/asc_copy_l0c2gm_arch_3510.md)、[asc_copy_l0c2l1](./asc_copy_l0c2l1/asc_copy_l0c2l1_arch_3510.md)或[asc_copy_l0c2ub](./asc_copy_l0c2ub.md)接口使用;未开启Nz2DN功能时,本配置不生效。 | 31 | 本接口用于在L0C Buffer搬出并执行Nz2DN格式转换时,配置源Nz矩阵中相邻行的地址偏移。配置写入后,由后续开启Nz2DN功能的[asc_copy_l0c2gm](./asc_copy_l0c2gm/asc_copy_l0c2gm_arch_3510.md)、[asc_copy_l0c2l1](./asc_copy_l0c2l1/asc_copy_l0c2l1_arch_3510.md)或[asc_copy_l0c2ub](./asc_copy_l0c2ub.md)接口使用;未开启Nz2DN功能时,本配置不生效。 |
| 30 | 32 | ||
| 31 | 本接口为矩阵搬出相关配置接口,仅在AIC上生效。 | 33 | 本接口为矩阵搬出相关配置接口,仅在AIC上生效。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_compute/cube_compute.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于在L0C Buffer搬出接口[asc_copy_l0c2gm](../cube_datamove/asc_copy_l0c2gm/asc_copy_l0c2gm_arch_3510.md)、[asc_copy_l0c2l1](../cube_datamove/asc_copy_l0c2l1/asc_copy_l0c2l1_arch_3510.md)、[asc_copy_l0c2ub](../cube_datamove/asc_copy_l0c2ub.md)启用随路Nz转ND/DN格式功能时,配置格式转换所需的相关参数。 | 31 | 本接口用于在L0C Buffer搬出接口[asc_copy_l0c2gm](../cube_datamove/asc_copy_l0c2gm/asc_copy_l0c2gm_arch_3510.md)、[asc_copy_l0c2l1](../cube_datamove/asc_copy_l0c2l1/asc_copy_l0c2l1_arch_3510.md)、[asc_copy_l0c2ub](../cube_datamove/asc_copy_l0c2ub.md)启用随路Nz转ND/DN格式功能时,配置格式转换所需的相关参数。 |
| 30 | 32 | ||
| 31 | 本接口为矩阵搬出相关配置接口,仅在AIC上生效。 | 33 | 本接口为矩阵搬出相关配置接口,仅在AIC上生效。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | DataCopy从L0C Buffer搬运到Global Memory或L1 Buffer过程中进行随路格式转换(NZ格式转换为ND格式)时,通过调用该接口设置格式转换的相关配置。 | 31 | DataCopy从L0C Buffer搬运到Global Memory或L1 Buffer过程中进行随路格式转换(NZ格式转换为ND格式)时,通过调用该接口设置格式转换的相关配置。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 本接口用于在L0C Buffer搬出过程中进行随路Scalar量化时,配置量化计算所需的缩放系数、偏移量和量化结果符号。配置完成后,由后续调用的[asc_copy_l0c2gm](./asc_copy_l0c2gm/asc_copy_l0c2gm_arch_3510.md)、[asc_copy_l0c2l1](./asc_copy_l0c2l1/asc_copy_l0c2l1_arch_3510.md)或[asc_copy_l0c2ub](./asc_copy_l0c2ub.md)接口使用,并且需要与搬出接口的`quant_pre_mode`搭配使用。 | 31 | 本接口用于在L0C Buffer搬出过程中进行随路Scalar量化时,配置量化计算所需的缩放系数、偏移量和量化结果符号。配置完成后,由后续调用的[asc_copy_l0c2gm](./asc_copy_l0c2gm/asc_copy_l0c2gm_arch_3510.md)、[asc_copy_l0c2l1](./asc_copy_l0c2l1/asc_copy_l0c2l1_arch_3510.md)或[asc_copy_l0c2ub](./asc_copy_l0c2ub.md)接口使用,并且需要与搬出接口的`quant_pre_mode`搭配使用。 |
| 30 | 32 | ||
| 31 | `quant_pre_mode`量化模式参数支持的Scalar量化枚举值如下: | 33 | `quant_pre_mode`量化模式参数支持的Scalar量化枚举值如下: |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 对PADDING_B寄存器中的值进行设置,这是一个64bit的寄存器,用于存储搬运过程中padding的值。 | 31 | 对PADDING_B寄存器中的值进行设置,这是一个64bit的寄存器,用于存储搬运过程中padding的值。 |
| 30 | 其中各bit含义如下: | 32 | 其中各bit含义如下: |
| 31 | 33 | ||
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 用于调用[asc_copy_l12l0a_arch_3510(3D矩阵搬运)](asc_copy_l12l0a/asc_copy_l12l0a_3d_arch_3510.md)时设置3D格式分形矩阵搬运(im2col展开)搬运指令使用的填充值。`asc_copy_l12l0a`接口中的`f_matrix_ctrl`参数设置为`false`时,3D格式分形矩阵搬运(im2col展开)场景会使用本接口设置的值做为填充值。 | 31 | 用于调用[asc_copy_l12l0a_arch_3510(3D矩阵搬运)](asc_copy_l12l0a/asc_copy_l12l0a_3d_arch_3510.md)时设置3D格式分形矩阵搬运(im2col展开)搬运指令使用的填充值。`asc_copy_l12l0a`接口中的`f_matrix_ctrl`参数设置为`false`时,3D格式分形矩阵搬运(im2col展开)场景会使用本接口设置的值做为填充值。 |
| 30 | 32 | ||
| 31 | 本接口为矩阵3D格式搬入相关配置接口,仅在AIC上生效。 | 33 | 本接口为矩阵3D格式搬入相关配置接口,仅在AIC上生效。 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 设置Feature map属性描述,用于在调用[asc_copy_l12l0a](asc_copy_l12l0a/asc_copy_l12l0a.md)/[asc_copy_l12l0b](asc_copy_l12l0b/asc_copy_l12l0b.md)的3D格式搬运接口时配置填充数值。 | 31 | 设置Feature map属性描述,用于在调用[asc_copy_l12l0a](asc_copy_l12l0a/asc_copy_l12l0a.md)/[asc_copy_l12l0b](asc_copy_l12l0b/asc_copy_l12l0b.md)的3D格式搬运接口时配置填充数值。 |
| 30 | 仅当asc_copy_l12l0a/asc_copy_l12l0b接口的f_matrix_ctrl参数指示从左矩阵获取FeatureMap的属性时使用本接口设置Feature map属性描述,否则使用asc_set_l13d_fmatrix_b接口。 | 32 | 仅当asc_copy_l12l0a/asc_copy_l12l0b接口的f_matrix_ctrl参数指示从左矩阵获取FeatureMap的属性时使用本接口设置Feature map属性描述,否则使用asc_set_l13d_fmatrix_b接口。 |
| 31 | 33 | ||
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 设置Feature map属性描述,用于在调用[asc_copy_l12l0a](asc_copy_l12l0a/asc_copy_l12l0a.md)/[asc_copy_l12l0b](asc_copy_l12l0b/asc_copy_l12l0b.md)的3D格式搬运接口时配置填充数值。 | 31 | 设置Feature map属性描述,用于在调用[asc_copy_l12l0a](asc_copy_l12l0a/asc_copy_l12l0a.md)/[asc_copy_l12l0b](asc_copy_l12l0b/asc_copy_l12l0b.md)的3D格式搬运接口时配置填充数值。 |
| 30 | 仅当asc_copy_l12l0a/asc_copy_l12l0b接口的f_matrix_ctrl参数指示从右矩阵获取FeatureMap的属性时使用本接口设置Feature map属性描述,否则使用asc_set_l13d_fmatrix接口。 | 32 | 仅当asc_copy_l12l0a/asc_copy_l12l0b接口的f_matrix_ctrl参数指示从右矩阵获取FeatureMap的属性时使用本接口设置Feature map属性描述,否则使用asc_set_l13d_fmatrix接口。 |
| 31 | 33 | ||
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 设置Pad属性描述,用于在调用[asc_copy_l12l0a](asc_copy_l12l0a/asc_copy_l12l0a.md)接口时配置填充数值。 | 31 | 设置Pad属性描述,用于在调用[asc_copy_l12l0a](asc_copy_l12l0a/asc_copy_l12l0a.md)接口时配置填充数值。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 用于设置Load3Dv2接口的repeat参数。 | 31 | 用于设置Load3Dv2接口的repeat参数。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 设置[asc_copy_l12l0a](asc_copy_l12l0a/asc_copy_l12l0a_arch_2201.md)/[asc_copy_l12l0b](asc_copy_l12l0b/asc_copy_l12l0b_arch_2201.md)的3D格式搬运接口在L1 Buffer的边界值。 | 31 | 设置[asc_copy_l12l0a](asc_copy_l12l0a/asc_copy_l12l0a_arch_2201.md)/[asc_copy_l12l0b](asc_copy_l12l0b/asc_copy_l12l0b_arch_2201.md)的3D格式搬运接口在L1 Buffer的边界值。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
| @@ -26,6 +26,8 @@ | |||
| 26 | 26 | ||
| 27 | ## 功能说明 | 27 | ## 功能说明 |
| 28 | 28 | ||
| 29 | +头文件路径为:`"c_api/cube_datamove/cube_datamove.h"`。 | ||
| 30 | + | ||
| 29 | 用于设置接口[asc_copy_l12l0a](asc_copy_l12l0a/asc_copy_l12l0a_3d_arch_3510.md)、[asc_copy_l12l0b](asc_copy_l12l0b/asc_copy_l12l0b_3d_arch_3510.md)的2D格式搬运的repeat参数。 | 31 | 用于设置接口[asc_copy_l12l0a](asc_copy_l12l0a/asc_copy_l12l0a_3d_arch_3510.md)、[asc_copy_l12l0b](asc_copy_l12l0b/asc_copy_l12l0b_3d_arch_3510.md)的2D格式搬运的repeat参数。 |
| 30 | 32 | ||
| 31 | ## 函数原型 | 33 | ## 函数原型 |
Mdocs/zh/api/SIMD-API/c_api/reg_compute/reg_permute_sel/asc_squeeze_and_storeunalign_finalize.md+2-0
Mdocs/zh/api/SIMD-API/c_api/vector_datamove/asc_copy_gm2ub_align/asc_copy_gm2ub_align_arch_2201.md+2-0
Mdocs/zh/api/SIMD-API/c_api/vector_datamove/asc_copy_gm2ub_align/asc_copy_gm2ub_align_arch_3510.md+2-0
Mdocs/zh/api/SIMD-API/c_api/vector_datamove/asc_copy_ub2gm_align/asc_copy_ub2gm_align_arch_2201.md+2-0