첫째, μλν νλ‘μ νΈ!
Nvidia λ μ λλΌμ΄λ²λ₯Ό μ¬μ©νλ κ²½μ° OpenGL μννΈμ¨μ΄(μ: Blender)λ λꡬ μμ 컨ν μ΄λ λ΄μμ μλνμ§ μμ΅λλ€. 컨ν μ΄λ λ΄λΆμ λ μ λλΌμ΄λ²λ₯Ό μ€μΉνλ €κ³ νμ§λ§ μ€μΉλμ§λ§ OpenGL μννΈμ¨μ΄κ° μλνμ§ μμ΅λλ€. λ λ§μ κ²μ μ€μΉν΄μΌ ν©λκΉ? μλλ©΄ μΌλΆ νκ²½ λ³μλ₯Ό μ€μ νμκ² μ΅λκΉ?
κ°μ¬!
Toolboxλ 컨ν μ΄λμ΄λ―λ‘ κ·Έλν½ μΉ΄λλ₯Ό λ΄λΆμ 맀ννκ±°λ nvidia-docker λ°©μμΌλ‘ μμ μ μνν΄μΌ ν©λλ€.
@Findarato --volume /dev/nvidia0:/dev/nvidia0
λ° κΈ°ν /dev νμΌκ³Ό κ°μ κ²μ μΆκ°νλ κ²μ μλ―Έν©λκΉ?
λ°λΌμ λꡬ μμ λ΄μμ NVIDIA νλͺ©μ΄ μλνλλ‘ νλ €λ©΄ λ€μμ μνν΄μΌ νμ΅λλ€(https://github.com/thewtex/docker-opengl-nvidiaμμ μκ°μ λ°μ).
μ°Έμ‘° - 1) λΉμ μ λꡬ μμμ ν¨μΉλ₯Ό λ°μΈλλ / dev / nvidia0νκ³ λ / dev / nvidiactl λꡬ μμ λ° μ€μ X11 κ²λ€μ λ§μ΄νΈν΄μΌ https://github.com/tpopela/toolbox/commit/40231e8591d70065199c0df9b6811c2f9e9d7269μ
2) νΈμ€νΈμμ NVIDIA λ μ λλΌμ΄λ²λ₯Ό λ€μ΄λ‘λν©λλ€.
#!/bin/sh
# Get your current host nvidia driver version, e.g. 340.24
nvidia_version=$(cat /proc/driver/nvidia/version | head -n 1 | awk '{ print $8 }')
# We must use the same driver in the image as on the host
if test ! -f nvidia-driver.run; then
nvidia_driver_uri=http://us.download.nvidia.com/XFree86/Linux-x86_64/${nvidia_version}/NVIDIA-Linux-x86_64-${nvidia_version}.run
wget -O ~/nvidia-driver.run $nvidia_driver_uri
fi
3) λꡬ μμ μμ μλ λμ λλΌμ΄λ²λ₯Ό μ€μΉν©λλ€.
#!/bin/sh
sudo dnf install -y glx-utils kmod libglvnd-devel || exit 1
sudo sh ~/nvidia-driver.run -a -N --ui=none --no-kernel-module || exit 1
glxinfo | grep "OpenGL version"
@tpopela μλνμ΅λλ€. κ°μ¬!
ν¨κ³Όκ° μμ΄μ λ€νμ λλ€! νμ§λ§ νΈμ€νΈλ₯Ό λ€μ μμν ν μ€μλμ μΌμΌν¬ μ μλ μ€μκ° μμμ΅λλ€. μ΄μ ν¨μΉ μμ https://github.com/tpopela/toolbox/commit/3db450a8e5762399fd81c848f311da950437dd04 λ₯Ό μ μ©ν΄μΌ ν©λλ€.
@tpopela /tmp/.x11-unix
λ°μΈλ λ§μ΄νΈ μμ΄ λΉ μ Έλκ° μ μμμ§λ λͺ¨λ¦
λλ€. μμ¦ X.org μλ²λ μΆμ UNIX μμΌκ³Ό νμΌ μμ€ν
μ UNIX μμΌμμ μμ λκΈ°ν©λλ€. μ μλ λ€νΈμν¬ λ€μμ€νμ΄μ€κ° μλ κ²½μ° μλνμ§ μμ§λ§ Toolboxμλ ( podman create --net host
λλ¬Έμ) λ€μμ€νμ΄μ€κ° μμΌλ―λ‘ X μμ© νλ‘κ·Έλ¨μ΄ μλν©λλ€. νμλ /tmp/.x11-unix
μμΌλ©° Flatpak 컨ν
μ΄λμ λ€νΈμν¬ λ€μμ€νμ΄μ€κ° μκΈ° λλ¬Έμ μ¬μ©λ©λλ€.
μ°Έμ‘°:
μ μμμ΄ @debarshiray! μ€λͺ
ν΄μ£Όμ
μ κ°μ¬ν©λλ€. /tmp/X11-unix
λ§μ΄νΈλ₯Ό λ°μΈλ©νμ§ μμλ μ무κ²λ λ³κ²½λμ§ μκ³ ν΅ν©μ΄ μλν¨μ νμΈν μ μμ΅λλ€(μ¬κΈ°μμ Blenderλ₯Ό μ€ννλ €κ³ μλνμ΅λλ€).
/dev
μ 체λ₯Ό λ°μΈλ λ§μ΄νΈν ν μ½κ°μ λ³κ²½μ΄ μμ μ μμ΅λλ€. λΈλ λλ μ΄μ PATHμμ nvcc
(CUDA νλͺ©)μ μ°Ύκ³ μ°Ύμ μ μμ΅λλ€.
https://github.com/debarshiray/toolbox/pull/119λ₯Ό λ³ν©νλ©΄ Nvidiaκ° νμ¬ λ
μ λλΌμ΄λ²λ‘ μμ
νκ³ μκΈ° λλ¬Έμ μ΄ λ¬Έμ κ° μ’
λ£λ μ μμ΅λλ€. λꡬ μμ 컨ν
μ΄λ λ΄λΆμ ν λ² nvidia λλΌμ΄λ²λ₯Ό μ€μΉνκΈ°λ§ νλ©΄ λ©λλ€. @tpopela μ μ€ν¬λ¦½νΈ λ λλΌμ΄λ² μ€μΉμ λμμ΄ λ©λλ€. @tpopela CUDA Toolkit μ μ€μΉν΄μΌ ν©λλ€. μ€μΉνκΈ° μν΄ --override
λ° --toolkit
맀κ°λ³μλ₯Ό μ λ¬νμ΅λλ€. CUDA Toolkit Blenderλ₯Ό μ€μΉν ν CUDAλ₯Ό μ¬μ©νμ¬ λ λλ§νλ μ΅μ
μ νμν©λλ€. κ·Έλ¬λ λΆννλ CUDAλ GCC9μμ μλνμ§ μμ΅λλ€ :(
μ¬μ€ μ λ NVIDIA νΈμ€νΈ λλΌμ΄λ²λ₯Ό 컨ν μ΄λλ‘ μ μΆνλ κ²μ λν΄ μμκΈ° λλ¬Έμ μ΄κ²μ μ΄μ΄ λ‘λλ€(νμ§λ§ Rishiμ λ¨κ²¨ λ κ²μ λλ€). λ°λΌμ 컨ν μ΄λμ λλΌμ΄λ²λ₯Ό μλμΌλ‘ μ€μΉν νμκ° μμ΅λλ€. μ΄λ₯Ό μν WIP μ루μ μ΄ μμ΅λλ€.
κ·Έκ²μ μ’μ κ²μ λλ€!
μ°λ¦¬λ @debarshiray μ ν¨κ» NVIDIA νΈμ€νΈ λλΌμ΄λ²λ₯Ό
컨ν μ΄λμ λλΌμ΄λ²λ₯Ό μλμΌλ‘ μ€μΉν νμκ° μμ΅λλ€.
μ, μ΄κ²μ΄ μ³μ μΌμ΄λΌλ λ° λμν©λλ€. OpenGL λλΌμ΄λ²μλ μλ‘ ν΅μ νλ 컀λ λͺ¨λκ³Ό μΌλΆ μ¬μ©μ κ³΅κ° κ΅¬μ± μμ(μ: 곡μ λΌμ΄λΈλ¬λ¦¬)κ° μμ΅λλ€. NVIDIAμ κ²½μ° μ΄ λ κ΅¬μ± μμ κ°μ μΈν°νμ΄μ€κ° μμ μ μ΄μ§ μμΌλ―λ‘ μ»¨ν μ΄λ λ΄λΆμ μ¬μ©μ κ³΅κ° λΉνΈλ νΈμ€νΈμ 컀λ λͺ¨λκ³Ό μΌμΉν΄μΌ ν©λλ€. νΈμ€νΈκ° 컨ν μ΄λλ³΄λ€ λ€μ²μ§λ κ²½μ° λλ κ·Έ λ°λμ κ²½μ° μ΄ λ κ°μ§κ° λκΈ°νλμ§ μμ μ μμ΅λλ€.
νμΌμ 컨ν μ΄λλ‘ μ μΆνλ λ¬Έμ λ λ²μ λ§λ€ λ€λ₯΄κΈ° λλ¬Έμ ν΄λΉ νμΌμ λͺ©λ‘μ μ΄λκ°μ μ μ§ κ΄λ¦¬νλ κ²μ λλ€. λ°μΈλ λ§μ΄νΈλ μ μλ μ μλ €μ§ nvidia λλ ν λ¦¬κ° νΈμ€νΈ μ΄λκ°μ μλ€λ©΄ κ°λ³ νμΌ μ체μ μ΄λ¦κ³Ό μμΉμ λν΄ κ±±μ ν νμκ° μκΈ° λλ¬Έμ μ΄κ²μ ν¨μ¬ λ κ°λ¨ν κ²μ λλ€. λΆννλ κ·Έλ μ§ μμ΅λλ€.
μ£Όμλ₯Ό λλ¬λ³΄λ Flatpakμ μ루μ
μ΄ ν©λ¦¬μ μΈ ννμ μ΄λΌλ κ²μ μμμ΅λλ€. μ컨λ, μ΄ μ μλ €μ§ nvidia λλ ν 리λ₯Ό λ°λͺ
νκ³ μνν©λλ€. νΈμ€νΈ OSμ λ°°ν¬μκ° λͺ¨λ μ¬μ©μ κ³΅κ° νμΌμ /var/lib/flatpak/extension/org.freedesktop.Platform.GL.host/x86_64/1.4
μ λ£μ κ²μΌλ‘ μμνλ©° μ΄λ NVIDIA λλΌμ΄λ²λ₯Ό μ 곡νλ ν¨ν€μ§λ₯Ό μμ νμ¬ κ΅¬νλ©λλ€.
μ΄ μμ μ΄ μλ£λλ©΄ 컨ν μ΄λ λ΄λΆμ μ΄λ¬ν νμΌμ λ°°μΉν μμΉμ 컨ν μ΄λμ λ°νμ νκ²½μμ ν΄λΉ νμΌμ κ°λ¦¬ν€λ λ°©λ²μ νμ ν΄μΌ ν©λλ€.
Nvidiaμλ ββμ΄ nvidia-container-runtime-hook
λν μ체 μ루μ
μ΄ μμ΅λλ€. μ΄ --uidmap
μ¬μ©ν λ ldconfig
μ€ν κΆνμ μκ² λλ μκ°μ λ¬Έμ κ° λ°μνμ΅λλ€.
could not start /sbin/ldconfig: mount operation failed: /proc: operation not permitted
λꡬ μμκ° λ€λ₯Έ ꡬνμ μ μ§ κ΄λ¦¬νλ κ²λ³΄λ€ κΈ°μ‘΄ λꡬμ ν΅ν©μ μλνκ³ ν΅ν©νλ κ²μ΄ λ λμ μ μμ΅λλ€.
uidmap κΆν λ¬Έμ μ κ΄λ ¨λ λ¬Έμ :
λꡬ μμ λ²κ·Έ #343μμ Steamμ μ€ννλ €κ³ νμ΅λλ€. λꡬ μμλ₯Ό ν¨μΉνμ§ μμκ³ , Steamμ΄ μ€νλκ³ OpenGLμ΄ μλνμ§λ§ vulkanμ΄ μλνμ§ μλ κ² κ°μ΅λλ€. Steamμμ vkmark λ° Rise of Tomb Raiderλ₯Ό μλνμ΅λλ€.
μλμν€λ λ°©λ²μ λν μμ΄λμ΄κ° μμ΅λκΉ?
Singularity ccontainerκ° libnvidia-container
μμ΄ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ κ²μ 보μμ΅λλ€. κ·Έλ€μ νμν νμΌ λͺ©λ‘μ μ¬μ©
κ·Έλ λ€λ©΄ 2021λ
컨ν
μ΄λμμ Nvidia GPU λλΌμ΄λ²λ₯Ό μ¬μ©νλ νν©μ 무μμ
λκΉ?
/dev/nvidia0
λ° /dev/nvidiactl
λ₯Ό λ§μ΄νΈν μ μμ΅λλ€.
κ·Έλ¬λ Nvidia λλΌμ΄λ²λ₯Ό μ±κ³΅μ μΌλ‘ μ€μΉν μ μμ΅λλ€. μ€μΉλ μ μμ μΌλ‘ μ§νλμ§λ§ modinfo -F version nvidia
νλ©΄ μ€λ₯κ° λ°μν©λλ€.
modinfo: ERROR: Module alias nvidia not found.
.
κ·Έλ¦¬κ³ Nvidia Container Toolkitμ Fedoraμμ 곡μμ μΌλ‘ μ§μλμ§ μμΌλ―λ‘ Fedora Silverblueμ ν¨κ» μ¬μ©νλ κ²μ μ’μ μκ°μ΄ μλ κ² κ°μ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
λ°λΌμ λꡬ μμ λ΄μμ NVIDIA νλͺ©μ΄ μλνλλ‘ νλ €λ©΄ λ€μμ μνν΄μΌ νμ΅λλ€(https://github.com/thewtex/docker-opengl-nvidiaμμ μκ°μ λ°μ).
μ°Έμ‘° - 1) λΉμ μ λꡬ μμμ ν¨μΉλ₯Ό λ°μΈλλ / dev / nvidia0νκ³ λ / dev / nvidiactl λꡬ μμ λ° μ€μ X11 κ²λ€μ λ§μ΄νΈν΄μΌ https://github.com/tpopela/toolbox/commit/40231e8591d70065199c0df9b6811c2f9e9d7269μ
2) νΈμ€νΈμμ NVIDIA λ μ λλΌμ΄λ²λ₯Ό λ€μ΄λ‘λν©λλ€.
3) λꡬ μμ μμ μλ λμ λλΌμ΄λ²λ₯Ό μ€μΉν©λλ€.