在unity中使用taichi进行软体仿真

我想在unity中使用taichi,也尝试了Taichi-UnityExample-main,但是目前taichi_unity的实例好像不完善,操作比较复杂,我有三个疑问想请教一下。

首先,我理解的是先将python文件中的cgraph与kernel文件编译成tcm文件,然后在unity下通过c#脚本调用,是否理解正确?如果我想在unity中使用自己写的taichi python代码,也是这个流程嘛?
其次,在运行unity implicitFem时,经过一段时间后,整个程序便会帧率骤降,有50帧降到5帧,在profile中显示EditorLoop占用了大量的时间:


这是什么问题造成的呢?
最后,我想了解一下taichi的AOT-demo,是必须先编译好taichi之后才能使用嘛?

3 个赞

我刚自己编译了一下AOT Demo, Unity我还没试,那我就回答最后一个问题吧。

目前AOT编译的时候是需要连接 libtaichi_c_api.so 的,这个动态链接库可以自己编译Taichi,也可以直接从Taichi PyPI Nightly上下载,具体可以参考教程:taichi-aot-demo/tutorial.md at master · taichi-dev/taichi-aot-demo · GitHub

PS:在编译Taichi的时候需要关闭LLVM(目前有符号冲突问题),TAICHI_CMAKE_ARGS="-DTI_WITH_LLVM=OFF" python3 setup.py develop --user
然后在编译AOT demo的时候:TAICHI_C_API_INSTALL_DIR=/c-api dir/ cmake .. -DTI_WITH_CUDA=OFF -DTI_WITH_CPU=OFF

@tianlajiangjun 话说现在Unity Example repo已经修复了一波,再试一下?

好的,谢谢老师。我看文档说只有Linux的可以使用taichi nightly里的libtaichi_c_api.so,Windows需要编译taichi,是这样子的嘛?

感谢提醒,因为疫情原因,我只能使用笔记本电脑跑,目前低帧率跑了一会没有出现相同问题。之后可能得用台式机试试

是的,如果Windows需要自己编译Taichi。我写了一个文档,你可以参考。

最近又尝试了一下taichi_unity,我将根目录下scripts中fem的.cgraph.py与.kernel.py重新编译了一次,生成了两个对应的.tcm文件,然后将他们替换原本的.tcm文件放到unity中运行时,出现了错误提示:

InvalidOperationException: Ignored launch because kernel handle is null

根据 Taichi-UnityExample/Build.md at main · taichi-dev/Taichi-UnityExample (github.com)的提示,是兼容性问题,但是我已经是依据项目提供的脚本编译了。
原因是我的taichi版本与项目中的 taichi_c_api.dlltaichi_unity.dll版本不同吗?我的taichi版本是1.4.1,已经是正式版中最新的。

我是一个编译小白,在尝试编译taichi时,运行python setup.py develop时出现了以下错误

D:\taichi>python setup.py develop
[]
['taichi', 'taichi.ad', 'taichi.algorithms', 'taichi.aot', 'taichi.graph', 'taichi.lang', 'taichi.linalg', 'taichi.math', 'taichi.profiler', 'taichi.tools', 'taichi.types', 'taichi.ui', 'taichi._lib', 'taichi._snode', 'taichi._ti_module', 'taichi.aot.conventions', 'taichi.aot.conventions.gfxruntime140', 'taichi.lang.ast', 'taichi.lang.simt']
D:\Anaconda\lib\site-packages\setuptools\command\easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
Configuring Project
  Working directory:
    D:\taichi\_skbuild\win-amd64-3.8\cmake-build
  Command:
    'C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\cmake\data\bin/cmake.exe' 'D:\taichi' -G Ninja '-DCMAKE_INSTALL_PREFIX:PATH=D:\taichi\_skbuild\win-amd64-3.8\cmake-install' -DPYTHON_VERSION_STRING:STRING=3.8.16 -DSKBUILD:INTERNAL=TRUE '-DCMAKE_MODULE_PATH:PATH=C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\skbuild\resources\cmake' '-DPYTHON_EXECUTABLE:PATH=D:\Anaconda\python.exe' '-DPYTHON_INCLUDE_DIR:PATH=D:\Anaconda\Include' '-DPYTHON_LIBRARY:PATH=D:\Anaconda\libs\python38.lib' '-DPython_EXECUTABLE:PATH=D:\Anaconda\python.exe' '-DPython_ROOT_DIR:PATH=D:\Anaconda' '-DPython_INCLUDE_DIR:PATH=D:\Anaconda\Include' -DPython_FIND_REGISTRY:STRING=NEVER '-DPython_NumPy_INCLUDE_DIRS:PATH=D:\Anaconda\lib\site-packages\numpy\core\include' '-DPython3_EXECUTABLE:PATH=D:\Anaconda\python.exe' '-DPython3_ROOT_DIR:PATH=D:\Anaconda' '-DPython3_INCLUDE_DIR:PATH=D:\Anaconda\Include' -DPython3_FIND_REGISTRY:STRING=NEVER '-DPython3_NumPy_INCLUDE_DIRS:PATH=D:\Anaconda\lib\site-packages\numpy\core\include' '-DCLANG_EXECUTABLE=<Path' to 'Clang>/bin/clang.exe' '-DLLVM_AS_EXECUTABLE=<Path' to LLVM '15>/bin/llvm-as.exe' -DTI_VERSION_MAJOR=1 -DTI_VERSION_MINOR=6 -DTI_VERSION_PATCH=0 -DCMAKE_BUILD_TYPE:STRING=Release

