diff --git a/CMakeLists.txt b/CMakeLists.txt
index 378f757d2854c80a470b499e9bcf6d57410fc001..8da797ed155ea94675df58e803b0040b68e6a09d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -669,7 +669,7 @@ if(NOT APPLE AND NOT (WIN32 AND CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64"))
 
   option(WITH_CYCLES_CUDA_BINARIES "Build Cycles NVIDIA CUDA binaries" OFF)
   set(CYCLES_CUDA_BINARIES_ARCH
-    sm_30 sm_35 sm_37 sm_50 sm_52 sm_60 sm_61 sm_70 sm_75 sm_86 sm_89 compute_75
+    sm_30 sm_35 sm_37 sm_50 sm_52 sm_60 sm_61 sm_70 sm_75 sm_86 sm_89 sm_120 compute_75
     CACHE STRING "CUDA architectures to build binaries for"
   )
   option(WITH_CYCLES_CUDA_BUILD_SERIAL "\
diff --git a/build_files/config/pipeline_config.yaml b/build_files/config/pipeline_config.yaml
index e5f293e9da827d22c305d74fe2f2548024c1d526..c817aa94b9027435b211844313310fb7a32f227c 100644
--- a/build_files/config/pipeline_config.yaml
+++ b/build_files/config/pipeline_config.yaml
@@ -11,7 +11,7 @@ buildbot:
     cuda11:
         version: '11.4.1'
     cuda12:
-        version: '12.1.1'
+        version: '12.8.0'
     hip:
         version: '5.7.32000'
     hiprt:
diff --git a/intern/cycles/kernel/CMakeLists.txt b/intern/cycles/kernel/CMakeLists.txt
index 56fb1fafd989e7e44c584ab3a090b9b8e4d1e935..baff8ef004fb72cd7f9c06bbf193f764d63aab04 100644
--- a/intern/cycles/kernel/CMakeLists.txt
+++ b/intern/cycles/kernel/CMakeLists.txt
@@ -577,6 +577,14 @@ if(WITH_CYCLES_CUDA_BINARIES)
       else()
         message(STATUS "CUDA binaries for ${arch} require CUDA 11.1+, skipped.")
       endif()
+    elseif(${arch} MATCHES ".*_10." OR ${arch} MATCHES ".*_120")
+      if("${CUDA_VERSION}" GREATER_EQUAL 128) # Support for sm_100, sm_101, sm_120 was introduced in CUDA 12.8
+        set(cuda_nvcc_executable ${CUDA_NVCC_EXECUTABLE})
+        set(cuda_toolkit_root_dir ${CUDA_TOOLKIT_ROOT_DIR})
+        set(cuda_version ${CUDA_VERSION})
+      else()
+        message(STATUS "CUDA binaries for ${arch} require CUDA 12.8+, skipped.")
+      endif()
     else()
       set(cuda_nvcc_executable ${CUDA_NVCC_EXECUTABLE})
       set(cuda_toolkit_root_dir ${CUDA_TOOLKIT_ROOT_DIR})
diff --git a/intern/cycles/kernel/device/cuda/config.h b/intern/cycles/kernel/device/cuda/config.h
index 75edb808bcb830737d58ce36a23ab2d2fec72878..6506775cd9e5a33e0bd828e6a513f19dc5ec327d 100644
--- a/intern/cycles/kernel/device/cuda/config.h
+++ b/intern/cycles/kernel/device/cuda/config.h
@@ -62,8 +62,8 @@
 #    define GPU_KERNEL_MAX_REGISTERS 48
 #  endif
 
-/* 7.x, 8.x */
-#elif __CUDA_ARCH__ <= 899
+/* 7.x, 8.x, 12.x */
+#elif __CUDA_ARCH__ <= 1299
 #  define GPU_MULTIPRESSOR_MAX_REGISTERS 65536
 #  define GPU_MULTIPROCESSOR_MAX_BLOCKS 32
 #  define GPU_BLOCK_MAX_THREADS 1024