# code-generator **Repository Path**: lzkcode/code-generator ## Basic Information - **Project Name**: code-generator - **Description**: 自动化生成汇编代码 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: code-ge - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-11-21 - **Last Updated**: 2021-12-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 通过模板自动化生成高性能汇编代码 1.main.py脚本对模板以及传进来的参数进行解析然后生成高性能汇编代码 2.目前可以生成X86 intrinsic和嵌入式汇编代码 3.Arm平台的在研发中 4.用户可以自定义模板生成自己想要的代码 # python解析语法: 1.包含@代表python需要执行的后得到的字符串 2.不包含@的模板字符串将会被直接解析 # main.py参数解析 1.python3 main.py -I fma-broadcast_asm.c.in -A row_block=12 col_block=8 -O nnacl_gemm_12x8_kernel_fp32_asm.c 2. 模板计算:[row_block, deep] X [deep, col_block] ==> [row_block, col_block] 3. -I: 4. -A:row_block:按照行row分块的大小 col_block:按照col分块的大小 5. -O: 输出的高性能计算函数 6. 模板文件包含asm表示生成的时嵌入式汇编代码,不包含的intrinsic代码 # gemm函数参数解析 void nnacl_gemm_@{row_block}x@{col_block}_kernel_f32(float *dst, const float *src, const float *weight, const float *bias, const size_t act_flag, const size_t row_block, const size_t col_block, const size_t deep, const size_t src_stride, const size_t dst_stride, const size_t inc_flag) ## 参数解析: 1. dst:目的地址 2. src:左矩阵的地址 3. weight:右矩阵地址 4. bias: bias 5. act_flag: 激活的标志位 6. row_block: row切割大小 7. col_block:col切割大小 8. deep:deep切割大小,注意是8的倍数 9. src_stride:左矩阵的地址跳跃 10. dst_stride:输出的地址跳跃 11. inc_flag:是否在deep反向进行了切割