目录
- 1 前言
- 2 Windows启用Linux和虚拟机平台
- 3 安装Ubuntu
- 4 下载CUDA离线安装包(deb方式和runfile方式二选一,本文选择runfile方式)
- 5 配置Ubuntu
- 6 安装CUDA
- 7 安装conda
- 8 安装Pytorch
- 9 安装Genesis
- 10 vscode连接linux torch环境
- 11 问题列表
- 11.1 libGL error: failed to load driver: swrast
- 11.2 libcuda.so lib not found
- 11.3 pyglet.gl.ContextException: Could not create GL context
- 11.4 OpenGL.error.Error: Attempt to retrieve context when no valid context
- 11.5 function 'glGetUniformLocation' not found
- 11.6 CUDA Error CUDA_ERROR_NO_DEVICE
- 11.7 CMake Error at src/apps/CMakeLists.txt
- 11.8 c++: fatal error: Killed signal terminated program cc1plus
- 11.9 No module named 'LuisaRenderPy'
- 11.10 ModuleNotFoundError: No module named 'open3d'
- 11.11 Validation failure (0): b'active samplers with a different type refer to the same texture image unit'
- 11.12 NameError: name 'trimesh' is not defined
- 11.13 [ERROR] No display detected. Use “show viewer=false” for headless mode.
- 12 总结
1 前言
由于Genesis
目前不支持在Windows
上开发,只支持仿真,不支持渲染。所以就考虑在linux
上进行开发环境的配置。而当前主流方案是在windows
上使用wsl
进行linux
的开发,基本已经弃用了VMware
方案。因为wsl
是微软自己开发的在windows
上使用linux
的环境,效率比VMware
要高的多。但相应的,linux
的配置也很复杂。就本次搭建Genesis
的开发环境,作者也是参考了很多篇博文,以及不停的问ChatGPT
,最终才完成了Genesis
开发环境的配置。可以说整个过程能劝退80%的开发人员,因为太复杂了。基于此,作者吐血整理了自己配置环境的整个过程,希望对后来者有所帮助。
本文所有环境版本:
WSL:2
Ubuntu:22.04
CUDA:12.4
conda:24.11.1
Pytorch:2.5.1
Genesis:0.x latest
NVIDIA Driver:566.36
Python:3.9.21
写在最前面: 为了确保你的环境是WSL2,最好先在windows cmd里执行以下命令
wsl --update
wsl -v
wsl --shutdown
确保WSLg(windows subsystem linux gui)
可用,否则看不到最终的渲染界面。
如果升级完还是看不到版本信息,可以手动下载wsl安装,地址为https://github.com.microsoft/WSL/release/2.3.26/wsl.2.3.26.0.x64.msi,来自群里小伙伴反馈,感谢。
2 Windows启用Linux和虚拟机平台
如果提示了重启就重启,没提示就不需要
3 安装Ubuntu
进入linux
前我们需要在cmd
中执行以下命令来切换到wsl2
版本,执行完毕之后再进入Ubuntu
wsl --set-default-version 2
4 下载CUDA离线安装包(deb方式和runfile方式二选一,本文选择runfile方式)
到CUDA
官网下载安装包备用
https://developer.nvidia.com/cuda-12-4-1-download-archive?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=runfile_local
选择好版本之后,直接浏览器里访问后面的下载连接,让浏览器后台下载着,整个过程很慢,我们先回到Ubuntu操作。
5 配置Ubuntu
首先就是要配置Ubuntu
的数据源,因为接下来我们要开始更新系统内的各种依赖包了,默认地址太慢
sudo vi /etc/apt/sources.list
按i
键进入编辑模式,修改后,按 ESC
键退出编辑模式,输入:wq
保存并退出。
这里使用中科大的源,将前四个默认地址都换成 https://mirrors.ustc.edu.cn/ubuntu/
,保存之后,我们执行下面四个命令来安装环境
sudo apt-get update
sudo apt-get upgrade
sudo apt install build-essential gcc g++ -y
sudo apt install dkms build-essential -y
6 安装CUDA
现在我们将已经下载好的cuda
安装包拷贝到Ubuntu
的某一路径下
Ubuntu
的终端进入到这个路径下执行安装命令
sudo sh cuda_12.4.1_550.54.15_linux.run
输入accept 然后回车
选中 install
然后回车,等待安装完成
看到这句话就表示安装成功了。接下刷新一下环境变量,先查看一下use/local
路径下有没有cuda
的文件夹
有就可以继续配置了,没有就说明安装失败了,重新安装吧。现在Ubuntu
的终端输入以下命令
vim ~/.bashrc
然后新增两行内容,注意:版本号要该成你自己的版本号,我的是cuda-12.4
,然后保存退出。
export PATH=/usr/local/cuda-12.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH
接着刷新环境,并查看cuda信息
source ~/.bashrc
nvcc -V
如果出现了CUDA
的信息,说明就安装配置OK
了。
7 安装conda
执行以下命令来安装conda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
按住回车,直到询问yes/no
时输入yes
,回车,询问安装位置,使用默认位置,直接回车即可。
继续回车,完成安装
输入以下命令验证是否安装成功
source ~/.bashrc
conda --version
如果出现了版本信息就说明安装成功了,如果是conda: command not found
,则需要再次编辑.bashrc
,新增一行
export PATH=/root/miniconda3/bin:$PATH
配置conda
镜像地址
vi ~/.condarc
粘贴地址,保存。
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
- defaults
show_channel_urls: true
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
8 安装Pytorch
先使用conda
创建Python
环境,然后确保激活了这个环境
conda create -n torch python=3.9
conda activate torch
接下就可以安装Pytorch
了,来到Pytorch
的官网选择好版本信息
https://pytorch.org/get-started/locally
默认安装命令是
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia
这里有个小坑,Pytorch
现在最高只支持到cuda12.4
,所以如果你装了cuda12.6
的话,也是无用的。因为上面的命令下载速度太慢了,我们切换到清华的数据源来进行安装,耐心等待完成。
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/
9 安装Genesis
conda activate torch
pip install genesis-world
10 vscode连接linux torch环境
在vscode
插件中搜索wsl
进行插件安装
点击左下角打开wsl
连接界面,选择 使用发行版连接到WSL
选择打开文件夹,选择自己的项目路径
Ctrl+Shift+P
,选择Python
解释器,选择我们之前使用conda
创建的torch
环境
然后运行右键运行hello_genesis.py
重要 重要 重要的事情说三遍:wsl环境跑genesis,请先务必按照教程一步一步走完,顺序不要乱,配置不要漏,否则有很大几率出不来渲染界面。最后还要在Ubuntu里执行 xeyes、glxgears两条命令来检测一下自己的OpenGL环境有没有问题。xeyes出现一对眼睛,glxgears出现齿轮动画才表示OpenGL环境正常。
11 问题列表
11.1 libGL error: failed to load driver: swrast
libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so
,这个错误是由于缺少libgl1-mesa-dri
导致的
解决方案:
1.安装libgl1-mesa-dri
2.创建目标目录(如果不存在)
3.创建一个符号链接,将 /usr/lib/dri/swrast_dri.so
指向实际的位置 /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
sudo apt install libgl1-mesa-dri
sudo mkdir -p /usr/lib/dri
sudo ln -s /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so /usr/lib/dri/swrast_dri.so
11.2 libcuda.so lib not found
解决方案:
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH
11.3 pyglet.gl.ContextException: Could not create GL context
解决方案:
conda install -c conda-forge libstdcxx-ng
11.4 OpenGL.error.Error: Attempt to retrieve context when no valid context
解决方案1:
修改python
文件,在 import genesis
之前导入os
,如下:
import os
os.environ['PYOPENGL_PLATFORM'] = 'glx'
import genesis as gs
gs.init(backend=gs.cuda)
scene = gs.Scene()
解释:glx
是wsl OpenGL
的一个实现方案,macOS
用的 'cocoa'、'aqua'
,嵌入式系统用的'egl'
,离屏渲染用的'osmesa'
解决方案2:
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update
sudo apt upgrade
export LIBGL_ALWAYS_INDIRECT=0
11.5 function ‘glGetUniformLocation’ not found
解决方案:目前Genesis
还不支持在windows
上渲染,改用wsl linux
环境吧
11.6 CUDA Error CUDA_ERROR_NO_DEVICE
解决方案:CUDA
环境被破坏了,重新安装CUDA
,如果还不行,重新安装Ubuntu
11.7 CMake Error at src/apps/CMakeLists.txt
解决方案:以下命令任意一条命令执行即可
pip install -e “.[render]”
or
pip install “pybind11[global]”
11.8 c++: fatal error: Killed signal terminated program cc1plus
解决方案:多执行几次cmake --build build -j $(nproc)
,LuisaRender在构建时可以累积的。
11.9 No module named ‘LuisaRenderPy’
解决方案1:将编译好的LuisaRenderPy
整个文件夹拷贝到python
的site-packages
路径下,命令为:
cp -r genesis/ext/LuisaRender/ /root/miniconda3/envs/torch/lib/python3.9/site-packages/genesis/ext
解决方案2:创建符号链接,将site-packages/genesis/ext/LuisaRenderPy
映射到genesis/ext/LuisaRender/
路径,命令为:
SITE_PACKAGES=$(python -c “import site; print(site.getsitepackages()[0])”)
ln -s genesis/ext/LuisaRender “$SITE_PACKAGES/genesis/ext/LuisaRender”
最后验证一下符号链接是否创建成功了,执行以下命令,如果输出了正确的路径,就成功了:
ls -l $SITE_PACKAGES/genesis/ext/LuisaRender
11.10 ModuleNotFoundError: No module named ‘open3d’
解决方案:
pip install open3d
or
conda install -c conda-forge open3d
11.11 Validation failure (0): b’active samplers with a different type refer to the same texture image unit’
解决方案:先试11.4,再试11.12
11.12 NameError: name ‘trimesh’ is not defined
解决方案1:注释掉shaders.py
的检测行(群里小伙伴自己探索出来的)
解决方案2:安装ffmpeg
sudo add-apt-repository ppa:jonathonf/ffmpeg-4
sudo apt-get update
sudo apt-get install ffmpeg
ffmpeg -version
11.13 [ERROR] No display detected. Use “show viewer=false” for headless mode.
解决方案:
wsl的环境有问题,首先在windows cmd中执行以下命令,确保wsl环境没问题了
wsl --update
wsl -v
wsl --set-default-version 2
wsl --shutdown
然后在Ubuntu里执行以下两条命令,能看到一对眼睛和一个齿轮动画表示成功
yexes
glxgears
重启windows,再运行HelloGenesis,如果以上都执行完毕了还不行,那就说明wsl的环境彻底被破坏了,百度自行搜索重新安装wsl2,win10安装wsl2参考微软官方文档链接。
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4—download-the-linux-kernel-update-package
12 总结
本文主要讲解了在windows
上进行Genesis
开发环境的搭建。从零开始逐步介绍了安装Ubuntu、CUDA、Pytorch、conda、Genesis
等等。以及讲解了整个开发环境搭建过程中遇到的各种问题,整个过程相当艰难,Ubuntu
环境折腾坏了好多次,各种配置重新安装了一遍又一遍。不过最终还是皇天不负有心人,成功的跑起来了Genesis
。每当此时,一股无以言说的感觉就会席卷全身,我骄傲,哈哈哈。本文就介绍了这里了,顺道说一句,作者创建了一个Genesis
群,有想加的同学可以公众号回复Genesis交流群,回见~