如何保护代码

我刚刚开始学习taichi,之前一直用numba+cython。目前我在用python做复杂期权实时定价模型。为了保护这些模型算法,我希望能把定价模型的python代码编译,numba可以AOT编译,然后通过python调用。不知道taichi aot是否也支持?

1 个赞

Hi @stentor ,非常欢迎来到Taichi Lang论坛。

Taichi也是支持AOT编译的,可以参考一下

  1. Taichi AOT, the solution for deploying kernels in mobile devices | Taichi Docs
  2. GitHub - taichi-dev/taichi-aot-demo: A demo illustrating how to use Taichi as an AOT shader compiler

感谢回复!我看了一下demo,感觉不需要用到那么复杂的功能。是否有类似numba里面AOT那种功能,就是把函数编译然后保存下来。需要的时候直接导入并调用就可以。类似于:

from numba.pycc import CC

cc = CC('my_module')
#cc.verbose = True

@cc.export('multf', 'f8(f8, f8)')
@cc.export('multi', 'i4(i4, i4)')
def mult(a, b):
    return a * b

@cc.export('square', 'f8(f8)')
def square(a):
    return a ** 2

if __name__ == "__main__":
    cc.compile()

@stentor 目前taichi aot 支持导出成为 llvm中间表示或者SPIR-V shader,暂时还不支持导出成为C source。ti.cc backend 提供了编译到C99源码的部分支持,可以试一下[Doc] [cc] Doc the workflow for exporting Taichi kernels to C99 source by archibate · Pull Request #1756 · taichi-dev/taichi · GitHub 不过cc backend目前处于维护模式,可能不是所有的feature都支持。