跳转至主要内容
Version: v1.5.0

安装疑难解答

Linux 相关问题

  • 如果 Taichi 崩溃并报告 /usr/lib/libstdc++.so.6: version `CXXABI_1.3.11' not found

    您可能正在使用 Ubuntu 16.04。 请尝试 这个帖子 提供的解决方案:

    sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
    sudo apt-get update
    sudo apt-get install libstdc++6

Windows 相关问题

Python 相关问题

  • 如果 pip 报错找不到合适的包:

    ERROR: Could not find a version that satisfies the requirement taichi (from versions: none)
    ERROR: No matching distribution found for taichi
    • 确保你使用的 Python 版本是 3.7/3.8/3.9/3.10:

      python3 -c "print(__import__('sys').version[:3])"
      # 3.7, 3.8, 3.9, or 3.10
    • 确保你安装的 Python 可执行文件是 64 位的:

      python3 -c "print(__import__('platform').architecture()[0])"
      # 64bit

CUDA 相关问题

  • 如果 Taichi 崩溃并报错:

    [Taichi] mode=release
    [Taichi] version 0.6.0, supported archs: [cpu, cuda, opengl], commit 14094f25, python 3.8.2
    [W 05/14/20 10:46:49.549] [cuda_driver.h:call_with_warning@60] CUDA Error CUDA_ERROR_INVALID_DEVICE: invalid device ordinal while calling mem_advise (cuMemAdvise)
    [E 05/14/20 10:46:49.911] Received signal 7 (Bus error)

    这可能是因为你使用的 NVIDIA GPU 低于 Pascal 架构,这对 统一内存(Unified Memory) 的支持会有所限制。

    • 可能的解决方案: 在 ~/.bashrc 文件中添加 export TI_USE_UNIFIED_MEMORY=0。 该操作将禁止 CUDA 后端使用统一内存。
  • 如果 Taichi 退出并报告超出 CUDA 预分配内存(Out of CUDA pre-allocated memory),例如:

    import taichi as ti

    ti.init(arch=ti.cuda)

    x = ti.field(dtype=ti.i16)

    ti.root.pointer(ti.i, 1024).dense(ti.i, 1024 * 1024).place(x)
    # A sparse array. Each dense block is 2MB in size.

    # Populate 1024 * 2MB = 2GB memory
    def populate():
    for k in range(1024):
    x[k * 1024 * 1024] = 1

    populate()

    可能导致:

    [Taichi] Starting on arch=cuda
    Taichi JIT:0: allocate_from_buffer: block: [0,0,0], thread: [0,0,0] Assertion `Out of CUDA pre-allocated memory.
    Consider using ti.init(device_memory_fraction=0.9) or ti.init(device_memory_GB=4) to allocate more GPU memory` failed.

    这通常发生在你使用稀疏数据结构时,此时需要动态分配 GPU 内存。 在不支持 CUDA 统一内存的平台(如 Windows)上, Taichi 仅为动态分配的数据结构预留 1 BG 的 GPU 内存。 要解决这个问题,只需预分配更多内存:

    1. 设置 ti.init(..., device_memory_fraction=0.9),分配 90% 的 GPU 内存。 可根据硬件情况用其他分数替代“90%”。
    2. 设置 ti.init(..., device_memory_GB=4),分配 4 GB 的 GPU 内存。 可灵活使用大于 1 的任何数字。
    3. 也可设置环境变量 TI_DEVICE_MEMORY_FRACTION=0.9TI_DEVICE_MEMORY_GB=4

    需注意,在 Linux 系统,Taichi 能利用 CUDA 的统一内存机制自动扩大内存池。

  • 如果你遇到了其他 CUDA 相关问题:

    • 可能的解决方案:尝试添加 export TI_ENABLE_CUDA=0~/.bashrc 文件中。 该操作将完全禁用 CUDA 后端,这样 Taichi 会转而使用其他 GPU 后端,如 OpenGL。

OpenGL 相关问题

  • 如果 Taichi 崩溃,堆栈跟踪中显示 glfwCreateWindow(见 #958):

    [Taichi] mode=release
    [E 05/12/20 18.25:00.129] Received signal 11 (Segmentation Fault)
    ***********************************
    * Taichi Compiler Stack Traceback *
    ***********************************

    ... (many lines, omitted)

    /lib/python3.8/site-packages/taichi/core/../lib/taichi_python.so: _glfwPlatformCreateWindow
    /lib/python3.8/site-packages/taichi/core/../lib/taichi_python.so: glfwCreateWindow
    /lib/python3.8/site-packages/taichi/core/../lib/taichi_python.so: taichi::lang::opengl::initialize_opengl(bool)

    ... (many lines, omitted)

    这很可能是因为你运行 Taichi 的虚拟机上的 OpenGL 版本过低。 Taichi 需要 OpenGL 4.3 以上版本。

    • 可能的解决方案:尝试添加 export TI_ENABLE_OPENGL=0~/.bashrc 文件中,即使你初始化 Taichi 时使用的是 OpenGL 以外的后端。 该操作将禁用 OpenGL 后端检测,以避免版本不兼容的问题。

安装中断

安装期间,下载过程因 HTTPSConnection 错误而中断。 尝试从镜像源安装 Taichi。

pip install taichi -i https://pypi.douban.com/simple

其他问题

  • 如果以上方案都没能解决你的问题,请在 Github 上 创建 issue 寻求帮助。 这将帮助我们后续提高用户体验和兼容性,非常感谢!