ACLNN Operator Test Guide

[toc]


Environment Setup

Python 3.8+, CANN toolkit (with aclnn headers and shared libraries).

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

ACLNN mode uses api_name (not op_name). See Test Case Generation.

testcase_name,api_name,tensor_view_shapes,tensor_dtypes,attributes,output_tensor_indexes
aclnnCat_float,aclnnCat,"(((3,3),(3,2)),(3,5),)","(('float32','float32'),'float32')",{'dim': -1},"(1,)"

Key Fields

  • tensor_view_shapes: Nested for TensorList. (((3,3),(3,2)),(3,5),) = first input is TensorList of 2 tensors.
  • output_tensor_indexes: Which positions are outputs. "(1,)" = 2nd param is output.
  • attributes: Non-tensor params. E.g. {'dim': -1}
  • scalar_dtypes: Scalar param types. E.g. ('float32',)

Inplace Operation

testcase_name,api_name,tensor_view_shapes,tensor_dtypes,attributes,output_tensor_indexes,output_inplace_indexes
aclnnInplaceFill_01,aclnnInplaceFillTensor,"((3,4,5),)","('float32',)","{'value': 1.5}","(0,)","(0,)"

Precision Testing

python3 -m ttk aclnn -i aclnn_cat.csv
python3 -m ttk aclnn -i aclnn_cat.csv --compare cosine
python3 -m ttk aclnn -i aclnn_cat.csv --dev 0
python3 -m ttk aclnn -i aclnn_cat.csv -o results.csv

Execution Flow

Read CSV -> Generate input tensors/scalars -> Call aclnn* C API -> Generate golden (CPU) -> Precision compare -> Output results

Separate Data Preparation and Device Execution

# Prepare without calling the aclnn* target API or compare.
python3 -m ttk aclnn -i aclnn_cat.csv --plugin /path/to/assets \
  --no-prof --dump in,golden --dump-format bin \
  --manual-data-dirs /data/aclnn_cat --plat Ascend950

# Restore tensors/scalars/golden, run the target API, and compare.
python3 -m ttk aclnn -i aclnn_cat.csv --plugin /path/to/assets \
  --manual-data-dirs /data/aclnn_cat

Prepare does not query device count or compile clear/warmup helper kernels, but it still requires CANN/OPP for CSV and ACLNN API metadata parsing. Pass the target --plat on a host without SoC detection. Both stages require the same CSV data contract. See Manual-Data Prepare and Replay for complete constraints.

Common Examples

python3 -m ttk aclnn -i examples/case_store/aclnn/aclnn_cat.csv
python3 -m ttk aclnn -i examples/case_store/aclnn/aclnn_add.csv
python3 -m ttk aclnn -i examples/case_store/aclnn/aclnn_convolution.csv
python3 -m ttk aclnn -i aclnn_cat.csv --dump-on-fail
python3 -m ttk aclnn -i aclnn_cat.csv --plugin /path/to/my_golden.py