我记得在刘天添老师的视频中介绍,说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 Like
我编译了一下这个工程,报错:
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 Like
通过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 Like