この記事を作った動機

 以下の Blender と Nvidia ドライバや CUDA の構成だと、CUDA のコンパイルに失敗して Cycles レンダリングにおける GPU 演算が正しく行われない結果になることがわかった。

yay -Qs nvidia
# local/cuda 13.1.1-1 (2.2 GiB 4.7 GiB) 
#     NVIDIA's GPU programming toolkit
# local/egl-gbm 1.1.3-1
#     The GBM EGL external platform library
# local/egl-wayland 4:1.1.21-1
#     EGLStream-based Wayland external platform
# local/egl-wayland2 1.0.1-1
#     EGLStream-based Wayland external platform (2)
# local/egl-x11 1.0.5-1
#     NVIDIA XLib and XCB EGL Platform Library
# local/ffnvcodec-headers 13.0.19.0-1
#     FFmpeg version of headers required to interface with Nvidias codec APIs
# local/lib32-opencl-nvidia 590.48.01-1
#     OpenCL implemention for NVIDIA (32-bit)
# local/libnvidia-container 1.19.0-1
#     NVIDIA container runtime library
# local/libva-nvidia-driver 0.0.16-1
#     VA-API implementation that uses NVDEC as a backend
# local/libvdpau 1.5-4
#     Nvidia VDPAU library
# local/libxnvctrl 590.48.01-1
#     NVIDIA NV-CONTROL X extension
# local/linux-firmware-nvidia 20260309-1
#     Firmware files for Linux - Firmware for NVIDIA GPUs and SoCs
# local/nvidia-580xx-dkms 580.142-1
#     NVIDIA kernel modules - module sources (580xx)
# local/nvidia-580xx-utils 580.142-1
#     NVIDIA drivers utilities (580xx)
# local/nvidia-container-toolkit 1.19.0-1
#     NVIDIA container toolkit
# local/nvidia-prime 1.0-5
#     NVIDIA Prime Render Offload configuration and utilities
# local/nvidia-settings 590.48.01-1
#     Tool for configuring the NVIDIA graphics driver
# local/opencl-nvidia 590.48.01-4
#     OpenCL implemention for NVIDIA
yay -Qs blender
# local/blender 17:5.0.1-9
#     A fully integrated 3D graphics creation suite
# local/blender-4.2-bin 4.2.260319.12a2dfa84963-1
#     A fully integrated 3D graphics creation suite
# local/blender-4.2-bin-debug 4.2.260319.12a2dfa84963-1
#     Detached debugging symbols for blender-4.2-bin

 また、AUR にある CUDAの以下のバージョンを試したが、どれも正しく動かなかったし、現時点(2023/3/22)ではまだ動かす方法は見つかっていない。

  • 12.0
  • 12.2
  • 12.5
  • 12.8

環境

GNOME Settings のレポート

System Details Report

Report details

  • Date generated: 2026-03-22 09:23:39

Hardware Information:

  • Hardware Model: HP ProLiant DL60 Gen9
  • Memory: 88.0 GiB
  • Processor: Intel® Xeon® E5-2620 v4 × 32
  • Graphics: NVIDIA GeForce GTX 1080 Ti
  • Disk Capacity: 30.0 TB

Software Information:

  • Firmware Version: U15
  • OS Name: Arch Linux
  • OS Build: (null)
  • OS Type: 64-bit
  • GNOME Version: 49
  • Windowing System: Wayland
  • Kernel Version: Linux 6.19.8-arch1-1

具体的な対応内容

 今回、Arch Linux - blender 17:5.0.1-9 (x86_64) の Extra にある公式パッケージの利用は諦めて、手動で直接 Blender - The Free and Open Source 3D Creation Software — blender.org からダウンロードして使うことにした。

 ただ、いちいち展開したり自分でファイルを管理するのは、あとからぐちゃぐちゃになって収集がつかなくなると思われたため、以下のリソースを主に参考にしてPKGBUILD を自分で書き、パッケージマネージャに仕事させることにした。

Blender 公式からファイルを取得する

 Download — Blender にアクセスして、Linux 版のパッケージをダウンロードし展開せずにしておく。今回はダウンロードしたファイルは以下のように配置されている事を想定する。

