Kernel Operator Test Guide
[toc]
Environment Setup
Python 3.8+, PyTorch (for golden computation), CANN toolkit installed.
source /usr/local/Ascend/ascend-toolkit/set_env.sh
git clone https://gitcode.com/cann/ops-test-kit.git
cd ops-test-kit && pip install -r requirements.txt
Write Test Cases
See Test Case Generation for all CSV fields.
Example add.csv:
testcase_name,network_name,op_name,input_shapes,input_dtypes,input_formats,output_shapes,output_dtypes,output_formats,input_ori_shapes,input_ori_formats,output_ori_shapes,output_ori_formats,attributes,input_data_ranges,precision_tolerances,absolute_precision,output_inplace_indexes,output_shape_unknown_indexes,is_enabled,remark,soc_series,priority,dump_file_prefix,manual_input_binaries,manual_golden_binaries
add_01,,add,"((128, 1024), (1, 1024))","('float32', 'float32')","('ND',)","((128, 1024),)","('float32',)","('ND',)","((128, 1024), (1, 1024))","('ND',)","((128, 1024),)","('ND',)",{},"((0, 0), (0, 0))","((0.001, 0.001),)",1e-8,(),(),True,,,0,,(),()
With compilation params (MatMulV3):
testcase_name,network_name,op_name,input_shapes,input_dtypes,input_formats,output_shapes,output_dtypes,output_formats,input_ori_shapes,input_ori_formats,output_ori_shapes,output_ori_formats,attributes,input_data_ranges,precision_tolerances,absolute_precision,output_inplace_indexes,output_shape_unknown_indexes,is_enabled,remark,soc_series,priority,dump_file_prefix,manual_input_binaries,manual_golden_binaries
matmul_512_1_1792__1792_256,llama3_70b_train,mat_mul_v3,"((512, 1792), (1792, 256), None, None)","('bfloat16', 'bfloat16', 'float32', 'int8')","('ND',)","((512, 256),)","('bfloat16',)","('ND',)","((512, 1792), (1792, 256), None, None)","('ND',)","((512, 256),)","('ND',)","{'transpose_x1': False, 'transpose_x2': False, 'offset_x': 0, '#enable_pad': 1}","((-1, 1),)","((0.001, 0.001),)",1e-08,(),(),True,,,0,,(),()
More examples in `examples/case_store/kernel/`.
# Precision Testing
```shell
python3 -m ttk kernel -i add.csv
python3 -m ttk kernel -i add.csv -d
python3 -m ttk kernel -i add.csv --dev 0
python3 -m ttk kernel -i add.csv -o results.csv
Execution Flow
Read CSV -> Compile kernel (dynamic/static/const/binary) -> Generate inputs -> Execute on NPU -> Generate golden (CPU) -> Precision compare -> Output results
Compile Modes
| Flag | Mode | Description |
|---|---|---|
-d (default) |
Dynamic shape | Compile with dynamic shapes, run tiling, then execute |
-c |
Static shape | Compile with fixed shapes |
-b release |
Binary | Use pre-compiled release kernels |
python3 -m ttk kernel -i add.csv --co # Compile only
python3 -m ttk kernel -i add.csv --no-prof # Disable profiling
Performance Testing
python3 -m ttk kernel -i add.csv
python3 -m ttk kernel -i add.csv --run=5
python3 -m ttk kernel -i add.csv --warmup
Multi-Card Parallel
python3 -m ttk kernel -i add.csv # All available cards
python3 -m ttk kernel -i add.csv --dev=2
python3 -m ttk kernel -i add.csv --pc=2
python3 -m ttk kernel -i add.csv --device-whitelist=0,1
Common Examples
python3 -m ttk kernel -i examples/case_store/kernel/mat_mul_v3.csv
python3 -m ttk kernel -i examples/case_store/kernel/split.csv -c
python3 -m ttk kernel -i examples/case_store/kernel/concat_d.csv
python3 -m ttk kernel -i add.csv -t add_01 --dump-on-fail
python3 -m ttk kernel -i add.csv --rerun=precision_status
python3 -m ttk kernel -i add.csv --plugin /path/to/my_golden.py