是否可以用c++调用taichi

我记得在刘天添老师的视频中介绍,说taichi对c++支持的越来越少了。但是,用python写出的taichi程序,可以被c++调用。能否给出一个粒子,比如说,我做CFD,用python写完了之后,怎么才能让c++调用?

Hi zhang-qiang,
Taichi支持一套C-API,用来在C++端调用Python开发-编译的Kernel,可以参考https://github.com/taichi-dev/taichi-aot-demo里面的例子。

我们过一段时间会上线一个C-API的教程,敬请期待~

1 个赞

我编译了一下这个工程,报错:

CMake Error at CMakeLists.txt:38 (message):
  Environment variable TAICHI_C_API_INSTALL_DIR is not specified

这应该是说,我的电脑没有从源码编译taichi。

所以,如果我想在c++上利用taichi,还是要从源码编译它,对吧?

有没有可能,python写完后,生成一个什么东西,允许c++调用?比较,python开发效率比c++高一点。所以,还是希望能在python上开发,c++来调用它。

这个报错是因为C++程序需要链接到libtaichi_c_api.so动态库上面,你可以从源码编译Taichi然后打开这几个选项:

export TAICHI_CMAKE_ARGS="-DTI_WITH_VULKAN=ON"
export TAICHI_CMAKE_ARGS="-DTI_WITH_C_API=ON ${TAICHI_CMAKE_ARGS}"
export TAICHI_CMAKE_ARGS="-DTI_BUILD_TESTS=ON ${TAICHI_CMAKE_ARGS}"

export TAICHI_CMAKE_ARGS="-DTI_WITH_CUDA=ON ${TAICHI_CMAKE_ARGS}"
export TAICHI_CMAKE_ARGS="-DTI_WITH_OPENGL=ON ${TAICHI_CMAKE_ARGS}"
export TAICHI_CMAKE_ARGS="-DTI_WITH_LLVM=ON ${TAICHI_CMAKE_ARGS}"
export TAICHI_CMAKE_ARGS="-DTI_WITH_METAL=ON ${TAICHI_CMAKE_ARGS}"

会生成_skbuild/linux-x86_64-3.8/cmake-install/c_api,把TAICHI_C_API_INSTALL_DIR设置成这个路径即可

1 个赞

通过Python直接生成C++可调用的程序性能会非常差,这样的话你不如在C++里fork一个进程直接调python taichi_program.py

比如把cmd改成执行Python:process - How do I execute a command and get the output of the command within C++ using POSIX? - Stack Overflow

1 个赞