运行CUDA会报错,但是CPU和OpenGL都没有问题

问题描述

使用ti.gpu或者ti.cuda,就会报错
export之后会调用opengl,不会报错
使用ti.cpu也不会。

错误信息

[Taichi] version 0.8.2, llvm 10.0.0, commit bfa5c28b, linux, python 3.8.10
[Taichi] Starting on arch=cuda
[E 10/14/21 21:56:15.545 139708] [cuda_driver.h:operator()@86] CUDA Error CUDA_ERROR_OUT_OF_MEMORY: out of memory while calling malloc (cuMemAlloc_v2)


***********************************
* Taichi Compiler Stack Traceback *
***********************************
/home/yangwang/.local/lib/python3.8/site-packages/taichi/core/../lib/taichi_core.so: taichi::Logger::error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)
/home/yangwang/.local/lib/python3.8/site-packages/taichi/core/../lib/taichi_core.so: taichi::lang::CUDADriverFunction<void**, unsigned long>::operator()(void**, unsigned long)
/home/yangwang/.local/lib/python3.8/site-packages/taichi/core/../lib/taichi_core.so: taichi::lang::cuda::CudaDevice::allocate_memory(taichi::lang::Device::AllocParams const&)
/home/yangwang/.local/lib/python3.8/site-packages/taichi/core/../lib/taichi_core.so: taichi::lang::LlvmProgramImpl::materialize_runtime(taichi::lang::MemoryPool*, taichi::lang::KernelProfilerBase*, unsigned long**)
/home/yangwang/.local/lib/python3.8/site-packages/taichi/core/../lib/taichi_core.so(+0x46783b) [0x7fddb760c83b]
/home/yangwang/.local/lib/python3.8/site-packages/taichi/core/../lib/taichi_core.so(+0x3a5d3e) [0x7fddb754ad3e]
python3(PyCFunction_Call+0x59) [0x5f5db9]
python3(_PyObject_MakeTpCall+0x29e) [0x5f698e]
python3() [0x50b4c7]
python3(_PyEval_EvalFrameDefault+0x5786) [0x570e46]
python3(_PyEval_EvalCodeWithName+0x26a) [0x56a0ba]
python3(_PyFunction_Vectorcall+0x393) [0x5f6343]
python3(_PyEval_EvalFrameDefault+0x186a) [0x56cf2a]
python3(_PyEval_EvalCodeWithName+0x26a) [0x56a0ba]
python3(PyEval_EvalCode+0x27) [0x68d5b7]
python3() [0x67cd01]
python3() [0x67cd7f]
python3() [0x67ce21]
python3(PyRun_SimpleFileExFlags+0x197) [0x67ef47]
python3(Py_RunMain+0x212) [0x6b7242]
python3(Py_BytesMain+0x2d) [0x6b75cd]
/lib/x86_64-linux-gnu/libc.so.6: __libc_start_main
python3(_start+0x2e) [0x5fb18e]

Internal error occurred. Check out this page for possible solutions:
https://docs.taichi.graphics/lang/articles/misc/install
Traceback (most recent call last):
  File "N-body.py", line 2, in <module>
    ti.init(arch=ti.gpu)
  File "/home/yangwang/.local/lib/python3.8/site-packages/taichi/lang/__init__.py", line 546, in init
    impl.get_runtime().prog.materialize_runtime()
RuntimeError: [cuda_driver.h:operator()@86] CUDA Error CUDA_ERROR_OUT_OF_MEMORY: out of memory while calling malloc (cuMemAlloc_v2)

GPU信息

Thu Oct 14 22:16:59 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.74       Driver Version: 470.74       CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Quadro P620         Off  | 00000000:D8:00.0  On |                  N/A |
| 42%   52C    P0    N/A /  N/A |   1709MiB /  1997MiB |     12%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1287      G   /usr/lib/xorg/Xorg                109MiB |
|    0   N/A  N/A      2630      G   /usr/lib/xorg/Xorg                945MiB |
|    0   N/A  N/A      2796      G   /usr/bin/gnome-shell              177MiB |
|    0   N/A  N/A      3094      G   fcitx-qimpanel                     27MiB |
|    0   N/A  N/A     60008      G   ...AAAAAAAAA= --shared-files       98MiB |
|    0   N/A  N/A     76248      G   ...Tencent\WeChat\WeChat.exe        5MiB |
|    0   N/A  N/A     76509      G   ...cent\WeChat\WeChatApp.exe        4MiB |
|    0   N/A  N/A    113347      G   /usr/lib/firefox/firefox          256MiB |
|    0   N/A  N/A    113559      G   /usr/lib/firefox/firefox            0MiB |
|    0   N/A  N/A    114007      G   /usr/lib/firefox/firefox            0MiB |
|    0   N/A  N/A    114203      G   /usr/lib/firefox/firefox            0MiB |
|    0   N/A  N/A    139029      G   /usr/lib/firefox/firefox            0MiB |
+-----------------------------------------------------------------------------+

系统信息

yangwang@CFD 
------------ 
OS: Ubuntu 20.04.3 LTS x86_64 
Host: Super Server 0123456789 
Kernel: 5.11.0-38-generic 
Uptime: 1 day, 20 hours, 28 mins 
Packages: 2413 (dpkg), 7 (snap) 
Shell: zsh 5.8 
Resolution: 5120x2880 
DE: GNOME 
WM: Mutter 
WM Theme: Adwaita 
Theme: Yaru [GTK2/3] 
Icons: Yaru [GTK2/3] 
Terminal: gnome-terminal 
CPU: Intel Xeon Gold 6139 (36) @ 3.700GHz 
GPU: NVIDIA Quadro P620 
Memory: 10847MiB / 128581MiB 

带解决

因为我用GPU跑,平均只有15帧,用OpenGL也不超过30帧,太慢了。希望能解决这个问题。

目前还不知道如何解决,希望大神带飞,谢谢!

Taichi 默认为 field 申请 1GB显存,可以尝试下使用device_memory_GB改小一些:

  ti.init(arch=ti.cuda, device_memory_GB=0.5)
1 个赞

还是不行

认真阅读了
https://docs.taichi.graphics/lang/articles/misc/install

然后google上搜索了,虽然有类似的问题,但是也不知道怎么解决!

咦,注意到你的显卡存储占用率很高啊

1709MiB / 1997MiB

已经没有太多空间了 :joy:

我看到您的回答。试了一下上个方案。改成0.3就行了。现在CUDA可以用了。

问题就是,更慢。哈哈哈

难道我真的要买显卡,买不起!

哈哈,内存超大,很羡慕 :grinning:
也可以直接用CPU来跑,或使用 opengl,在代码中修改arch就可以了,可以不用export

# ti.init(arch=ti.cpu)
ti.init(arch=ti.opengl)
1 个赞

对。但是大佬问两个小问题。

用CPU跑,帧率很低,只有10+。
用OpenGL跑,帧率有差不多20+。

请问OpenGL,也是利用CPU吧。

不是大佬,不客气
OpenGL 是在 GPU 上运行的。

好的。谢谢您!

还是多学习一下。目前还是傻傻分不清,cuda和opengl等的关系!

1 个赞

不客气~

1 个赞