0%

pythran使用记录V1

自动摘要: 变更记录 |版本号|作者|发布日期|修订| ||||| |V1.0.0|@郑安帅|20231 ……..

变更记录

版本号 作者 发布日期 修订
V1.0.0 @郑安帅 2023-1-3
V1.0.1 @郑安帅 2022-11-23
V1.0.2 @郑安帅 2022-11-25
V1.0.3 @郑安帅 2022-12-1
V1.1.3 @郑安帅 2022-12-7
V1.2.3 @郑安帅 2023-1-3
V1.3.0 @sindre 2023年3月17日 进行逻辑修正,整理

背景

  1. 使用pythran做generate_deploy.py的预处理,后处理的失败过程;
  2. 尝试使用pythran将python的numpy直接封装成C++的dll;
  3. generate_deploy.py,模型推理部分使用pytorch,预处理后处理部分需要对torsor进行操作。现使用onnx推理引擎,相关对tensor的操作已转换为对应的numpy实现,最终在python上onnx推理与torch结果对齐。
  4. 现目标为:将numpy对应操作转化为cpp对应操作,尝试使用pythran库,将基于numpy的预处理后处理操作封装成函数,打包为动态库供cpp调用。

优势

此库一些了解:

安装

  1. windows/linux库安装:

    1
    pip insatll pythran 
  2. 按照官方文档,尝试运行demo:

**注意: **这里的注释是必须要加的,注释规定了输入的参数类型,详情查看pythran的官方文档

  1. 命令行运行:
    1
    python test.py 
    1. 报错截图:

  3. 根据查看报错信息,**猜测需要C++的clang编译器**。

总结:

  1. 此demo在Linux系统上可以编译出so被cpp调用。
  2. 查阅官方文档得知,此库对windows的支持还在开发当中

放弃原因:

  1. 不支持numpy的reshape(),后处理含有reshape操作。

  2. 对windows支持不好,甚至不支持。

参考资料:

pythran库链接: https://pythran.readthedocs.io/en/latest/MANUAL.htmlcsdn关于此库的一些介绍:https://blog.csdn.net/rgc_520_zyl/article/details/113185059?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167273444316800186549470%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=167273444316800186549470&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-113185059-null-null.142^v68^control,201^v4^add_ask,213^v2^t3_esquery_v2&utm_term=%E5%AE%89%E8%A3%85pythran-openblas%2C&spm=1018.2226.3001.4187

欢迎关注我的其它发布渠道