支持的指令桩
以下是 mssanitizer工具支持的检测指令列表。对于内存检测和竞争检测功能而言,检测工具要注意指令对内存的操作方式和内容,此表格便以指令对内存的操作方式而进行分类介绍。
指令类型 |
说明 |
指令名称 |
---|---|---|
搬运类指令 |
dma move类指令
|
copy_ubuf_to_gm |
copy_gm_to_ubuf |
||
copy_ubuf_to_ubuf |
||
move align类指令
|
copy_gm_to_ubuf_align_b8 |
|
copy_gm_to_ubuf_align_b16 |
||
copy_gm_to_ubuf_align_b32 |
||
copy_ubuf_to_gm_align_b8 |
||
copy_ubuf_to_gm_align_b16 |
||
copy_ubuf_to_gm_align_b32 |
||
vector_dup 指令 仅涉及对目的地址的写操作。 |
vector_dup |
|
load/store 通过标量的方式对GM或local memory读取或写入。 |
load |
|
store |
||
cube类搬运指令
|
load_gm_to_cbuf |
|
load_gm_to_ca |
||
load_gm_to_cb |
||
load_cbuf_to_ca |
||
load_cbuf_to_cb |
||
load_image_to_cbuf |
||
copy_gm_to_cbuf_multi_nd2nz |
||
copy_cbuf_to_bt |
||
set_l0a_2d |
||
set_l0b_2d |
||
set_l1_2d |
||
create_ca_matrix |
||
create_cb_matrix |
||
create_cbuf_matrix |
||
计算类指令 |
单目计算指令
|
vabs |
vadds |
||
vaxpy |
||
vbitsort |
||
vbrcb |
||
vcmpvs |
||
vconv |
||
vcopy |
||
vector_dup |
||
vexp |
||
vgather |
||
vgatherb |
||
vld_va_reg |
||
vln |
||
vlrelu |
||
vmaxs |
||
vmins |
||
vmuls |
||
vnot |
||
vrec |
||
vrelu |
||
vrsqrt |
||
vshl |
||
vshr |
||
vsqrt |
||
vtranspose |
||
双目计算指令
|
vadd |
|
vaddrelu |
||
vaddreluconv |
||
vand |
||
vbitsort |
||
vcmp |
||
vcmpv |
||
vdiv |
||
vmadd |
||
vmaddrelu |
||
vmax |
||
vmin |
||
vmla |
||
vmrgsort4 |
||
vmul |
||
vmulconv |
||
vor |
||
vreduce |
||
vreducev2 |
||
vsel |
||
vsub |
||
vsubrelu |
||
vsubreluconv |
||
规约类计算指令
|
vcadd |
|
vcgadd |
||
vcgmax |
||
vcgmin |
||
vcmax |
||
vcmin |
||
vcpadd |
||
Cube类矩阵乘计算指令 此类指令从源地址读取两个矩阵数据,经过矩阵乘运算得到新的矩阵数据,并写入到目的地址。读取和写入数据时以分形矩阵为基本单元。 |
mad |
|
同步类指令 |
核内同步类指令 在单个AiCore 中,会有多条流水线并行处理不同的任务的情况,如搬运流水、向量运算流水、矩阵运算流水等。当不同流水需要访问同一片内存时,就需要保证访问顺序的正确性,此类指令的功能就是控制各流水之间的同步关系。 |
set_flag |
wait_flag |
||
hset_flag |
||
hwait_flag |
||
pipe_barrier |
||
原子写设置指令 多核场景下,会有多个AiCore向同一块GM写入数据。此类指令可设置原子写的模式和数据类型,以支持各 AiCore原子的写入数据。 |
set_atomic_none |
|
set_atomic_f32 |
||
set_atomic_f16 |
||
set_atomic_s16 |
||
set_atomic_s32 |
||
set_atomic_s8 |
||
set_atomic_bf16 |
||
set_atomic_add |
||
set_atomic_max |
||
set_atomic_max |
||
核间同步类指令 多核场景下,会有多个AiCore访问同一块GM,需要保证访问顺序的正确性,此类指令的功能就是控制各AiCore之间的同步关系。 |
ffts_cross_core_sync |
|
wait_flag_dev |
指令类型 |
说明 |
指令名称 |
---|---|---|
搬运类指令 |
dma move类指令
|
copy_cbuf_to_ubuf |
copy_gm_to_cbuf |
||
copy_gm_to_ubuf |
||
copy_ubuf_to_cbuf |
||
copy_ubuf_to_gm |
||
copy_ubuf_to_ubuf |
||
cube类搬运指令
|
load_cbuf_to_ca |
|
load_cbuf_to_ca_s4 |
||
load_cbuf_to_cb |
||
load_cbuf_to_cb_s4 |
||
load_gm_to_ca |
||
load_gm_to_ca_s4 |
||
load_gm_to_cb |
||
load_gm_to_cb_s4 |
||
load_gm_to_cbuf |
||
load_gm_to_cbuf_s4 |
||
load_b2指令
|
load_cbuf_to_cb_b2 |
|
winograd
|
load_cbuf_to_ca_winograd |
|
load_cbuf_to_cb_winograd |
||
vector_dup指令 仅涉及对目的地址的写操作。 |
vector_dup |
|
vtranspose指令
|
vtranspose |
|
同步类指令 |
核内同步类指令 在单个AiCore 中,会有多条流水线并行处理不同的任务的情况,如搬运流水、向量运算流水、矩阵运算流水等。当不同流水需要访问同一片内存时,就需要保证访问顺序的正确性,此类指令的功能就是控制各流水之间的同步关系。 |
set_flag |
wait_flag |
||
hset_flag |
||
pipe_barrier |
||
原子写设置指令 多核场景下,会有多个AiCore向同一块GM写入数据。此类指令可设置原子写的模式和数据类型,以支持各 AiCore原子的写入数据。 |
set_atomic_none |
|
set_atomic_f32 |
||
set_atomic_f16 |
||
set_atomic_s16 |
||
核间同步类指令 多核场景下,会有多个AiCore访问同一块GM,需要保证访问顺序的正确性,此类指令的功能就是控制各AiCore之间的同步关系。 |
ffts_cross_core_sync |
|
wait_flag_dev |