pwd
# /home/userName/Downloads
ls -l blender*
# -rw-r--r--⠀userName⠀userName⠀44105692⠀Mar 22 09:12:37⠀⠀blender-5.1.0-linux-x64.tar.xz

ファイルを配置する

作業ディレクトリを作成する

mkdir /tmp/blenderInstall
cd /tmp/blenderInstall

ダウンロードしたファイルを配置する

cp /home/userName/Downloads/blender-5.1.0-linux-x64.tar.xz /tmp/blenderInstall/

PKGBUILD を配置する

# This is workaround for GTX1080Ti to avoid compile error due to cuda version mismatch.
pkgname=Blender-5.1.0-manual-install
pkgver=5.1.0
pkgrel=1
pkgdesc="This is workaround for Blender with GTX1080Ti to avoid compile error due to cuda version mismatch."
arch=('x86_64')
url="https://blender.org"
license=('GPL')
options=('!strip' '!debug')

depends=('blender')
optdepends=('cuda: Cycles renderer CUDA support'
            'intel-compute-runtime: Cycles renderer Intel OneAPI support'
	    	'level-zero-loader: Cycles renderer Intel OneAPI support'
	    	'intel-level-zero-raytracing-support: Intel OneAPI Raytracing Support'
            'libdecor: wayland support'
	    	'hip-runtime-amd: HIP renderer AMD support')

provides=('blender-manual-install')
conflicts=('blender-manual-install')

source=("./blender-5.1.0-linux-x64.tar.xz")
sha256sums=('SKIP')

package() {
	cd "$srcdir/blender-$pkgver-linux-x64"
	
	mkdir -p "${pkgdir}/opt/${pkgname}/"
	install -Dm755 {blender,blender-thumbnailer} "${pkgdir}/opt/${pkgname}/"
	install -Dm644 blender.desktop "${pkgdir}/usr/share/applications/${pkgname}.desktop"
	sed -i "s|Name=Blender|Name=Blender 5.1.0 (Manual Install)|g" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
	sed -i "s|Exec=blender %f|Exec=/opt/${pkgname}/blender-launcher %f|g" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
	
	cp -a -r "${pkgver:0:3}" lib "${pkgdir}/opt/${pkgname}/"
	pushd "${pkgdir}/opt/${pkgname}/lib"
	for file in *.so*;
	do
		chmod 755 "$file"
	done
	popd
	pushd "${pkgdir}/opt/${pkgname}/lib/mesa"
	for file in *.so*;
	do
		chmod 755 "$file"
	done
	popd

	install -Dm755 blender-launcher "${pkgdir}/opt/${pkgname}/blender-launcher"
	install -Dm755 blender-softwaregl "${pkgdir}/opt/${pkgname}/blender-softwaregl"
	install -Dm755 blender-system-info.sh "${pkgdir}/opt/${pkgname}/blender-system-info"
}

インストール

makepkg -si

動作の様子の例

ショートカットが登録されている様子
起動画面
Cycles レンダリングを CUDA でテスト
Nvidia-SMI の様子
CUDAが有効な様子

発生したエラーの詳細

 ここでは、CUDA 13.1 と CUDA 12.8 の動作の様子について示す。CUDA 13.1 については、GTX 1080Ti をサポートしない旨が表示され、CUDA 12.8 ではコンパイルエラーが起こっている。

CUDA 13.1

動画

ログ

エラーの詳細
blender
# Traceback (most recent call last):
#   File "/usr/share/blender/5.0/scripts/modules/addon_utils.py", line 362, in enable
#     raise RuntimeError("Extension {:s} is incompatible ({:s})".format(module_name, error))
# RuntimeError: Extension bl_ext.blender_org.mmd_tools is incompatible (This Blender version (5.0.1) must be less than the maximum version (5.0.0))
# 05:40.336  cycles           | ERROR CUDA version 13.1CUDA 10.1 to 12 are officially supported.
# nvcc fatal   : Unsupported gpu architecture 'sm_61'
# 05:40.342  cycles           | ERROR Failed to execute compilation command, see console for details.
# 05:40.342  cycles           | ERROR Refer to the Cycles GPU rendering documentation for possible solutions:
#                             | https://docs.blender.org/manual/en/latest/render/cycles/gpu_rendering.html
#                             | 
# 05:40.342  cycles           | ERROR Invalid handle in cuModuleGetGlobal_v2(&mem, &bytes, cuModule, "kernel_params") (/usr/src/debug/blender/blender/intern/cycles/device/cuda/device_impl.cpp:678)
# 05:40.342  cycles           | ERROR Invalid value in cuMemcpyHtoD_v2(mem + __builtin_offsetof (KernelParamsCUDA, data), host, size) (/usr/src/debug/blender/blender/intern/cycles/device/cuda/device_impl.cpp:687)

