1 Star 2 Fork 0

liuzhongkai/code-generator

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
contribute
Sync branch
lzk- lzk code genarator 6c40c49 4 years ago
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
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反向进行了切割

Empty file

About

Cancel

Releases

No release

Contributors

All

Language(Optional)

Activities

can not load any more
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/lzkcode/code-generator.git
git@gitee.com:lzkcode/code-generator.git
lzkcode
code-generator
code-generator
code-ge

Search