CMake Warning:
  Ignoring extra path from command line:

   "15>/bin/llvm-as.exe"


-- The C compiler identification is MSVC 19.35.32216.1
-- The CXX compiler identification is MSVC 19.35.32216.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/vs2022/VC/Tools/MSVC/14.35.32215/bin/Hostx86/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/vs2022/VC/Tools/MSVC/14.35.32215/bin/Hostx86/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Taichi Version 1.6.0
       Commit 427d3be415c5cd7364d0ac6c4c697b8489c3da88
CMAKE_MSVC_RUNTIME_LIBRARY:
CLANG_EXECUTABLE defined: <Path
<Path --version:
CMake Error at CMakeLists.txt:145 (if):
  if given arguments:

    "VERSION_GREATER" "15"

  Unknown arguments specified


-- Configuring incomplete, errors occurred!
Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\skbuild\setuptools_wrap.py", line 634, in setup
    env = cmkr.configure(
  File "C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\skbuild\cmaker.py", line 332, in configure
    raise SKBuildError(

An error occurred while configuring with CMake.
  Command:
    'C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\cmake\data\bin/cmake.exe' 'D:\taichi' -G Ninja '-DCMAKE_INSTALL_PREFIX:PATH=D:\taichi\_skbuild\win-amd64-3.8\cmake-install' -DPYTHON_VERSION_STRING:STRING=3.8.16 -DSKBUILD:INTERNAL=TRUE '-DCMAKE_MODULE_PATH:PATH=C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\skbuild\resources\cmake' '-DPYTHON_EXECUTABLE:PATH=D:\Anaconda\python.exe' '-DPYTHON_INCLUDE_DIR:PATH=D:\Anaconda\Include' '-DPYTHON_LIBRARY:PATH=D:\Anaconda\libs\python38.lib' '-DPython_EXECUTABLE:PATH=D:\Anaconda\python.exe' '-DPython_ROOT_DIR:PATH=D:\Anaconda' '-DPython_INCLUDE_DIR:PATH=D:\Anaconda\Include' -DPython_FIND_REGISTRY:STRING=NEVER '-DPython_NumPy_INCLUDE_DIRS:PATH=D:\Anaconda\lib\site-packages\numpy\core\include' '-DPython3_EXECUTABLE:PATH=D:\Anaconda\python.exe' '-DPython3_ROOT_DIR:PATH=D:\Anaconda' '-DPython3_INCLUDE_DIR:PATH=D:\Anaconda\Include' -DPython3_FIND_REGISTRY:STRING=NEVER '-DPython3_NumPy_INCLUDE_DIRS:PATH=D:\Anaconda\lib\site-packages\numpy\core\include' '-DCLANG_EXECUTABLE=<Path' to 'Clang>/bin/clang.exe' '-DLLVM_AS_EXECUTABLE=<Path' to LLVM '15>/bin/llvm-as.exe' -DTI_VERSION_MAJOR=1 -DTI_VERSION_MINOR=6 -DTI_VERSION_PATCH=0 -DCMAKE_BUILD_TYPE:STRING=Release
  Source directory:
    D:\taichi
  Working directory:
    D:\taichi\_skbuild\win-amd64-3.8\cmake-build

如果是希望编译出一个 master 上的 Python wheel 来,可以用 Python 执行一下仓库中的 .github/workflows/scripts/build.py ,这个脚本会自动帮你安装依赖并编译,编译后的 wheel 会放在 dist 目录中。这个脚本的说明之后会更新到文档上。

其他的几点:

  1. 目前需要自己手动安装的 VS2022 (Build Tools 就可以),其他的依赖会自动下载安装。
  2. 所有其他的依赖会安装在 %LocalAppData%\build-cache 中,可以直接删除掉。
  3. 需要设置 PY 以及 TAICHI_CMAKE_ARGS 环境变量(之后行为可能会改变)。PY 用来表示 Python 版本,没有特殊需求保持跟你平时用的 Python 版本一样就可以,比如 3.8TAICHI_CMAKE_ARGS 的用法麻烦参考文档。
  4. 不要用应用商店里的 Python,麻烦从官网下载。

感谢你的帮助,在尝试使用python setup.py后,情况好了一些,但是仍然在cmake时产生问题,我不是很清楚问题在哪

-- Trying 'Visual Studio 17 2022 x64 v143' generator - success
--------------------------------------------------------------------------------

Configuring Project
  Working directory:
    D:\taichi\_skbuild\win-amd64-3.8\cmake-build
  Command:
    'C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\cmake\data\bin/cmake.exe' 'D:\taichi' -G 'Visual Studio 17 2022' '-DCMAKE_INSTALL_PREFIX:PATH=D:\taichi\_skbuild\win-amd64-3.8\cmake-install' -DPYTHON_VERSION_STRING:STRING=3.8.16 -DSKBUILD:INTERNAL=TRUE '-DCMAKE_MODULE_PATH:PATH=C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\skbuild\resources\cmake' '-DPYTHON_EXECUTABLE:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\python.exe' '-DPYTHON_INCLUDE_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\Include' '-DPYTHON_LIBRARY:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\libs\python38.lib' '-DPython_EXECUTABLE:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\python.exe' '-DPython_ROOT_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8' '-DPython_INCLUDE_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\Include' -DPython_FIND_REGISTRY:STRING=NEVER '-DPython_NumPy_INCLUDE_DIRS:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\lib\site-packages\numpy\core\include' '-DPython3_EXECUTABLE:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\python.exe' '-DPython3_ROOT_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8' '-DPython3_INCLUDE_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\Include' -DPython3_FIND_REGISTRY:STRING=NEVER '-DPython3_NumPy_INCLUDE_DIRS:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\lib\site-packages\numpy\core\include' -T v143 -A x64 '-DCLANG_EXECUTABLE=<Path' to 'Clang>/bin/clang.exe' '-DLLVM_AS_EXECUTABLE=<Path' to LLVM '15>/bin/llvm-as.exe' -DTI_WITH_VULKAN:BOOL=ON -DTI_WITH_C_API=ON '-DCLANG_EXECUTABLE=C:\Users\Administrator\AppData\Local\build-cache\clang-15-v2\bin\clang++.exe' -DCMAKE_C_COMPILER_LAUNCHER=C:UsersAdministratorAppDataLocalbuild-cachesccachebinsccache.exe -DCMAKE_CXX_COMPILER_LAUNCHER=C:UsersAdministratorAppDataLocalbuild-cachesccachebinsccache.exe -DTI_VERSION_MAJOR=1 -DTI_VERSION_MINOR=6 -DTI_VERSION_PATCH=0 -DCMAKE_BUILD_TYPE:STRING=Release

CMake Warning:
  Ignoring extra path from command line:

   "15>/bin/llvm-as.exe"


-- Selecting Windows SDK version 10.0.22000.0 to target Windows 10.0.25314.
-- The C compiler identification is MSVC 19.35.32216.1
-- The CXX compiler identification is MSVC 19.35.32216.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/vs2022/VC/Tools/MSVC/14.35.32215/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/vs2022/VC/Tools/MSVC/14.35.32215/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Taichi Version 1.6.0
       Commit 2d786e52a6cf7ad658db14601d39d5597eb2b7eb
CMAKE_MSVC_RUNTIME_LIBRARY:
CLANG_EXECUTABLE defined: C:\Users\Administrator\AppData\Local\build-cache\clang-15-v2\bin\clang++.exe
C:\Users\Administrator\AppData\Local\build-cache\clang-15-v2\bin\clang++.exe --version: 15.0.0
-- Python: Using C:/Users/Administrator/AppData/Local/build-cache/miniforge3/envs/3.8/python.exe as the interpreter
    version: 3.8.16
    include: C:/Users/Administrator/AppData/Local/build-cache/miniforge3/envs/3.8/Include
    library: C:/Users/Administrator/AppData/Local/build-cache/miniforge3/envs/3.8/libs/python38.lib
    numpy include: C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\lib\site-packages\numpy\core\include
-- Found PythonInterp: C:/Users/Administrator/AppData/Local/build-cache/miniforge3/envs/3.8/python.exe (found suitable version "3.8.16", minimum required is "3.6")
-- Found PythonLibs: C:/Users/Administrator/AppData/Local/build-cache/miniforge3/envs/3.8/libs/python38.lib
-- Performing Test HAS_MSVC_GL_LTCG
-- Performing Test HAS_MSVC_GL_LTCG - Success
-- Found pybind11: C:/Users/Administrator/AppData/Roaming/Python/Python38/site-packages/pybind11/include (found version "2.10.4")
Using C++ compiler: D:/vs2022/VC/Tools/MSVC/14.35.32215/bin/Hostx64/x64/cl.exe
Building for processor AMD64
Using float32 (single) precision as real
CMake Warning at cmake/TaichiCore.cmake:56 (message):
  Metal backend only supported on OS X.  Setting TI_WITH_METAL to OFF.
Call Stack (most recent call first):
  CMakeLists.txt:165 (include)


CMake Warning at cmake/TaichiCore.cmake:63 (message):
  C backend not supported on Windows.  Setting TI_WITH_CC to OFF.
Call Stack (most recent call first):
  CMakeLists.txt:165 (include)


CMake Warning at cmake/TaichiCore.cmake:77 (message):
  external/glad submodule not detected.  Settings TI_WITH_OPENGL to OFF.
Call Stack (most recent call first):
  CMakeLists.txt:165 (include)


Building with GLFW
CMake Error at cmake/TaichiCore.cmake:157 (add_subdirectory):
  The source directory

    D:/taichi/external/glfw

  does not contain a CMakeLists.txt file.
Call Stack (most recent call first):
  CMakeLists.txt:165 (include)


Getting LLVM_DIR=C:\Users\Administrator\AppData\Local\build-cache\llvm15 from the environment variable
-- Found LLVM 15.0.1
-- Using LLVMConfig.cmake in: C:/Users/Administrator/AppData/Local/build-cache/llvm15/lib/cmake/llvm
LLVM include dirs C:/Users/Administrator/AppData/Local/build-cache/llvm15/include
LLVM library dirs C:/Users/Administrator/AppData/Local/build-cache/llvm15/lib
CMake Error at cmake/TaichiCore.cmake:319 (add_subdirectory):
  The source directory

    D:/taichi/external/SPIRV-Tools

  does not contain a CMakeLists.txt file.
Call Stack (most recent call first):
  CMakeLists.txt:165 (include)


PYTHON_LIBRARIES: C:/Users/Administrator/AppData/Local/build-cache/miniforge3/envs/3.8/libs/python38.lib
C++ Flags: /DWIN32 /D_WINDOWS /GR /EHsc -DTI_ISE_NONE /Zc:__cplusplus /Zc:inline /std:c++17 /MP /bigobj /Zi /Zf /Oi /wd4244 /wd4267 /wd4624 /nologo /D "_CRT_SECURE_NO_WARNINGS" /D "_ENABLE_EXTENDED_ALIGNED_STORAGE" /D "TI_ARCH_x64" -DTI_PASS_EXCEPTION_TO_PYTHON -DTI_INCLUDED -DTI_WITH_LLVM -DTI_WITH_CUDA -DTI_WITH_VULKAN
Build type: Release
-- Compiling LLVM byte code file for arch x64
-- Compiling LLVM byte code file for arch cuda
Installing to D:/taichi/_skbuild/win-amd64-3.8/cmake-install/c_api
Installing to D:/taichi/_skbuild/win-amd64-3.8/cmake-install/python/taichi/_lib/c_api
-- Configuring incomplete, errors occurred!
Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\skbuild\setuptools_wrap.py", line 634, in setup
    env = cmkr.configure(
  File "C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\skbuild\cmaker.py", line 332, in configure
    raise SKBuildError(

An error occurred while configuring with CMake.
  Command:
    'C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\cmake\data\bin/cmake.exe' 'D:\taichi' -G 'Visual Studio 17 2022' '-DCMAKE_INSTALL_PREFIX:PATH=D:\taichi\_skbuild\win-amd64-3.8\cmake-install' -DPYTHON_VERSION_STRING:STRING=3.8.16 -DSKBUILD:INTERNAL=TRUE '-DCMAKE_MODULE_PATH:PATH=C:\Users\Administrator\AppData\Roaming\Python\Python38\site-packages\skbuild\resources\cmake' '-DPYTHON_EXECUTABLE:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\python.exe' '-DPYTHON_INCLUDE_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\Include' '-DPYTHON_LIBRARY:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\libs\python38.lib' '-DPython_EXECUTABLE:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\python.exe' '-DPython_ROOT_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8' '-DPython_INCLUDE_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\Include' -DPython_FIND_REGISTRY:STRING=NEVER '-DPython_NumPy_INCLUDE_DIRS:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\lib\site-packages\numpy\core\include' '-DPython3_EXECUTABLE:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\python.exe' '-DPython3_ROOT_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8' '-DPython3_INCLUDE_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\Include' -DPython3_FIND_REGISTRY:STRING=NEVER '-DPython3_NumPy_INCLUDE_DIRS:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\lib\site-packages\numpy\core\include' -T v143 -A x64 '-DCLANG_EXECUTABLE=<Path' to 'Clang>/bin/clang.exe' '-DLLVM_AS_EXECUTABLE=<Path' to LLVM '15>/bin/llvm-as.exe' -DTI_WITH_VULKAN:BOOL=ON -DTI_WITH_C_API=ON '-DCLANG_EXECUTABLE=C:\Users\Administrator\AppData\Local\build-cache\clang-15-v2\bin\clang++.exe' -DCMAKE_C_COMPILER_LAUNCHER=C:UsersAdministratorAppDataLocalbuild-cachesccachebinsccache.exe -DCMAKE_CXX_COMPILER_LAUNCHER=C:UsersAdministratorAppDataLocalbuild-cachesccachebinsccache.exe -DTI_VERSION_MAJOR=1 -DTI_VERSION_MINOR=6 -DTI_VERSION_PATCH=0 -DCMAKE_BUILD_TYPE:STRING=Release
  Source directory:
    D:\taichi
  Working directory:
    D:\taichi\_skbuild\win-amd64-3.8\cmake-build
Please see CMake's output for more information.

我大概知道为什么了,git clone的包一直下不全,extenal里的缺东西,但是下了好多次都是这种情况

这是个git submodule日经问题。你可以这样:git submodule update --init --recursive --force

核心是–force

谢谢,在尝试下载好完整的taichi后,python build.py 顺利执行,并且生成了所需的 taichi_c_api.dll与taichi-1.6.0-cp38-cp38-win_amd64.whl,然而在编译taichi时,出现了多个警告,其中包括:

 check.warn(importable)
C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.8\lib\site-packages\setuptools\command\build_py.py:202: SetuptoolsDeprecationWarning:     Installing 'taichi.examples.autodiff' as data is deprecated, please list it in `packages`.
    !!


    ############################
    # Package would be ignored #
    ############################
    Python recognizes 'taichi.examples.autodiff' as an importable package,
    but it is not listed in the `packages` configuration of setuptools.

    'taichi.examples.autodiff' has been automatically added to the distribution only
    because it may contain data files, but this behavior is likely to change
    in future versions of setuptools (and therefore is considered deprecated).

    Please make sure that 'taichi.examples.autodiff' is included as a package by using
    the `packages` configuration field or the proper discovery methods
    (for example by using `find_namespace_packages(...)`/`find_namespace:`
    instead of `find_packages(...)`/`find:`).

    You can read more about "package discovery" and "data files" on setuptools
    documentation page.


!!

之后在install 编译好的taichi时,便出现多个功能无法使用的情况,如ggui:

  File "D:\Anaconda\envs\tini\lib\site-packages\taichi\ui\window.py", line 37, in __init__
    check_ggui_availability()
  File "D:\Anaconda\envs\tini\lib\site-packages\taichi\ui\utils.py", line 91, in check_ggui_availability
    raise GGUINotAvailableException("GGUI is not available.")
taichi.ui.utils.GGUINotAvailableException: GGUI is not available.

build.py提供的是一种默认的编译方式,你需要打开一些编译选项来编入更多功能。比如:export TAICHI_CMAKE_ARGS="-DTI_WITH_VULKAN=ON -DTI_WITH_GGUI=ON ${TAICHI_CMAKE_ARGS}"

谢谢你的帮助,我根据你的提示修改了编译选项,ggui仍然无法运行,同时Vulkan也无法支持,是否是编译选项修改的方法出错了,在Windows平台中应该怎么设置编译选项?
我目前是在环境变量中系统变量设置了TAICHI_CMAKE_ARGS,具体为
image
同时在管理员下native tool command prompt for 2022设置,set TAICHI_CMAKE_ARGS="-DTI_WITH_C_API:BOOL=ON -DTI_WITH_VULKAN=ON -DTI_WITH_GGUI=ON ${TAICHI_CMAKE_ARGS}",之后再开始编译

-- Trying 'Visual Studio 17 2022 x64 v143' generator - success
--------------------------------------------------------------------------------

Configuring Project
  Working directory:
    D:\taichi\_skbuild\win-amd64-3.10\cmake-build
 Command:
    'C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10\lib\site-packages\cmake\data\bin/cmake.exe' 'D:\taichi' -G 'Visual Studio 17 2022' '-DCMAKE_INSTALL_PREFIX:PATH=D:\taichi\_skbuild\win-amd64-3.10\cmake-install' -DPYTHON_VERSION_STRING:STRING=3.10.10 -DSKBUILD:INTERNAL=TRUE '-DCMAKE_MODULE_PATH:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10\lib\site-packages\skbuild\resources\cmake' '-DPYTHON_EXECUTABLE:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10\python.exe' '-DPYTHON_INCLUDE_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10\Include' '-DPYTHON_LIBRARY:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10\libs\python310.lib' '-DPython_EXECUTABLE:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10\python.exe' '-DPython_ROOT_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10' '-DPython_INCLUDE_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10\Include' -DPython_FIND_REGISTRY:STRING=NEVER '-DPython_NumPy_INCLUDE_DIRS:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10\lib\site-packages\numpy\core\include' '-DPython3_EXECUTABLE:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10\python.exe' '-DPython3_ROOT_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10' '-DPython3_INCLUDE_DIR:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10\Include' -DPython3_FIND_REGISTRY:STRING=NEVER '-DPython3_NumPy_INCLUDE_DIRS:PATH=C:\Users\Administrator\AppData\Local\build-cache\miniforge3\envs\3.10\lib\site-packages\numpy\core\include' -T v143 -A x64 '-DTI_WITH_C_API:BOOL=ON -DTI_WITH_VULKAN=ON -DTI_WITH_GGUI=ON ${TAICHI_CMAKE_ARGS}' '-DCLANG_EXECUTABLE=C:\Users\Administrator\AppData\Local\build-cache\clang-15-v2\bin\clang++.exe' -DCMAKE_C_COMPILER_LAUNCHER=C:UsersAdministratorAppDataLocalbuild-cachesccachebinsccache.exe -DCMAKE_CXX_COMPILER_LAUNCHER=C:UsersAdministratorAppDataLocalbuild-cachesccachebinsccache.exe -DTI_VERSION_MAJOR=1 -DTI_VERSION_MINOR=6 -DTI_VERSION_PATCH=0 -DCMAKE_BUILD_TYPE:STRING=Release

我注意到command中是正确的,但是显然编译时并没有成功加入Vulkan与ggui

有一种可能性,你的电脑上是不是没安装Vulkan驱动?可以尝试一下pip install taichi,然后试试能不能在Vulkan后端跑程序?

应该不是这个问题,我装了Vulkan驱动


上下分别是编译好的taichi与正式版taichi

我稀里糊涂解决好了问题,现在怀疑是环境变量TAICHI_CMAKE_ARGS设置的问题,需要将其设置为-DTI_WITH_GGUI=ON; -DTI_WITH_VULKAN=ON; -DTI_WITH_C_API=ON,中间是空格应该是不行的

1 个赞