CUDA 12.8

動画

ログ

エラーの詳細
blender
# Traceback (most recent call last):
#   File "/usr/share/blender/5.0/scripts/modules/addon_utils.py", line 362, in enable
#     raise RuntimeError("Extension {:s} is incompatible ({:s})".format(module_name, error))
# RuntimeError: Extension bl_ext.blender_org.mmd_tools is incompatible (This Blender version (5.0.1) must be less than the maximum version (5.0.0))
# nvcc warning : Support for offline compilation for architectures prior to '<compute/sm/lto>_75' will be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
# /usr/include/c++/15.2.1/type_traits(555): error: type name is not allowed
#       : public __bool_constant<__is_pointer(_Tp)>
#                                             ^
# 
# /usr/include/c++/15.2.1/type_traits(555): error: identifier "__is_pointer" is undefined
#       : public __bool_constant<__is_pointer(_Tp)>
#                                ^
# 
# /usr/include/c++/15.2.1/type_traits(877): error: type name is not allowed
#       : public __bool_constant<__is_volatile(_Tp)>
#                                              ^
# 
# /usr/include/c++/15.2.1/type_traits(877): error: identifier "__is_volatile" is undefined
#       : public __bool_constant<__is_volatile(_Tp)>
#                                ^
# 
# /usr/include/c++/15.2.1/type_traits(1492): error: type name is not allowed
#       : public integral_constant<std::size_t, __array_rank(_Tp)> { };
#                                                            ^
# 
# /usr/include/c++/15.2.1/type_traits(1492): error: identifier "__array_rank" is undefined
#       : public integral_constant<std::size_t, __array_rank(_Tp)> { };
#                                               ^
# 
# /usr/include/c++/15.2.1/type_traits(1844): error: incomplete type "std::__cv_selector<std::__make_unsigned_selector<int, false, true>::__unsigned_type, false, <error-constant>>" (aka "std::__cv_selector<unsigned int, false, <error-constant>>") is not allowed
#         using __type = typename __match::__type;
#                                 ^
#           detected during:
#             instantiation of class "std::__match_cv_qualifiers<_Qualified, _Unqualified, _IsConst, _IsVol> [with _Qualified=int, _Unqualified=unsigned int, _IsConst=false, _IsVol=<error-constant>]" at line 1953
#             instantiation of class "std::__make_unsigned_selector<_Tp, false, true> [with _Tp=int]" at line 1964
# 
# /usr/include/c++/15.2.1/type_traits(1844): error: incomplete type "std::__cv_selector<std::__make_unsigned_selector<char16_t, false, true>::__unsigned_type, false, <error-constant>>" (aka "std::__cv_selector<unsigned short, false, <error-constant>>") is not allowed
#         using __type = typename __match::__type;
#                                 ^
#           detected during:
#             instantiation of class "std::__match_cv_qualifiers<_Qualified, _Unqualified, _IsConst, _IsVol> [with _Qualified=char16_t, _Unqualified=unsigned short, _IsConst=false, _IsVol=<error-constant>]" at line 1953
#             instantiation of class "std::__make_unsigned_selector<_Tp, false, true> [with _Tp=char16_t]" at line 1980
# 
# /usr/include/c++/15.2.1/type_traits(1844): error: incomplete type "std::__cv_selector<std::__make_unsigned_selector<int, false, true>::__unsigned_type, false, <error-constant>>" (aka "std::__cv_selector<unsigned int, false, <error-constant>>") is not allowed
#         using __type = typename __match::__type;
#                                 ^
#           detected during:
#             instantiation of class "std::__match_cv_qualifiers<_Qualified, _Unqualified, _IsConst, _IsVol> [with _Qualified=char32_t, _Unqualified=unsigned int, _IsConst=false, _IsVol=<error-constant>]" at line 1953
#             instantiation of class "std::__make_unsigned_selector<_Tp, false, true> [with _Tp=char32_t]" at line 1987
# 
# /usr/include/c++/15.2.1/type_traits(1844): error: incomplete type "std::__cv_selector<std::__make_unsigned_selector<int, true, false>::__unsigned_type, false, <error-constant>>" is not allowed
#         using __type = typename __match::__type;
#                                 ^
#           detected during:
#             instantiation of class "std::__match_cv_qualifiers<_Qualified, _Unqualified, _IsConst, _IsVol> [with _Qualified=int, _Unqualified=<error-type>, _IsConst=false, _IsVol=<error-constant>]" at line 1915
#             instantiation of class "std::__make_unsigned_selector<_Tp, true, false> [with _Tp=int]" at line 2082
#             instantiation of class "std::__make_signed_selector<_Tp, false, true> [with _Tp=int]" at line 2096
# 
# /usr/include/c++/15.2.1/type_traits(2085): error: incomplete type "std::__make_signed_selector<std::__make_signed_selector<int, false, true>::__unsigned_type, false, <error-constant>>" is not allowed
#         using __type = typename __make_signed_selector<__unsigned_type>::__type;
#                                 ^
#           detected during instantiation of class "std::__make_signed_selector<_Tp, false, true> [with _Tp=int]" at line 2096
# 
# /usr/include/c++/15.2.1/type_traits(1844): error: incomplete type "std::__cv_selector<std::__make_unsigned_selector<int, true, false>::__unsigned_type, false, <error-constant>>" is not allowed
#         using __type = typename __match::__type;
#                                 ^
#           detected during:
#             instantiation of class "std::__match_cv_qualifiers<_Qualified, _Unqualified, _IsConst, _IsVol> [with _Qualified=char16_t, _Unqualified=<error-type>, _IsConst=false, _IsVol=<error-constant>]" at line 1915
#             instantiation of class "std::__make_unsigned_selector<_Tp, true, false> [with _Tp=char16_t]" at line 2082
#             instantiation of class "std::__make_signed_selector<_Tp, false, true> [with _Tp=char16_t]" at line 2112
# 
# /usr/include/c++/15.2.1/type_traits(2085): error: incomplete type "std::__make_signed_selector<std::__make_signed_selector<int, false, true>::__unsigned_type, false, <error-constant>>" is not allowed
#         using __type = typename __make_signed_selector<__unsigned_type>::__type;
#                                 ^
#           detected during instantiation of class "std::__make_signed_selector<_Tp, false, true> [with _Tp=char16_t]" at line 2112
# 
# /usr/include/c++/15.2.1/type_traits(1844): error: incomplete type "std::__cv_selector<std::__make_unsigned_selector<int, true, false>::__unsigned_type, false, <error-constant>>" is not allowed
#         using __type = typename __match::__type;
#                                 ^
#           detected during:
#             instantiation of class "std::__match_cv_qualifiers<_Qualified, _Unqualified, _IsConst, _IsVol> [with _Qualified=char32_t, _Unqualified=<error-type>, _IsConst=false, _IsVol=<error-constant>]" at line 1915
#             instantiation of class "std::__make_unsigned_selector<_Tp, true, false> [with _Tp=char32_t]" at line 2082
#             instantiation of class "std::__make_signed_selector<_Tp, false, true> [with _Tp=char32_t]" at line 2119
# 
# /usr/include/c++/15.2.1/type_traits(2085): error: incomplete type "std::__make_signed_selector<std::__make_signed_selector<int, false, true>::__unsigned_type, false, <error-constant>>" is not allowed
#         using __type = typename __make_signed_selector<__unsigned_type>::__type;
#                                 ^
#           detected during instantiation of class "std::__make_signed_selector<_Tp, false, true> [with _Tp=char32_t]" at line 2119
# 
# /usr/include/c++/15.2.1/type_traits(3303): error: type name is not allowed
#       : public __bool_constant<__is_invocable(_Fn, _ArgTypes...)>
#                                               ^
# 
# /usr/include/c++/15.2.1/type_traits(3303): error: type name is not allowed
#       : public __bool_constant<__is_invocable(_Fn, _ArgTypes...)>
#                                                    ^
# 
# /usr/include/c++/15.2.1/type_traits(3333): error: type name is not allowed
#       : public __bool_constant<__is_nothrow_invocable(_Fn, _ArgTypes...)>
#                                                       ^
# 
# /usr/include/c++/15.2.1/type_traits(3333): error: type name is not allowed
#       : public __bool_constant<__is_nothrow_invocable(_Fn, _ArgTypes...)>
#                                                            ^
# 
# /usr/include/c++/15.2.1/type_traits(3409): error: type name is not allowed
#     inline constexpr bool is_pointer_v = __is_pointer(_Tp);
#                                                       ^
# 
# /usr/include/c++/15.2.1/type_traits(3522): error: type name is not allowed
#     inline constexpr bool is_volatile_v = __is_volatile(_Tp);
#                                                         ^
# 
# /usr/include/c++/15.2.1/type_traits(3664): error: type name is not allowed
#     inline constexpr size_t rank_v = __array_rank(_Tp);
#                                                   ^
# 
# /usr/include/bits/mathcalls.h(83): error: exception specification is incompatible with that of previous function "cospi" (declared at line 2601 of /opt/cuda/bin/../targets/x86_64-linux/include/crt/math_functions.h)
#    extern double cospi (double __x) noexcept (true); extern double __cospi (double __x) noexcept (true);
#                                     ^
# 
# /usr/include/bits/mathcalls.h(85): error: exception specification is incompatible with that of previous function "sinpi" (declared at line 2556 of /opt/cuda/bin/../targets/x86_64-linux/include/crt/math_functions.h)
#    extern double sinpi (double __x) noexcept (true); extern double __sinpi (double __x) noexcept (true);
#                                     ^
# 
# /usr/include/bits/mathcalls.h(206): error: exception specification is incompatible with that of previous function "rsqrt" (declared at line 597 of /opt/cuda/bin/../targets/x86_64-linux/include/crt/math_functions.h)
#    extern double rsqrt (double __x) noexcept (true); extern double __rsqrt (double __x) noexcept (true);
#                                     ^
# 
# /usr/include/bits/mathcalls.h(83): error: exception specification is incompatible with that of previous function "cospif" (declared at line 2623 of /opt/cuda/bin/../targets/x86_64-linux/include/crt/math_functions.h)
#    extern float cospif (float __x) noexcept (true); extern float __cospif (float __x) noexcept (true);
#                                    ^
# 
# /usr/include/bits/mathcalls.h(85): error: exception specification is incompatible with that of previous function "sinpif" (declared at line 2579 of /opt/cuda/bin/../targets/x86_64-linux/include/crt/math_functions.h)
#    extern float sinpif (float __x) noexcept (true); extern float __sinpif (float __x) noexcept (true);
#                                    ^
# 
# /usr/include/bits/mathcalls.h(206): error: exception specification is incompatible with that of previous function "rsqrtf" (declared at line 621 of /opt/cuda/bin/../targets/x86_64-linux/include/crt/math_functions.h)
#    extern float rsqrtf (float __x) noexcept (true); extern float __rsqrtf (float __x) noexcept (true);
#                                    ^
# 
# 28 errors detected in the compilation of "/usr/share/blender/5.0/scripts/addons_core/cycles/source/kernel/device/cuda/kernel.cu".
# 01:18.904  cycles           | ERROR Failed to execute compilation command, see console for details.
# 01:18.904  cycles           | ERROR Refer to the Cycles GPU rendering documentation for possible solutions:
#                             | https://docs.blender.org/manual/en/latest/render/cycles/gpu_rendering.html
#                             | 
# 01:18.904  cycles           | ERROR Invalid handle in cuModuleGetGlobal_v2(&mem, &bytes, cuModule, "kernel_params") (/usr/src/debug/blender/blender/intern/cycles/device/cuda/device_impl.cpp:678)
# 01:18.904  cycles           | ERROR Invalid value in cuMemcpyHtoD_v2(mem + __builtin_offsetof (KernelParamsCUDA, data), host, size) (/usr/src/debug/blender/blender/intern/cycles/device/cuda/device_impl.cpp:687)

関係ありそうな記事

参考にしたサイトとか