安装疑难解答
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 相关问题
- 如果 Taichi 在 Windows 上崩溃并报告
ImportError
, 请考虑安装 Microsoft Visual C++ Redistributable。
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 "import sys;print(sys.version[:sys.version.find('.', 2)])"
# 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 内存。 要解决这个问题,只需预分配更多内存:
- 设置
ti.init(..., device_memory_fraction=0.9)
,分配 90% 的 GPU 内存。 可根据硬件情况用其他分数替代“90%”。 - 设置
ti.init(..., device_memory_GB=4)
,分配 4 GB 的 GPU 内存。 可灵活使用大于 1 的任何数字。 - 也可设置环境变量
TI_DEVICE_MEMORY_FRACTION=0.9
和TI_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 寻求帮助。 这将帮助我们后续提高用户体验和兼容性,非常感谢!