컴퓨터/노트북/인터넷
IT 컴퓨터 기기를 좋아하는 사람들의 모임방
단축키
Prev이전 문서
Next다음 문서
단축키
Prev이전 문서
Next다음 문서
앞으로 나올 CUDA 툴킷에서는 맥스웰, 파스칼, 볼타 같은 이전 세대 GPU를 지원하지 않습니다.
1. CUDA 12.9 릴리스 노트
NVIDIA® CUDA® 툴킷에 대한 릴리스 노트는 https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html 에서 온라인으로 확인할 수 있습니다 .
메모
릴리스 노트는 두 개의 주요 섹션으로 재구성되었습니다. 일반 CUDA 릴리스 노트와 12.x 릴리스에 대한 기록 정보를 포함하는 CUDA 라이브러리 릴리스 노트입니다.
1.1. CUDA 툴킷 주요 구성 요소 버전
- CUDA 구성 요소
-
CUDA 11부터 툴킷의 다양한 구성 요소가 독립적으로 버전이 지정됩니다.
CUDA 12.9의 경우 아래 표는 버전을 나타냅니다.
구성 요소 이름 |
버전 정보 |
지원되는 아키텍처 |
지원 플랫폼 |
|
---|---|---|---|---|
CUDA C++ 코어 컴퓨트 라이브러리 |
추력 |
2.8.0 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우 |
견습생 |
2.8.0 |
|||
libcu++ |
2.8.0 |
|||
협동조합 그룹 |
12.9.27 |
|||
CUDA 호환성 |
12.9.39767389 |
aarch64-jetson |
리눅스 |
|
CUDA 런타임(cudart) |
12.9.37 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
cuobjdump |
12.9.26 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우 |
|
컵티 |
19년 12월 9일 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
CUDA cuxxfilt(디매글러) |
19년 12월 9일 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우 |
|
CUDA 데모 스위트 |
19년 12월 9일 |
x86_64 |
리눅스, 윈도우 |
|
CUDA 문서 |
12.9.43 |
x86_64 |
리눅스, 윈도우 |
|
쿠다 GDB |
19년 12월 9일 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, WSL |
|
CUDA Nsight Eclipse 플러그인 |
19년 12월 9일 |
x86_64 |
리눅스 |
|
쿠다 NVCC |
12.9.41 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
CUDA nvdisasm |
19년 12월 9일 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우 |
|
CUDA NVML 헤더 |
12.9.40 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
CUDA nvprof |
19년 12월 9일 |
x86_64 |
리눅스, 윈도우 |
|
CUDA nvprune |
19년 12월 9일 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
CUDA NVRTC |
12.9.41 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
엔비티엑스 |
19년 12월 9일 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
쿠다 NVVP |
19년 12월 9일 |
x86_64 |
리눅스, 윈도우 |
|
CUDA 오픈CL |
19년 12월 9일 |
x86_64 |
리눅스, 윈도우 |
|
CUDA 프로파일러 API |
19년 12월 9일 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
CUDA 컴퓨트 살균 API |
12.9.27 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
쿠다 쿠블라스 |
12.9.0.13 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
cuDLA |
19년 12월 9일 |
aarch64-jetson |
리눅스 |
|
쿠다 cuFFT |
11.4.0.6 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
CUDA cuFile |
1.14.0.30 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스 |
|
쿠다 쿠란드 |
10.3.10.19 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
CUDA cuSOLVER |
11.7.4.40 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
쿠다 쿠스파스 |
12.5.9.5 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
쿠다 원자력 발전소 |
12.4.0.27 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
CUDA nvFatbin |
19년 12월 9일 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
CUDA nvJitLink |
12.9.41 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
CUDA nvJPEG |
12.4.0.16 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL |
|
Nsight 컴퓨팅 |
2025.2.0.11 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스, 윈도우, WSL(윈도우 11) |
|
엔사이트 시스템즈 |
2025.1.3.140 |
x86_64, arm64-sbsa |
리눅스, 윈도우, WSL |
|
Nsight Visual Studio 에디션(VSE) |
2025.2.0.25082 |
x86_64(윈도우) |
윈도우 |
|
엔비디아_FS 1 |
2.25.6 |
x86_64, arm64-sbsa, aarch64-jetson |
리눅스 |
|
Visual Studio 통합 |
19년 12월 9일 |
x86_64(윈도우) |
윈도우 |
|
NVIDIA Linux 드라이버 |
575.51.03 |
x86_64, arm64-sbsa |
리눅스 |
|
NVIDIA Windows 드라이버 |
576.02 |
x86_64(윈도우) |
윈도우, WSL |
- CUDA 드라이버
-
CUDA 애플리케이션을 실행하려면 시스템에 최소 하나 이상의 CUDA 지원 GPU와 CUDA 툴킷과 호환되는 드라이버가 필요합니다. 표 3을 참조하십시오 . CUDA 지원 GPU 제품에 대한 자세한 내용은 https://developer.nvidia.com/cuda-gpus를 방문하십시오 .
CUDA 툴킷의 각 릴리스에는 최소 버전의 CUDA 드라이버가 필요합니다. CUDA 드라이버는 이전 버전과 호환되므로 특정 버전의 CUDA로 컴파일된 애플리케이션은 이후 드라이버 릴리스에서도 계속 작동합니다.
호환성에 대한 자세한 내용은 https://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html#cuda-compatibility-and-upgrades 에서 확인할 수 있습니다 .
참고 : CUDA 11.0부터 툴킷 구성 요소는 개별적으로 버전이 지정되고, 툴킷 자체의 버전은 아래 표에 표시된 대로 지정됩니다.
CUDA 부 버전 호환성에 필요한 최소 드라이버 버전은 아래와 같습니다. CUDA 부 버전 호환성은 https://docs.nvidia.com/deploy/cuda-compatibility/index.html 에 자세히 설명되어 있습니다.
CUDA 툴킷 |
CUDA 마이너 버전 호환성을 위한 최소 필수 드라이버 버전* |
|
---|---|---|
Linux x86_64 드라이버 버전 |
Windows x86_64 드라이버 버전 |
|
쿠다 12.x |
>=525.60.13 |
>=528.33 |
쿠다 11.8.x 쿠다 11.7.x 쿠다 11.6.x 쿠다 11.5.x 쿠다 11.4.x 쿠다 11.3.x 쿠다 11.2.x 쿠다 11.1.x |
>=450.80.02 |
>=452.39 |
쿠다 11.0(11.0.3) |
>=450.36.06** |
>=451.22** |
* 호환 모드에서는 툴킷 드라이버 버전과 다른 최소 요구 버전을 사용할 수 있습니다. 자세한 내용은 CUDA 호환성 가이드를 읽어보세요.
** CUDA 11.0은 이전 드라이버 버전과 함께 출시되었지만 Tesla Recommended Drivers 450.80.02(Linux) / 452.39(Windows)로 업그레이드하면 CUDA 11.x 툴킷 제품군 전체에서 하위 버전 호환성이 가능해집니다.
각 CUDA 툴킷 릴리스에 포함된 개발 NVIDIA GPU 드라이버의 버전은 아래와 같습니다.
CUDA 툴킷 |
툴킷 드라이버 버전 |
|
---|---|---|
Linux x86_64 드라이버 버전 |
Windows x86_64 드라이버 버전 |
|
쿠다 12.9 GA |
>=575.51.03 |
>=576.02 |
CUDA 12.8 업데이트 1 |
>=570.124.06 |
>=572.61 |
쿠다 12.8 GA |
>=570.26 |
>=570.65 |
CUDA 12.6 업데이트 3 |
>=560.35.05 |
>=561.17 |
CUDA 12.6 업데이트 2 |
>=560.35.03 |
>=560.94 |
CUDA 12.6 업데이트 1 |
>=560.35.03 |
>=560.94 |
쿠다 12.6 GA |
>=560.28.03 |
>=560.76 |
CUDA 12.5 업데이트 1 |
>=555.42.06 |
>=555.85 |
쿠다 12.5 GA |
>=555.42.02 |
>=555.85 |
CUDA 12.4 업데이트 1 |
>=550.54.15 |
>=551.78 |
쿠다 12.4 GA |
>=550.54.14 |
>=551.61 |
CUDA 12.3 업데이트 1 |
>=545.23.08 |
>=546.12 |
쿠다 12.3 GA |
>=545.23.06 |
>=545.84 |
CUDA 12.2 업데이트 2 |
>=535.104.05 |
>=537.13 |
CUDA 12.2 업데이트 1 |
>=535.86.09 |
>=536.67 |
쿠다 12.2 GA |
>=535.54.03 |
>=536.25 |
CUDA 12.1 업데이트 1 |
>=530.30.02 |
>=531.14 |
쿠다 12.1 GA |
>=530.30.02 |
>=531.14 |
CUDA 12.0 업데이트 1 |
>=525.85.12 |
>=528.33 |
쿠다 12.0 GA |
>=525.60.13 |
>=527.41 |
쿠다 11.8 GA |
>=520.61.05 |
>=520.06 |
CUDA 11.7 업데이트 1 |
>=515.48.07 |
>=516.31 |
쿠다 11.7 GA |
>=515.43.04 |
>=516.01 |
CUDA 11.6 업데이트 2 |
>=510.47.03 |
>=511.65 |
CUDA 11.6 업데이트 1 |
>=510.47.03 |
>=511.65 |
쿠다 11.6 GA |
>=510.39.01 |
>=511.23 |
CUDA 11.5 업데이트 2 |
>=495.29.05 |
>=496.13 |
CUDA 11.5 업데이트 1 |
>=495.29.05 |
>=496.13 |
쿠다 11.5 GA |
>=495.29.05 |
>=496.04 |
CUDA 11.4 업데이트 4 |
>=470.82.01 |
>=472.50 |
CUDA 11.4 업데이트 3 |
>=470.82.01 |
>=472.50 |
CUDA 11.4 업데이트 2 |
>=470.57.02 |
>=471.41 |
CUDA 11.4 업데이트 1 |
>=470.57.02 |
>=471.41 |
쿠다 11.4.0 GA |
>=470.42.01 |
>=471.11 |
CUDA 11.3.1 업데이트 1 |
>=465.19.01 |
>=465.89 |
쿠다 11.3.0 GA |
>=465.19.01 |
>=465.89 |
CUDA 11.2.2 업데이트 2 |
>=460.32.03 |
>=461.33 |
CUDA 11.2.1 업데이트 1 |
>=460.32.03 |
>=461.09 |
쿠다 11.2.0 GA |
>=460.27.03 |
>=460.82 |
CUDA 11.1.1 업데이트 1 |
>=455.32 |
>=456.81 |
쿠다 11.1 GA |
>=455.23 |
>=456.38 |
CUDA 11.0.3 업데이트 1 |
>= 450.51.06 |
>= 451.82 |
쿠다 11.0.2 GA |
>= 450.51.05 |
>= 451.48 |
쿠다 11.0.1 RC |
>= 450.36.06 |
>= 451.22 |
쿠다 10.2.89 |
>= 440.33 |
>= 441.22 |
CUDA 10.1(10.1.105 일반 릴리스 및 업데이트) |
>= 418.39 |
>= 418.96 |
쿠다 10.0.130 |
>= 410.48 |
>= 411.31 |
CUDA 9.2(9.2.148 업데이트 1) |
>= 396.37 |
>= 398.26 |
CUDA 9.2(9.2.88) |
>= 396.26 |
>= 397.44 |
CUDA 9.1(9.1.85) |
>= 390.46 |
>= 391.29 |
CUDA 9.0(9.0.76) |
>= 384.81 |
>= 385.54 |
CUDA 8.0(8.0.61 GA2) |
>= 375.26 |
>= 376.51 |
쿠다 8.0(8.0.44) |
>= 367.48 |
>= 369.30 |
쿠다 7.5(7.5.16) |
>= 352.31 |
>= 353.66 |
쿠다 7.0(7.0.28) |
>= 346.46 |
>= 347.62 |
편의를 위해 NVIDIA 드라이버는 CUDA 툴킷 설치의 일부로 설치됩니다. 이 드라이버는 개발용이며 Tesla GPU를 사용하는 프로덕션 환경에서는 권장하지 않습니다.
Tesla GPU를 사용하여 프로덕션 환경에서 CUDA 애플리케이션을 실행하려면 https://www.nvidia.com/drivers 에 있는 NVIDIA 드라이버 다운로드 사이트에서 Tesla GPU용 최신 드라이버를 다운로드하는 것이 좋습니다 .
CUDA 툴킷을 설치하는 동안 Windows(대화형 또는 자동 설치 사용 시) 또는 Linux(메타 패키지 사용 시)에서는 NVIDIA 드라이버 설치를 건너뛸 수 있습니다.
Windows에서 설치 프로세스를 사용자 지정하는 방법에 대한 자세한 내용은 https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html#install-cuda-software를 참조하세요 .
Linux의 메타 패키지에 대한 자세한 내용은 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#package-manager-metas를 참조하세요 .
1.2. 새로운 기능
1.2.1. CUDA 일반
MPS 클라이언트 종료가 이제 Tegra 플랫폼에서 지원됩니다(L4T 사용자 - JetPack 7.0 이상부터). 자세한 내용은 여기에서 확인할 수 있습니다 .
CIG(그래픽의 확장 CUDA) 모드는 이제 Vulkan을 지원하여 기존의 DirectX 전용 구현을 넘어 확장되었습니다.
WDDM 및 MCDM 모드에서 드라이버를 사용하면 Windows에서 CPU NUMA 할당을 지원하여
cuMemCreate
이전 에는 Linux에서만 가능했던 기능을 확장했습니다.cuMemAllocAsync
CUDA 그래프 기능이 향상되어 자식 그래프에 메모리 노드를 포함할 수 있게 되었습니다.
CUDA Toolkit 12.9는 SM 아키텍처 10.3(
sm_103
,sm_103f
,sm_103a
) 및 12.1(sm_121
)에 대한 컴파일러 타겟 지원을 추가하여 각 변형에 대한 특정 최적화를 통해 최신 GPU 아키텍처에 대한 개발을 가능하게 합니다.CUDA 툴킷 12.9는 새로운 대상 아키텍처 클래스인 제품군별 아키텍처에 대한 컴파일러 지원을 도입했습니다. 자세한 내용은 NVIDIA 블로그: 제품군별 아키텍처 기능에서 확인하세요.
NVML 및 nvidia-smi에 대한 다양한 개선 사항:
다음과 같은 이유로 제한 시간에 대한 카운터(마이크로초)가 추가되었습니다.
nvmlClocksEventReasonGpuIdle
nvmlClocksEventReasonApplicationsClocksSetting
nvmlClocksEventReasonSwPowerCap
nvmlClocksThrottleReasonHwSlowdown
nvmlClocksEventReasonSyncBoost
nvmlClocksEventReasonSwThermalSlowdown
nvmlClocksThrottleReasonHwThermalSlowdown
nvmlClocksThrottleReasonHwPowerBrakeSlowdown
nvmlClocksEventReasonDisplayClockSetting
CUDA와 NVML 간 장치 식별의 일관성이 향상되었습니다.
NVML 칩 간(C2C) 원격 측정 API가 추가되었습니다.
CTXSW 메트릭 추가됨
GPU 평균 전력 카운터 구현
PCIe 바인딩/바인딩 해제 이벤트가 추가되었습니다.
1.2.2. CUDA 컴파일러
-
PTX 변경 사항에 대한 자세한 내용은 https://docs.nvidia.com/cuda/parallel-thread-execution/#ptx-isa-version-8-8을 참조하세요 .
-
--Ofast-compile=<level>
nvcc, nvlink, nvrtc, ptxas에서 지원되는 새로운 컴파일러 옵션이 추가되었습니다 . 이 옵션은 다양한 수준의 최적화보다 빠른 컴파일을 우선시하여 개발 주기를 단축하는 데 도움이 됩니다. 자세한 내용은 빠른 컴파일 관련 문서를 참조하세요. -
nvcc 및 nvrtc에서 지원되는 새로운 컴파일러 옵션이 추가되었습니다
--frandom-seed=<seed>
. 사용자가 지정한 난수 시드는 심볼 이름과 변수 이름 생성에 사용되는 난수를 대체하는 데 사용됩니다. 이 옵션은 결정적으로 동일한 ptx 및 객체 파일을 생성하는 데 사용할 수 있습니다. 입력 값이 유효한 숫자(10진수, 8진수 또는 16진수)이면 난수 시드로 직접 사용됩니다. 그렇지 않으면 전달된 문자열의 CRC 값이 대신 사용됩니다. 호스트 컴파일러가 GCC 또는 Clang인 경우, NVCC는 -frandom-seed 옵션도 지원하므로 해당 옵션과 사용자가 지정한 값을 호스트 컴파일러에 전달합니다. 사용자는 파일마다 다른 시드를 할당해야 합니다.
1.2.3. CUDA 개발자 도구
-
nvprof 및 Visual Profiler의 변경 사항은 변경 로그를 참조하세요 .
-
Nsight Systems의 새로운 기능, 개선 사항 및 버그 수정 사항은 변경 로그를 참조하세요 .
-
Nsight Visual Studio Edition의 새로운 기능, 개선 사항 및 버그 수정 사항은 변경 로그를 참조하세요 .
-
CUPTI의 새로운 기능, 개선 사항 및 버그 수정 사항은 변경 로그에서 확인하세요 .
-
Nsight Compute의 새로운 기능, 개선 사항 및 버그 수정 사항은 변경 로그를 참조하세요 .
-
Compute Sanitizer의 새로운 기능, 개선 사항 및 버그 수정 사항은 변경 로그에서 확인하세요 .
-
CUDA-GDB의 새로운 기능, 개선 사항 및 버그 수정 사항은 변경 로그를 참조하세요 .
1.3. 해결된 문제
1.3.1. CUDA 컴파일러
-
클래스 템플릿 인수로 사용된 람다 표현식이 함수 템플릿 내부에서 호출될 때 발생하는 세그먼테이션 오류가 해결되었습니다. [ 4610125 ]
-
보호된 생성자를 상속할 때 발생하는 NVCC 내부 어설션이 해결되었습니다. [ 4840916 ]
-
람다의 C++20 템플릿 매개변수 목록과 새로운 자동 구문으로 인해 nvcc가 실패하는 문제가 해결되었습니다. [ 4843349, 4843351 ]
-
템플릿 람다에서 constexpr(concept) 사용과 관련된 잘못된 C++20 문제가 해결되었습니다. [ 4843720 ]
-
C++20과 함께 MSVC를 사용할 때 CUDA 12.6.1에서 발생하는 템플릿 컴파일 오류가 해결되었습니다. [ 4871089 ]
-
C++ 코드에서 잘못된 초기화로 인한 NVCC 문제가 해결되었습니다 . [ 3885996 ]
std::vector of std::any
1.4. 알려진 문제
1.4.1. CUDA 컴파일러
-
이번 릴리스에서는 유사 아키텍처 간의 호환성을 보장하는 새로운 메커니즘이 도입되었습니다( 패밀리별 명령어에 대한 자세한 내용은 CUDA 프로그래밍 가이드를 참조하십시오 ). 이 초기 릴리스에서는 일부 코드 경로에서 예상보다 긴 링크 및 로딩 시간이 발생할 수 있습니다. 이러한 오버헤드는 향후 소프트웨어 릴리스에서 줄어들 예정입니다.
-
CUDA 12.8부터 Ampere 스타일 MMA(예:
mma.m16n8k16
FP16)를 사용하는 커널, 특히 MMA 형태가 16x8x128인 커널에서 컴파일 오류가 발생하는 문제가 발견되었습니다. 이는 M, N, K 차원 중 어느 하나라도 16으로 나누어 떨어지지 않는 GEMM 연산을 수행할 때 fp8_e5m2, fp8_e4m3, fp16, bf16, int8 등의 정밀도에 영향을 미칩니다. 잘못 컴파일된 코드는SM80
,SM90
, 및SM100
아키텍처에서 "잘못된 메모리 액세스"와 같은 런타임 오류를 유발할 수 있습니다. 해결 방법: 이 문제를 방지하려면 플래그를 사용하여 컴파일하십시오 . 향후 릴리스에서 이 문제를 해결하기 위해 적극적으로 노력하고 있습니다.-Xptxas -O0
1.5. 더 이상 사용되지 않거나 삭제된 기능
1.5.1. CUDA 일반
-
NVTX v2는 이전에 지원 중단된 후 CUDA 툴킷에서 제거되었습니다. 툴킷에 포함된 코드를 에서 로 변경하여 NVTX v3으로 마이그레이션하세요 . 최신 NVTX 버전과 확장 기능은 여기에서 확인할 수 있습니다 .
#include <nvtoolsext.h>
#include "nvtx3/nvtoolsext.h"
1.5.2. 더 이상 사용되지 않는 아키텍처
-
Maxwell, Pascal, Volta 아키텍처는 이제 모든 기능을 갖추고 있으며 추가 개선 계획은 없습니다. CUDA Toolkit 12.x 시리즈는 이러한 아키텍처용 애플리케이션 빌드를 계속 지원하지만, 오프라인 컴파일 및 라이브러리 지원은 다음 주요 CUDA Toolkit 버전 릴리스에서 제거될 예정입니다. 향후 툴킷은 Maxwell, Pascal, Volta GPU를 지원하지 않으므로 사용자는 최신 아키텍처로의 마이그레이션을 계획해야 합니다.
1.5.3. 더 이상 지원되지 않거나 삭제된 운영 체제
-
CUDA Toolkit 12.9는 Ubuntu 20.04에 대한 공식 지원을 제공하는 마지막 CUDA 릴리스가 될 것입니다.
1.5.4. 더 이상 사용되지 않는 CUDA 툴체인
-
ICC 2021.7 호스트 컴파일러에 대한 지원은 릴리스 12.9에서 더 이상 제공되지 않으며 향후 릴리스에서 제거될 예정입니다.
2. CUDA 라이브러리
이 섹션에서는 12.x 릴리스에 대한 CUDA 라이브러리 릴리스 노트를 다룹니다.
-
CUDA 수학 라이브러리 툴체인은 C++11 기능을 사용하며, 호스트에는 C++11 호환 표준 라이브러리(libstdc++ >= 20150422)가 필요합니다.
2.1. cuBLAS 라이브러리
2.1.1. cuBLAS: 릴리스 12.9
-
새로운 기능
-
cuBLASLt API 내에서 행렬 곱셈 연산에 대한 독립 배치 포인터 지원을 도입했습니다. 이전에는 cuBLAS gemmEx API에서만 제공되었던 이 기능을 통해 이제 저정밀도 데이터 유형에 대한 포인터 배열 배치 지원이 가능해졌습니다. 현재 융합 에필로그는 제한적으로 지원됩니다.
-
sm_90
Hopper( )에 새로운 스케일링 모드(채널/행당 외부 벡터, 128개 요소당, 128x128 블록당)에 대한 지원이 추가되었습니다 . 현재 융합된 에필로그는 제한적으로 지원됩니다. -
BF16x9 알고리즘을 기반으로 에뮬레이션된 FP32를 사용하여 FP32 행렬 곱셈의 연산 중심 인스턴스에서 최대 3배의 속도 향상과 에너지 효율 개선을 구현했습니다. 이 기능은 일부 Blackwell GPU에서 사용할 수 있습니다. 자세한 내용은 여기를 클릭하세요 . FP32 에뮬레이션을 활성화하려면 CUDA 라이브러리 샘플을 참조 하세요. 숫자가 아닌 값(NaN, Inf 등)은 상호 교환 가능한 오류 표시기로 처리됩니다.
-
-
알려진 문제
-
cublasLtMatmul
ReLU 에필로그에 대해 사용자 지정 Aux 데이터 유형을 무시하고 비트마스크를 기본적으로 사용합니다. 사용자가 ReLU 에필로그에 잘못된 Aux 데이터 유형을 지정한 경우 오류를 반환하는 것이 올바른 동작입니다. [ CUB-7984 ]
-
-
사용 중단
-
향후 릴리스에서는 cuBLAS가 작업 공간 메모리에 대해 256바이트 정렬을 적용할 예정입니다.
-
향후 릴리스에서는
CUBLAS_STATUS_NOT_SUPPORTED
다음 설명자 속성이 설정되어 있지만 해당 스케일이 지원되지 않는 경우 cuBLAS가 반환됩니다.-
CUBLASLT_MATMUL_DESC_A_SCALE_POINTER
-
CUBLASLT_MATMUL_DESC_B_SCALE_POINTER
-
CUBLASLT_MATMUL_DESC_D_SCALE_POINTER
-
CUBLASLT_MATMUL_DESC_D_OUT_SCALE_POINTER
-
CUBLASLT_MATMUL_DESC_EPILOGUE_AUX_SCALE_POINTER
이러한 동작은 좁은 정밀도가 아닌 matmul에 이미 적용되어 있으며, 좁은 정밀도가 아닌 텐서에 스케일이 설정된 경우 곧 좁은 정밀도 matmul에도 적용될 예정입니다.
-
-
NVIDIA 개발자 포럼 에 게시 하거나 다음 주소로 이메일을 보내서 예정된 지원 중단에 대한 피드백을 공유하세요
Math-Libs-Feedback@nvidia.com
.
-
2.1.2. cuBLAS: 릴리스 12.8
-
새로운 기능
-
NVIDIA Blackwell GPU 아키텍처에 대한 지원이 추가되었습니다.
-
컴퓨팅 성능 10.0(Blackwell) 이상에서 마이크로 스케일 4비트 및 8비트 부동 소수점 혼합 정밀도 텐서 코어 가속 행렬 곱셈을 지원하도록 cuBLASLt API를 확장했습니다. 확장 기능은 다음과 같습니다.
-
CUDA_R_4F_E2M1:
CUDA_R_UE4M3
스케일 및 16개 요소 스케일링 블록과의 통합. -
CUDA_R_8F 변형:
CUDA_R_UE8
스케일 및 32개 요소 스케일링 블록과의 호환성. -
-
스칼라 대신 스케일링 인자 텐서를 사용한 블록 스케일링 사용 사례 지원.
-
출력이 4비트 또는 8비트 부동 소수점 데이터 유형인 경우 출력 텐서에 대한 스케일링 요소를 동적으로 계산하는 기능입니다.
-
-
-
Windows x64에서 NVIDIA Ampere GPU 아키텍처 및 Blackwell GeForce급 GPU를 위한 CUDA in Graphics(CIG)에 대한 초기 지원이 도입되었습니다. 이제 CIG 컨텍스트가 자동으로 감지되며, cuBLAS는 CIG 공유 메모리 사용량 제한을 준수하는 커널을 선택합니다.
-
정렬되지 않은 INT8 matmul에 대해 모든 Hopper GPU의 성능이 향상되었습니다.
-
-
해결된 문제
-
cublasLtMatmul
에필로그 와 함께 사용하면CUBLASLT_EPILOGUE_BGRAD{A,B}
출력 행렬이CUBLASLT_ORDER_ROW
레이아웃에 포함될 수 있어 바이어스 그래디언트가 잘못 계산되었습니다. 이제CUBLASLT_EPILOGUE_BGRAD{A,B}
에필로그를 사용할 때는 이 레이아웃이 허용되지 않습니다. [ 4910924 ]
-
-
사용 중단
-
출력 행렬의 행( ) 또는 열( )에 따른 원자 동기화를 위한 실험적 기능이 이제 더 이상 지원되지 않습니다. 기능 구현은 여전히 사용 가능하지만 성능이 좋지 않아 향후 릴리스에서 제거될 예정입니다.
CUBLASLT_MATMUL_DESC_ATOMIC_SYNC_NUM_CHUNKS_D_ROWS
CUBLASLT_MATMUL_DESC_ATOMIC_SYNC_NUM_CHUNKS_D_COLS
-
2.1.3. cuBLAS: 릴리스 12.6 업데이트 2
-
새로운 기능
-
모든 Hopper GPU에서 FP8 , FP16 및 BF16 matmuls의 전반적인 성능이 향상되었습니다. 이 개선 사항
CUBLASLT_EPILOGUE_BIAS
에는 다음 융합 에필로그도 포함 됩니다 .CUBLASLT_EPILOGUE_RELU
CUBLASLT_EPILOGUE_RELU_BIAS
CUBLASLT_EPILOGUE_RELU_AUX
CUBLASLT_EPILOGUE_RELU_AUX_BIAS
CUBLASLT_EPILOGUE_GELU
CUBLASLT_EPILOGUE_GELU_BIAS
-
-
알려진 문제
-
다중 컨텍스트 시나리오에서 cuBLAS는 버전 <535.91의 R535 드라이버에서 중단될 수 있습니다. [ CUB-7024 ]
-
FP64 GEMM의 경우 Hopper GPU에서 성능이 최적화되지 않을 수 있습니다. 이 문제를 해결하는 한 가지 방법은 조건부로 스위즐링을
cublasLtMatmulAlgoGetHeuristic
활성화하는 것입니다. 이를 위해 사용자는 를 통해 반환된 알고리즘을 사용하여 를 호출하여 스위즐링을 활성화할 수 있는지 쿼리cublasLtMatmulAlgoCapGetAttribute
할 수 있습니다. 스위즐링이 지원되는 경우 를 호출 하여CUBLASLT_ALGO_CAP_CTA_SWIZZLING_SUPPORT
스위즐링을 활성화할 수 있습니다 . [ 4872420 ]cublasLtMatmulAlgoConfigSetAttribute
CUBLASLT_ALGO_CONFIG_CTA_SWIZZLING
-
-
해결된 문제
-
cublasLtMatmul
이러한 데이터 유형이 cublasLtMatmulDescAttributes_t <https://docs.nvidia.com/cuda/cublas/#cublasltmatmuldescattributes-t>__ 에 문서화된 제한 사항과 일치하지 않는 경우 FP8 matmul 작업에 대해 사용자가 지정한 Bias 또는 Aux 데이터 유형(CUBLASLT_MATMUL_DESC_BIAS_DATA_TYPE
및 )을 무시할 수 있습니다 . [ 44750343, 4801528 ]CUBLASLT_MATMUL_DESC_EPILOGUE_AUX_DATA_TYPE
-
이 환경 변수를 로 설정하면
CUDA_MODULE_LOADING
PTXEAGER
커널의 JIT 컴파일로 인해 Hopper GPU에서 라이브러리 로드 시간이 길어질 수 있습니다. 이 문제는 이 환경 변수를 로 설정하면 완화할 수 있습니다LAZY
. [ 4720601 ] -
cublasLtMatmul
INT8 입력, INT32 누적, INT8 출력 및 FP32 스케일링 요인이splitk
감소를 사용했을 때 수치적 부정확성이 발생할 수 있습니다. [ 4751576 ]
-
2.1.4. cuBLAS: 릴리스 12.6 업데이트 1
-
알려진 문제
-
cublasLtMatmul
이러한 데이터 유형이 cublasLtMatmulDescAttributes_t 의 문서화된 제한 사항과 일치하지 않는 경우 FP8 matmul 작업에 대해 사용자가 지정한 Bias 또는 Aux 데이터 유형(CUBLASLT_MATMUL_DESC_BIAS_DATA_TYPE
및 )을 무시할 수 있습니다 . [ 4750343 ]CUBLASLT_MATMUL_DESC_EPILOGUE_AUX_DATA_TYPE
-
이 환경 변수를 로 설정하면
CUDA_MODULE_LOADING
PTXEAGER
커널의 JIT 컴파일로 인해 Hopper GPU에서 라이브러리 로드 시간이 길어질 수 있습니다. 이 문제는 이 환경 변수를 로 설정하면 완화할 수 있습니다LAZY
. [ 4720601 ] -
cublasLtMatmul
INT8 입력, INT32 누적, INT8 출력 및 FP32 스케일링 계수를 사용하는 경우splitk
감소를 사용할 때 정확도 문제가 발생할 수 있습니다. 이 문제를 해결하려면 를 사용하여cublasLtMatmulAlgoConfigSetAttribute
감소 체계를 '없음'으로 설정하고splitk
값을 1로 설정할 수 있습니다. [ 4751576 ]
-
2.1.5. cuBLAS: 릴리스 12.6
-
알려진 문제
-
INT8 입력, INT8 출력, 그리고 FP32 스케일링 인자를 사용하는 행렬 곱셈과 에필로그를 계산할 때, 두 번째 커널을 사용하여 에필로그를 계산할 경우 수치 오류가 발생할 수 있습니다. 이는 첫 번째 GEMM 커널이 FP32의 중간 결과를 INT8로 변환하여 이후 에필로그 커널이 사용할 수 있도록 저장하기 때문에 발생합니다. 에필로그 이전에 값이 INT8 범위를 벗어나고 에필로그를 통해 INT8 범위에 포함되는 경우, 수치 오류가 발생합니다. 이 문제는 CUDA 12 이전부터 존재했으며, 알려진 해결 방법은 없습니다. [ CUB-6831 ]
-
cublasLtMatmul
이러한 데이터 유형이 cublasLtMatmulDescAttributes_t 의 문서화된 제한 사항과 일치하지 않는 경우 FP8 matmul 작업에 대해 사용자가 지정한 Bias 또는 Aux 데이터 유형(CUBLASLT_MATMUL_DESC_BIAS_DATA_TYPE
및 )을 무시할 수 있습니다 . [ 4750343 ]CUBLASLT_MATMUL_DESC_EPILOGUE_AUX_DATA_TYPE
-
-
해결된 문제
-
cublasLtMatmul
행렬의 데이터 유형이A
다르고B
(예:A
isCUDA_R_8F_E4M3
및B
isCUDA_R_8F_E5M2
) 행렬D
레이아웃이 FP8인 경우 잘못된 결과가 생성되었습니다CUBLASLT_ORDER_ROW
. [ 4640468 ] -
cublasLt
일부 경우A
,B
, 및C
가 유형CUDA_R_8I
이고 컴퓨팅 유형이 .인 경우 Hopper GPU에서 지원되지 않는 것으로 반환될 수 있습니다CUBLAS_COMPUTE_32I
. [ 4381102 ] -
K
GEMM을 0과 동일하게 실행할 때 cuBLAS가 부동 소수점 예외를 생성할 수 있습니다. [ 4614629 ]
-
2.1.6. cuBLAS: 릴리스 12.5 업데이트 1
-
새로운 기능
-
특히 Hopper GPU에서 작은 배치 크기에 맞춰 대규모 언어 모델을 대상으로 행렬 곱셈의 성능을 개선했습니다.
-
-
알려진 문제
-
Hopper GPU에서 스트라이드 배치의 경우, ReLU 또는 GeLU가 없는 바이어스 에필로그가 지원되지 않을 수 있습니다. 이 문제를 해결하려면 배칭을 수동으로 구현해야 합니다. 이 문제는 향후 릴리스에서 수정될 예정입니다.
-
cublasGemmGroupedBatchedEx
CPU 오버헤드가 큽니다cublas<t>gemmGroupedBatched
. 이 문제는 다음 릴리스에서 해결될 예정입니다.
-
-
해결된 문제
-
드물지만 Hopper GPU에서 GEMM과 동시에 SYMM/HEMM을 실행하면 호스트 코드에서 경쟁 조건이 발생하여 불법 메모리 액세스 CUDA 오류가 발생할 수 있습니다. [ 4403010 ]
-
cublasLtMatmul
다음 조건에서 Pascal GPU에서 불법 명령어 CUDA 오류가 발생할 수 있습니다. 배치가 1보다 크고 베타가 0이 아니며 계산이 제자리에 없는 경우(C != D). [ 4566993 ]
-
2.1.7. cuBLAS: 릴리스 12.5
-
새로운 기능
-
cuBLAS는 혼합 정밀도 그룹화된 배치 GEMM을 지원하는 실험적 API를 추가합니다. 이를 통해 FP32 컴퓨팅 유형을 사용하는 FP16 또는 BF16 입출력을 갖는 그룹화된 배치 GEMM을 사용할 수 있습니다. 자세한 내용은 cublasGemmGroupedBatchedEx를 참조하세요.
-
-
알려진 문제
-
cublasLtMatmul
각 행렬의 요소가 FP8 유형이 아닌 경우 해당 행렬 에CUBLASLT_MATMUL_DESC_D_SCALE_POINTER
대한 입력을 무시합니다 .CUBLASLT_MATMUL_DESC_EPILOGUE_AUX_SCALE_POINTER
-
-
해결된 문제
-
cublasLtMatmul
제공된 스케일 유형과 설명서에 암시된 내용 사이의 불일치를 무시하고 후자를 가정했습니다. 예를 들어,cublasLtMatmul
스케일 유형이 FP32이고 다른 모든 유형이 FP16인 지원되지 않는 구성은 스케일 유형이 FP16이라는 암묵적인 가정 하에 실행되어 잘못된 결과를 생성합니다. -
cuBLAS SYMV는 큰 n 차원에서는 실패했습니다: ssymv의 경우 131072 이상, csymv 및 dsymv의 경우 92673 이상, zsymv의 경우 65536 이상.
-
2.1.8. cuBLAS: 릴리스 12.4 업데이트 1
-
알려진 문제
-
cuBLAS 핸들 스트림을 로 설정
cudaStreamPerThread
하고 작업 공간을 via로 설정하면cublasSetWorkspace
이후 모든cublasSetWorkspace
호출이 실패합니다. 이 문제는 다음 릴리스에서 수정될 예정입니다. -
cublasLtMatmul
제공된 스케일 유형과 설명서에 명시된 스케일 유형 간의 불일치를 무시하고 후자를 가정합니다. 예를 들어,cublasLtMatmul
스케일 유형이 FP32이고 다른 모든 유형이 FP16인 지원되지 않는 구성은 스케일 유형이 FP16이라는 암묵적인 가정 하에 실행되어 잘못된 결과를 생성할 수 있습니다. 이 문제는 향후 릴리스에서 수정될 예정입니다.
-
-
해결된 문제
-
cublasLtMatmul
지원되지 않는 구성에 대해서는 오류를 반환하는 대신 무시했습니다CUBLASLT_MATMUL_DESC_AMAX_D_POINTER
. 특히, D의 절대 최댓값을 계산하는 기능은 현재 FP8 Matmul에서 출력 데이터 유형이 FP8(CUDA_R_8F_E4M3
또는CUDA_R_8F_E5M2
)인 경우에만 지원됩니다. -
일부 cuBLASLt API(
cublasLtMatmul()
,cublasLtMatmulAlgoCheck()
,cublasLtMatmulAlgoGetHeuristic()
)의 호스트 측 오버헤드가 감소했습니다. 이 문제는 CUDA Toolkit 12.4에서 처음 발생했습니다. -
cublasLtMatmul()
cublasLtMatmulAlgoGetHeuristic()
일부 Hopper 기반 GPU(MIG(Multi-Instance GPU) 포함)에서 부동 소수점 예외(FPE)가 발생할 수 있었습니다. 이 문제는 cuBLAS 11.8에서 발생했습니다 .
-
2.1.9. cuBLAS: 릴리스 12.4
-
새로운 기능
-
cuBLAS는 단정밀도 및 배정밀도에 대한 그룹화된 배치 GEMM을 지원하는 실험적 API를 추가합니다. 단정밀도는 수학 모드도 지원합니다
CUBLAS_TF32_TENSOR_OP_MATH
. 그룹화된 배치 모드를 사용하면 서로 다른 차원(m, n, k), 선행 차원(lda, ldb, ldc), 전치(transa, transb), 그리고 스케일링 인자(alpha, beta)의 GEMM을 동시에 풀 수 있습니다. 자세한 내용은 gemmGroupedBatched를 참조하세요.
-
-
알려진 문제
-
현재 컨텍스트가 를 사용하여 생성된 경우
cuGreenCtxCreate()
, cuBLAS는 사용 가능한 SM 수를 제대로 감지하지 못합니다. 사용자는 와 같은 API를 사용하여 수정된 SM 수를 cuBLAS에 제공할 수 있습니다cublasSetSmCountTarget()
. -
알파가 0이고 포인터 모드가 .(으)로 설정된 경우, BLAS 레벨 2 및 3 함수가 알파를 BLAS 호환 방식으로 처리하지 못할 수 있습니다
CUBLAS_POINTER_MODE_DEVICE
. 이는 cuBLAS 12.3 업데이트 1에 설명된 알려진 문제와 동일합니다. -
cublasLtMatmul
K가 1이고 에필로그가CUBLASLT_EPILOGUE_D{RELU,GELU}_BGRAD
작업 영역에 접근할 수 있는 범위를 초과할 수 있습니다. 이 문제는 cuBLAS 11.3 업데이트 1부터 발생합니다. -
cublasLtMatmul
K가 1이고 에필로그가CUBLASLT_EPILOGUE_D{RELU,GELU}
작업 공간을 제공하지 않으면 불법적인 메모리 접근을 생성할 수 있습니다. 이 문제는 cuBLAS 11.6부터 존재합니다. -
CUDA 그래프 스트림 캡처에서 캡처된 경우, cuBLAS 루틴은 스트림 순서 할당 API를 사용하여 메모리 노드를
cudaMallocAsync
생성할 수 있습니다. 그러나 현재 자식 그래프 나 장치cudaFreeAsync
에서 실행된 그래프의 메모리 노드는 지원되지 않으므로 이러한 상황에서 cuBLAS 루틴을 캡처하려는 시도는 실패할 수 있습니다. 이 문제를 방지하려면 cublasSetWorkspace() 함수를 사용하여 사용자 소유 작업 공간 메모리를 제공하십시오.
-
2.1.10. cuBLAS: 릴리스 12.3 업데이트 1
-
새로운 기능
-
높은 추방률을 갖는 작업 부하에 대한 휴리스틱 캐시의 성능이 향상되었습니다.
-
-
알려진 문제
-
BLAS 레벨 2 및 3 함수는 알파가 0이고 포인터 모드가 .로 설정된 경우 BLAS 호환 방식으로 알파를 처리하지 않을 수 있습니다
CUBLAS_POINTER_MODE_DEVICE
. 예상되는 동작은 해당 계산이 건너뛰어진다는 것입니다. 다음과 같은 문제가 발생할 수 있습니다. (1) HER{,2,X,K,2K}는 출력 행렬의 대각 요소의 허수부를 0으로 만들 수 있습니다. (2) HER{,2,X,K,2K}, SYR{,2,X,K,2K} 및 기타는 그렇지 않으면 건너뛰어야 할 행렬 A 및 B에 대한 계산을 수행하여 NaN을 생성할 수 있습니다. BLAS를 엄격하게 준수해야 하는 경우 사용자는 함수를 호출하기 전에 알파 값을 수동으로 확인하거나 .로 전환할 수 있습니다CUBLAS_POINTER_MODE_HOST
.
-
-
해결된 문제
-
cuBLASLt matmul 연산은 다음 조건에서 출력을 잘못 계산했을 수 있습니다. 행렬 A와 B의 데이터 유형이 FP8이고, 행렬 C와 D의 데이터 유형이 FP32, FP16 또는 BF16이고, 베타 값이 1.0이고, 행렬 C와 D가 동일하고, 에필로그에 GELU 활성화 함수가 포함되어 있는 경우입니다.
-
CUDA Toolkit 12.2 업데이트 1 또는 이전 버전의 cuBLASLt로 컴파일한 애플리케이션이 CUDA Toolkit 12.2 업데이트 2 또는 CUDA Toolkit 12.3의 cuBLASLt로 실행될 때, .을 사용하여 초기화된 행렬 곱셈 설명자가 .
cublasLtMatmulDescInit()
을 사용하여 변경된 속성을 따르지 않는 경우가 있었습니다cublasLtMatmulDescSetAttribute()
. -
MPS(Multi-Process Service)에서 Hopper GPU에 대한 cuBLAS 또는 cuBLASLt 핸들 생성이 수정되었습니다.
-
cublasLtMatmul
K가 1이고 에필로그가CUBLASLT_EPILOGUE_BGRAD{A,B}
편향 기울기에 대해 잘못된 결과를 반환했을 수 있습니다.
-
2.1.11. cuBLAS: 릴리스 12.3
-
새로운 기능
-
NVIDIA L40S Ada GPU의 성능이 향상되었습니다.
-
-
알려진 문제
-
cuBLASLt matmul 연산은 다음 조건에서 출력을 잘못 계산할 수 있습니다. 행렬 A와 B의 데이터 유형이 FP8인 경우, 행렬 C와 D의 데이터 유형이 FP32, FP16 또는 BF16인 경우, 베타 값이 1.0인 경우, 행렬 C와 D가 동일한 경우, 에필로그에 GELU 활성화 함수가 포함된 경우입니다.
-
CUDA Toolkit 12.2 업데이트 1 이하 버전의 cuBLASLt로 컴파일된 애플리케이션을 CUDA Toolkit 12.2 업데이트 2 이상의 cuBLASLt로 실행할 경우, 를 사용하여 초기화된 행렬 곱셈 설명자가 를
cublasLtMatmulDescInit()
사용한 속성 변경 사항을 반영하지 않을 수 있습니다 . 이 문제를 해결하려면 를 대신cublasLtMatmulDescSetAttribute()
사용하여 행렬 곱셈 설명자를 생성하십시오 . 이 문제는 다음 릴리스에서 수정될 예정입니다.cublasLtMatmulDescCreate()
cublasLtMatmulDescInit()
-
2.1.12. cuBLAS: 릴리스 12.2 업데이트 2
-
새로운 기능
-
cuBLASLt는 이제 단일 gemm 커널로는 실행할 수 없는 문제를 분해하려고 시도합니다. 문제를 더 작은 단위로 분할하고 gemm 커널을 여러 번 실행하여 이를 수행합니다. 이를 통해 m, n 또는 배치 크기가 매우 큰 사례에 대한 기능적 적용 범위가 향상되고 cuBLAS API에서 cuBLASLt API로의 전환이 더욱 안정적으로 이루어집니다.
-
-
알려진 문제
-
cuBLASLt matmul 연산은 다음 조건에서 출력을 잘못 계산할 수 있습니다. 행렬 A와 B의 데이터 유형이 FP8인 경우, 행렬 C와 D의 데이터 유형이 FP32, FP16 또는 BF16인 경우, 베타 값이 1.0인 경우, 행렬 C와 D가 동일한 경우, 에필로그에 GELU 활성화 함수가 포함된 경우입니다.
-
2.1.13. cuBLAS: 릴리스 12.2
-
알려진 문제
-
MPS를 100% 미만의 값으로 설정한 상태에서 사용 중이면 Hopper 아키텍처 GPU에서 cuBLAS 초기화가 실패합니다
CUDA_MPS_ACTIVE_THREAD_PERCENTAGE
. 현재 이 문제에 대한 해결 방법은 없습니다. -
CUBLASLT_EPILOGUE_RELU_BIAS
일부 Hopper 커널은 orCUBLASLT_EPILOGUE_GELU_BIAS
와 0이 아닌 값을 갖는 배치된 matmul에 대해 잘못된 결과를 생성합니다CUBLASLT_MATMUL_DESC_BIAS_BATCH_STRIDE
. 커널은 첫 번째 배치의 바이어스 벡터를 모든 배치에 적용합니다. 이 문제는 향후 릴리스에서 수정될 예정입니다.
-
2.1.14. cuBLAS: 릴리스 12.1 업데이트 1
-
새로운 기능
-
NVIDIA Ada GPU에서 FP8 지원.
-
NVIDIA L4 Ada GPU의 성능이 향상되었습니다.
-
cuBLASLt 라이브러리가 일부 CPU 명령어를 사용하지 않도록 지시하는 API를 도입했습니다. 이 API는 cuBLASLt 휴리스틱에서 사용되는 특정 CPU 명령어가 CPU 성능에 부정적인 영향을 미치는 드문 경우에 유용합니다. https://docs.nvidia.com/cuda/cublas/index.html#disabling-cpu-instructions 를 참조하세요 .
-
-
알려진 문제
-
함수를 사용하여 행렬 레이아웃을 생성할 때
cublasLtMatrixLayoutCreate()
, 가 가리키는 객체는 가 가리키는 객체cublasLtMatrixLayout_t
보다 작지만cublasLtMatrixLayoutOpaque_t
내부 구조를 유지하기에는 충분합니다. 따라서 객체를 명시적으로 역참조하거나 복사하면 경계를 벗어난 접근이 발생할 수 있으므로 이를 방지해야 합니다. 레이아웃을 직렬화하거나 복사해야 하는 경우, sizesizeof(cublasLtMatrixLayoutOpaque_t)
바이트 크기의 객체를 수동으로 할당하고 함수를 사용하여 초기화하는 것이 좋습니다. 및 도cublasLtMatrixLayoutInit()
마찬가지입니다 . 이 문제는 가 최소 바이트를 할당 하도록 하여 향후 릴리스에서 해결될 예정입니다 .cublasLtMatmulDesc_t
cublasLtMatrixTransformDesc_t
cublasLtMatrixLayoutCreate()
sizeof(cublasLtMatrixLayoutOpaque_t)
-
2.1.15. cuBLAS: 릴리스 12.0 업데이트 1
-
새로운 기능
-
NVIDIA H100 SXM 및 NVIDIA H100 PCIe GPU의 성능이 향상되었습니다.
-
-
알려진 문제
-
NVIDIA Hopper 아키텍처에서 최적의 성능을 발휘하려면 cuBLAS가 이전 아키텍처(8MiB)보다 더 큰 내부 작업 공간(64MiB)을 할당해야 합니다. 현재 및 이전 릴리스에서 cuBLAS는 256MiB를 할당합니다. 이 문제는 향후 릴리스에서 해결될 예정입니다. 가능한 해결 방법은
CUBLAS_WORKSPACE_CONFIG
NVIDIA Hopper 아키텍처에서 cuBLAS를 실행할 때 환경 변수를 :32768:2로 설정하는 것입니다.
-
-
해결된 문제
-
cublasLt 휴리스틱 캐시를 사용하지 않아 발생하는 cuBLAS 호스트 측 오버헤드를 줄였습니다. 이는 CUDA Toolkit 12.0 릴리스부터 적용되었습니다.
-
작업 공간이 필요하지 않은 전방 호환 단정밀도 복합 GEMM이 추가되었습니다.
-
2.1.16. cuBLAS: 릴리스 12.0
-
새로운 기능
-
cublasLtMatmul
이제 0이 아닌 베타로 FP8을 지원합니다. -
더 큰 규모의 문제를 처리할 수 있는 API가 추가되었습니다 . 64비트 정수 인터페이스
int64
를 참조하세요 . -
cublasLtMatmul
에필로그를 위한 Hopper 특정 커널을 추가했습니다 .-
CUBLASLT_EPILOGUE_BGRAD{A,B}
-
CUBLASLT_EPILOGUE_{RELU,GELU}_AUX
-
CUBLASLT_EPILOGUE_D{RELU,GELU}
-
-
이전에는 Windows 및 Linux의 x86_64 아키텍처에서만 지원되었던 Hopper 커널을 추가하여 arm64-sbsa에서 Hopper 성능을 개선했습니다.
-
-
알려진 문제
-
작업공간을 필요로 하지 않는 단정밀도 복소수 젬에 대한 상위 호환 커널은 없습니다. 이후 릴리스에서 지원이 추가될 예정입니다.
-
-
해결된 문제
-
cublasLtMatmul
NVIDIA Ampere 아키텍처와 최신 GPU에서 에필로그CUBLASLT_EPILOGUE_BGRAD{A,B}
와 비자명한 감소 방식(즉, 아님CUBLASLT_REDUCTION_SCHEME_NONE
)을 사용하면 바이어스 그래디언트에 대해 잘못된 결과가 반환되는 문제를 해결했습니다 . -
cublasLtMatmul
gemv와 유사한 경우(즉, m 또는 n이 1인 경우)에는CUBLASLT_EPILOGUE_RELU_BIAS
및CUBLASLT_EPILOGUE_BIAS
에필로그에 대한 편향을 무시할 수 있습니다.
사용 중단
-
동일한 번역 단위에
cublas.h
및 를 포함하는 것을 허용하지 않습니다 .cublas_v2.h
-
제거됨:
-
CUBLAS_MATMUL_STAGES_16x80
그리고 . 더 이상 이러한 단계CUBLAS_MATMUL_STAGES_64x80
를cublasLtMatmulStages_t
활용하는 커널은 없습니다. -
cublasLt3mMode_t
,CUBLASLT_MATMUL_PREF_MATH_MODE_MASK
, 및CUBLASLT_MATMUL_PREF_GAUSSIAN_MODE_MASK
에서cublasLtMatmulPreferenceAttributes_t
. 대신 에서 해당 플래그를 사용하세요cublasLtNumericalImplFlags_t
. -
CUBLASLT_MATMUL_PREF_POINTER_MODE_MASK
,CUBLASLT_MATMUL_PREF_EPILOGUE_MASK
, 및CUBLASLT_MATMUL_PREF_SM_COUNT_TARGET
에서 가져옵니다cublasLtMatmulPreferenceAttributes_t
. 해당 매개변수는 에서 직접 가져옵니다cublasLtMatmulDesc_t
. -
CUBLASLT_POINTER_MODE_MASK_NO_FILTERING
에서 . 이 마스크는 제거된 경우cublasLtPointerModeMask_t
에만 적용되었습니다 .CUBLASLT_MATMUL_PREF_MATH_MODE_MASK
-
-
2.2. cuFFT 라이브러리
2.2.1. cuFFT: 릴리스 12.9
-
사용 중단
-
cuFFT의 Maxwell, Pascal, Volta 지원은 더 이상 제공되지 않으며, 향후 CUDA 릴리스에서 제거될 예정입니다.
-
버전이 지정된 심볼은
__cufftXtSetJITCallback_12_7
더 이상 사용되지 않으며 향후 CUDA 릴리스에서 제거될 예정입니다. -
현재 링크 시간 최적화(LTO) cuFFT 커널은 최종화를 위해 nvJitLink를 필요로 합니다. 향후 릴리스에서는 LTO 커널 생성을 위한 추가 요구 사항으로 NVRTC가 추가될 예정입니다.
-
-
해결된 문제
-
고정된 작업 공간 계산: 작은 소수로 인수분해될 수 있는 대부분의 작은 크기에 대해 필요한 작업 공간이 이제 0입니다.
-
2.2.2. cuFFT: 릴리스 12.8
-
새로운 기능
-
NVIDIA Blackwell GPU 아키텍처에 대한 지원이 추가되었습니다.
-
-
사용 중단
-
정적 라이브러리는
libcufft_static_nocallback.a
더 이상 지원되지 않으며 향후 릴리스에서 삭제될 예정입니다.libcufft_static.a
CUDA Toolkit 12.6 업데이트 2를 통해 cuFFT에 LTO 콜백이 도입됨에 따라 두 라이브러리 모두 동등한 기능을 제공하므로 사용자는 로 마이그레이션해야 합니다.
-
-
알려진 문제
-
SM120은 레거시 콜백 커널에 대해 PTX JIT를 통해서만 지원됩니다. 따라서 LTO가 아닌 장치 콜백 코드와 연결하려면
libcufft_static.a
SASS가 아닌 PTX로 컴파일해야 합니다. -
플래그 를 사용하지 않고 x86_64 시스템에서 정적 cuFFT 라이브러리(
libcufft_static.a
, ) 에 연결하는 대용량 애플리케이션(전체 바이너리 크기가 2GB 이상)은 연결 오류가 발생합니다(예: ). 이 문제는 다음 릴리스에서 수정될 예정입니다.libcufft_static_nocallback.a
-mcmodel=medium
.gcc_except_table relocation R_X86_64_PC32 out of range; references DW.ref._ZTI13cufftResult_t
기존의 해결 방법은 다음과 같습니다.
-
애플리케이션을 빌드하거나 연결
-mcmodel=medium flag
-
readelf
기호를 분석하는 데 사용하면 참조를 큰 데이터 섹션에서 큰 데이터 섹션이 아닌 섹션으로libcufft_static.a
이동할 수 있습니다.ref._ZTI13cufftResult_t
.ldata.DW.ref._ZTI13cufftResult_t
.data.DW.ref._ZTI13cufftResult_t
-
-
2.2.3. cuFFT: 릴리스 12.6 업데이트 2
-
새로운 기능
-
더 이상 지원되지 않는 기존 콜백을 대체하기 위해 LTO 콜백을 도입했습니다. LTO 콜백은 다음과 같은 기능을 제공합니다.
-
추가 성능 대 레거시 콜백
-
Windows 및 동적(공유) 라이브러리에서 콜백 지원
자세한 내용은 cuFFT 설명서 페이지를 참조하세요 .
-
-
-
해결된 문제
-
cuFFT LTO EA 미리보기 바이너리에 존재하는 여러 가지 문제가 해결되었습니다.
-
-
사용 중단
-
LTO 콜백 지원을 위한 프리뷰 바이너리인 cuFFT LTO EA는 더 이상 사용되지 않으며 향후 릴리스에서 제거될 예정입니다.
-
2.2.4. cuFFT: 릴리스 12.6
-
알려진 문제
-
크기 1의 FFT는 현재 FP16에서 지원되지 않습니다. CTK 12.1 이하 버전에서는 이 사용 사례에 대한 알려진 메모리 문제가 있습니다. CTK 12.2 이상 버전에서는 오류가 발생합니다. [ 4662222 ]
istride/ostride > 1
CUFFT_INVALID_SIZE
-
2.2.5. cuFFT: 릴리스 12.5
-
새로운 기능
-
다양한 크기의 R2C 및 C2R FFT에서 성능을 개선하기 위해 Just-In-Time Link-Time Optimized(JIT LTO) 커널을 추가했습니다 .
-
JIT LTO 커널을 사용하거나 사용하지 않고 R2C/C2R 사용 사례를 테스트하여 결과 성능을 비교해 보는 것이 좋습니다. cuFFT API의 플랜별 속성 기능을 사용하여 JIT LTO 커널을 활성화할 수 있습니다 .
-
-
2.2.6. cuFFT: 릴리스 12.4 업데이트 1
-
해결된 문제
cuFFT LTO EA 라이브러리의 루틴이 cufftXt.h
CUDA 12.4의 cuFFT Advanced API 헤더 파일( )에 실수로 포함되었습니다. 이 루틴은 이제 헤더에서 제거되었습니다.
2.2.7. cuFFT: 릴리스 12.4
-
새로운 기능
-
64비트 인덱싱을 사용하는 FFT의 성능을 개선하기 위해 Just-In-Time Link-Time Optimized(JIT LTO) 커널을 추가했습니다 .
-
cuFFT API에 플랜별 속성을 추가했습니다 . 이 새로운 루틴을 활용하면 사용자가 cuFFT 동작을 더욱 효과적으로 제어할 수 있습니다. 현재 이 루틴은 64비트 FFT에 JIT LTO 커널을 활성화하는 데 사용할 수 있습니다.
-
특히 더 큰 크기의 FFT와 관련하여 특정 단정밀도(fp32) FFT 사례의 정확도가 향상되었습니다.
-
-
알려진 문제
-
cuFFT LTO EA 라이브러리의 루틴이 cuFFT Advanced API 헤더(
cufftXt.h
)에 실수로 추가되었습니다. 이 루틴은 cuFFT에서 지원되지 않으며, 향후 릴리스에서 헤더에서 제거될 예정입니다.
-
-
해결된 문제
-
사용자가 지정한 출력 스트라이드를 사용하여 잘못된 위치의 실수-복소수 변환(R2C)을 수행할 때 사용자 데이터가 덮어쓰여질 수 있는 문제를 해결했습니다(예: 고급 데이터 레이아웃 API
ostride
의 구성 요소 사용 ). -
libcufftw
와 FFTW 가 모두 . 일 때 와 FFTW 간의 일관되지 않은 동작을 수정했습니다 . 이제 FFTW에서와 마찬가지로 매개변수 로 전달하는 것은 해당 차원의 논리적 크기인 n을 전달하는 것과 동일합니다.inembed
onembed
nullptr / NULL
nullptr / NULL
inembed/onembed
-
2.2.8. cuFFT: 릴리스 12.3 업데이트 1
-
알려진 문제
-
계획 생성에 사용된 컨텍스트와 다른 컨텍스트에서 실수-복소수(R2C) 또는 복소수-실수(C2R) 계획을 실행하면 정의되지 않은 동작이 발생할 수 있습니다. 이 문제는 향후 cuFFT 릴리스에서 수정될 예정입니다.
-
-
해결된 문제
-
복합-복합(C2C) 실행 함수(
cufftExec
및 유사한 함수)는 이제 커널 실행 중 오류(예: CUDA 컨텍스트 누락)가 발생하는 경우 적절하게 오류를 출력합니다.
-
2.2.9. cuFFT: 릴리스 12.3
-
새로운 기능
-
콜백 커널은 리소스 사용 측면에서 더 여유로우며, 더 적은 레지스터를 사용합니다.
-
127보다 큰 인수를 사용하는 이중 정밀도 소수 및 합성 FFT 크기에 대한 정확도가 향상되었습니다.
-
일부 FFT 크기에 대한 계획 시간이 약간 개선되었습니다.
-
2.2.10. cuFFT: 릴리스 12.2
-
새로운 기능
-
cufftSetStream
첫 번째 GPU의 기본 컨텍스트 대신 모든 GPU 컨텍스트의 스트림을 사용하여 다중 GPU 계획에서 사용할 수 있습니다cufftXtSetGPUs
. -
62에서 16380까지의 크기를 가진 1000개 이상의 FFT 성능이 향상되었습니다. 향상된 성능은 PTX JIT를 통해 여러 GPU 아키텍처(Maxwell에서 Hopper GPU까지)에서 연속 데이터 레이아웃을 가진 수백 가지의 단정도 및 배정도 FFT 사례에 적용됩니다.
-
12.1 릴리스에서 cuFFT와 비교했을 때 정적 라이브러리의 크기가 줄었습니다.
-
-
해결된 문제
-
cuFFT는 더 이상 스레드가 1023개가 넘는 플랜을 동시에 생성하고 액세스할 때 경쟁 조건을 나타내지 않습니다.
-
cuFFT는 여러 스레드가 동시에 호출할 때 더 이상 경쟁 조건을 나타내지 않습니다
cufftXtSetGPUs
.
-
2.2.11. cuFFT: 릴리스 12.1 업데이트 1
-
알려진 문제
-
cufftCreate
한 스레드가 (또는cufftDestroy
)을 호출하고 다른 스레드가 API(cufftCreate
또는 제외cufftDestroy
)를 호출하고, 실행 중인 플랜의 총 수가 1023을 초과하는 경우 cuFFT는 경쟁 조건을 보입니다 . -
cuFFT는 여러 스레드가 서로 다른 플랜을 동시에 호출할 때 경쟁 조건을 보입니다
cufftXtSetGPUs
.
-
2.2.12. cuFFT: 릴리스 12.1
-
새로운 기능
-
14에서 28,800까지 다양한 크기의 FFT 수백 개에 대해 Hopper GPU에서 성능이 향상되었습니다. 향상된 성능은 연속적인 데이터 레이아웃을 가진 FFT의 단일 및 배정밀도에서 542개 이상의 경우에 적용됩니다.
-
-
알려진 문제
-
CUDA 11.8부터 CUDA 그래프는 더 이상 아웃 오브 플레이스 모드 변환에서 데이터를 로드하는 콜백 루틴을 지원하지 않습니다. 향후 릴리스에서는 cuFFT 콜백 구현을 업데이트하여 이러한 제한을 제거할 예정입니다. cuFFT 11.4에서는 별도로 컴파일된 장치 코드를 기반으로 하는 cuFFT 콜백 기능이 더 이상 지원되지 않습니다.
-
-
해결된 문제
-
cuFFT는 프로그램 종료 시에 CUDA 컨텍스트가 플랜 생성에 사용되어 프로그램 종료 전에 파괴된 경우 더 이상 Compute-Sanitizer에서 오류를 생성하지 않습니다.
-
2.2.13. cuFFT: 릴리스 12.0 업데이트 1
-
해결된 문제
-
다중 GPU, 단일 배치, 1D FFT에 대한 스크래치 공간 요구 사항이 감소했습니다.
-
2.2.14. cuFFT: 릴리스 12.0
-
새로운 기능
-
PTX JIT 커널 컴파일을 통해 Maxwell, Pascal, Volta 및 Turing 아키텍처에 대한 많은 새로운 가속 케이스를 추가할 수 있었습니다.
-
-
알려진 문제
-
PTX JIT 컴파일로 인해 cuFFT 계획 생성 시간이 증가합니다. 계획 초기화 시간을 참조하세요 .
-
-
해결된 문제
-
cuFFT 플랜에서 플랜당 의도치 않게 작은 메모리 오버헤드(몇 KB)가 발생하던 문제가 해결되었습니다.
-
2.3. cuSOLVER 라이브러리
2.3.1. cuSOLVER: 릴리스 12.9
-
알려진 문제
-
cusolverDnXsyevd
,cusolverDnXsyevdx
,cusolverDnXsyevBatched
,cusolverDn<t>syevd
및 에 대해 지원되는 입력 행렬 크기는 n <= 32768로 제한됩니다. 이 제한은 , , , 및 를cusolverDn<t>syevdx
포함하여 동일한 내부 구현을 공유하는 루틴에도 적용됩니다 .cusolverDnXgesvdr
cusolverDnXgesvdp
cusolverDn<t>sygvd
cusolverDn<t>sygvdx
cusolverDn<t>gesvdaStridedBatched
-
2.3.2. cuSOLVER: 릴리스 12.8
-
새로운 기능
-
cusolverDn{SDCZ}sytrf
이제cusolverDnXsytrs
입력 피벗 배열을 피벗하지 않고도 대칭적 인수분해를 지원하여devIpiv=NULL
성능이 향상되었습니다. -
cusolver{DZ}gesvdaStridedBatched
이제 광범위한 문제에 대해 향상된 정확도와 성능을 제공합니다. -
cusolver{SDCZ}gesvdaStridedBatched
이제 수렴 실패 시 유효한 특이값과 벡터의 개수를 반환합니다.
-
-
해결된 문제
-
최소 2개의 배치 크기를
cusolverDnXsyevBatched
사용하거나cuComplex
작업 공간이 입력 시 0으로 초기화되지 않으면 잘못된 결과가 반환되는 문제가 해결되었습니다 .cuDoubleComplex
-
-
사용 중단
-
다음 API는 12.8에서 사용 중단 경고를 포함합니다[
cuSOLVERSp
4674686 ] .cuSOLVERRf
-
cusolverSp{SDCZ}csrlsvluHost
-
cusolverSp{SDCZ}csrlsvcholHost
-
cusolverSp{SDCZ}csrlsvchol
-
cusolverRfSetupHost
-
cusolverRfSetupDevice
-
cusolverRfResetValues
-
cusolverRfAnalyze
-
cusolverRfRefactor
-
cusolverRfAccessBundledFactorsDevice
-
cusolverRfExtractBundledFactorsHost
-
cusolverRfExtractSplitFactorsHost
-
cusolverRfSolve
컴파일러 플래그를 추가하면 사용 중단 경고를 제거할 수 있습니다
-DDISABLE_CUSOLVER_DEPRECATED
.더 나은 성능과 지속적인 지원을 위해 cuDSS 라이브러리를 사용하는 것이 좋습니다 . 전환 관련 내용은 cuDSS 샘플을 참조하세요 .
-
-
2.3.3. cuSOLVER: 릴리스 12.6 업데이트 2
-
새로운 기능
-
cusolverDnXgeev
비-에르미트 고유값 문제를 해결하기 위한 새로운 API입니다 . -
균일한 배치 에르미트 고유값 문제를 해결하기 위한 새로운 API입니다
cusolverDnXsyevBatched
.
-
2.3.4. cuSOLVER: 릴리스 12.6
-
새로운 기능
-
cusolverDnXgesvdp()
. 의 성능이 향상되었습니다 .
-
2.3.5. cuSOLVER: 릴리스 12.5 업데이트 1
-
해결된 문제
-
bufferOnDevice
호출에 의한 잠재적인 경계외 접근이cusolverDnXlarft
해결되었습니다.
-
2.3.6. cuSOLVER: 릴리스 12.5
-
새로운 기능
-
cusolverDnXgesvd
및cusolverDn<t>gesvd
의 성능이 향상 됩니다 .jobu != 'N'
jobvt != 'N'
-
cusolverDnXgesvdp
if 의 성능 개선 .jobz = CUSOLVER_EIG_MODE_NOVECTOR
-
cusolverDnXgesvdp
키가 크고 얇은 매트릭스의 경우 작업 공간 요구 사항이 낮습니다 .
-
-
알려진 문제
-
CUDA Toolkit 12.4 업데이트 1에서는 호출 시 값이 에서 범위를 벗어난 메모리 액세스를 초래할 수 있습니다 . 이 문제를 해결하려면 크기가 인 더 큰 장치 작업 공간 버퍼를 할당할 수 있습니다 .
ldt > k
cusolverDnXlarft
bufferOnDevice
workspaceInBytesOnDevice=ALIGN_32((ldt*k + n*k)*sizeofCudaDataType(dataTypeT))
auto ALIGN_32=[](int64_t val) { return ((val + 31)/32)*32; };
그리고
auto sizeofCudaDataType=[](cudaDataType dt) { if (dt == CUDA_R_32F) return sizeof(float); if (dt == CUDA_R_64F) return sizeof(double); if (dt == CUDA_C_32F) return sizeof(cuComplex); if (dt == CUDA_C_64F) return sizeof(cuDoubleComplex); };
-
2.3.7. cuSOLVER: 릴리스 12.4 업데이트 1
-
새로운 기능
-
의 성능이
cusolverDnXlarft
개선되었습니다. 큰 행렬의 경우 속도 향상 폭이 100배를 초과할 수 있습니다. H100의 성능은 이제 A100보다 일관되게 향상되었습니다. 의 변경으로 인해 , , 의cusolverDnXlarft
속도도 약간 향상되었습니다 .cusolverDn<t>ormqr
cusolverDn<t>ormtr
cusolverDnXsyevd
-
특이 벡터를 찾는 성능이
cusolverDnXgesvd
향상되었습니다. 좌우 특이 벡터를 모두 계산하는 작업 구성이 최대 1.5배 더 빨라졌습니다.
-
-
해결된 문제
-
cusolverDnXtrtri_bufferSize
이제 올바른 작업 공간 크기를 바이트 단위로 반환합니다.
-
-
사용 중단
-
오랫동안 사용되지 않는
cusolverDnPotrf
,cusolverDnPotrs
,cusolverDnGeqrf
,cusolverDnGetrf
,cusolverDnGetrs
, ,cusolverDnSyevd
,cusolverDnSyevdx
,cusolverDnGesvd
및 관련bufferSize
함수를 사용하면 사용 중단 경고가 발생합니다. 컴파일할 때 플래그를 사용하여 경고를 끌 수 있지만 , 사용자는 대신 , , , , , , , , 및 해당 함수를-DDISABLE_CUSOLVER_DEPRECATED
사용해야 합니다 .cusolverDnXpotrf
cusolverDnXpotrs
cusolverDnXgeqrf
cusolverDnXgetrf
cusolverDnXgetrs
cusolverDnXsyevd
cusolverDnXsyevdx
cusolverDnXgesvd
bufferSize
-
2.3.8. cuSOLVER: 릴리스 12.4
-
새로운 기능
-
cusolverDnXlarft
API 가cusolverDnXlarft_bufferSize
도입되었습니다.cusolverDnXlarft
실제 블록 반사기의 삼각형 요소를 형성하고,cusolverDnXlarft_bufferSize
필요한 작업 공간 크기를 바이트로 반환합니다.
-
-
알려진 문제
-
cusolverDnXtrtri_bufferSize` 함수가 잘못된 필수 장치 작업 공간 크기를 반환합니다. 이 문제를 해결하려면 반환된 크기에 데이터 유형의 크기를 곱하면 됩니다(예: 행렬 A가 double 유형인 경우 8바이트). 그러면 올바른 작업 공간 크기를 얻을 수 있습니다.
-
2.3.9. cuSOLVER: 릴리스 12.2 업데이트 2
-
해결된 문제
-
18918보다 큰 행렬에 대해 또는 가 ' '와 같지 않으면 잘못된 결과가 발생할 수 있는
cusolverDn<t>gesvd()
,cusolverDnGesvd()
, 및 의 문제를 해결했습니다 .cusolverDnXgesvd()
jobu
jobvt
N
-
2.3.10. cuSOLVER: 릴리스 12.2
-
새로운 기능
-
결정적 결과를 보장하거나 비결정적 결과를 허용하여 성능을 향상시키는 새로운 API입니다.
cusolverDnSetDeterministicMode()
및 를 참조하세요cusolverDnGetDeterministicMode()
. 영향을 받는 함수는 다음과 같습니다.cusolverDn<t>geqrf()
,cusolverDn<t>syevd()
,cusolverDn<t>syevdx()
,cusolverDn<t>gesvdj()
,cusolverDnXgeqrf()
,cusolverDnXsyevd()
,cusolverDnXsyevdx()
,cusolverDnXgesvdr()
, 및cusolverDnXgesvdp()
.
-
-
알려진 문제
-
동일한 장치에서 여러 개의 비차단 CUDA 스트림을 동시에 실행하면
cusolverDn<t>getrf()
교착 상태가 발생할 수 있습니다.cusolverDnXgetrf()
-
2.4. cuSPARSE 라이브러리
2.4.1. cuSPARSE: 릴리스 12.9
-
알려진 문제
-
cusparseCsr2cscEx2
입력 행렬 차원 중 하나라도 0(m=0 또는 n=0)인 경우 잘못된 결과가 생성됩니다.[ CUSPARSE-2319 ] -
SpMV 및 SpMM의 혼합 정밀도 계산은 잘못된 결과를 생성합니다. [ CUSPARSE-2349 ]
-
많은 cuSPARSE 루틴은 매트릭스 인덱스, 열, 값 배치 스트라이드를 포함한 배치 스트라이드에 대해 16바이트 정렬이 필요합니다.
-
2.4.2. cuSPARSE: 릴리스 12.8
-
새로운 기능
-
희소 행렬 연산에서 상당한 성능 향상을 통해 NVIDIA Blackwell GPU에 대한 지원이 추가되었습니다.
-
SpMV(Sparse Matrix-Vector multiplication): Hopper보다 최대 2.3배 빠름
-
SpMM(Sparse Matrix-Matrix multiplication): Hopper보다 최대 2.4배 빠름
-
-
-
해결된 문제
-
CUDA_R_64F 데이터 유형과 두 개의 밀집 행렬(op(B) 및 C) 간의 메모리 레이아웃이 일치하지 않는 CUSPARSE_SPMM_CSR_ALG3 알고리즘을 사용할 때 "잘못 정렬된 주소" 오류가 발생하는 cusparseSpMM의 문제를 수정했습니다. [ CUSPARSE-2081 ]
-
동일한 매트릭스에서 SpMV 전처리에 대한 후속 호출이 첫 번째 호출 후에 실패하는 문제를 해결했습니다. [ CUSPARSE-1897 ]
-
알파=0일 때 SpMV 전처리가 실행되지 않는 문제를 해결했습니다. [ CUSPARSE-1897 ]
-
다른 메모리 버퍼를 사용하여 전처리 작업(SpMV, SpMM, SDDMM)을 활성화하기 위한 문제가 해결되었습니다. [ CUSPARSE-1962 ]
-
SpSV에서 하삼각 구조와 대각선 요소가 있는 SlicedELL 형식의 행렬을 사용할 경우 잘못된 결과가 발생하는 문제를 해결했습니다. [ CUSPARSE-1996 ]
-
-
알려진 문제
-
SpMM 및 기타 특정 루틴은 현재 2^31개의 0이 아닌 요소에 접근하는 행렬을 처리할 때 제한됩니다. [ CUSPARSE-2133 ]
-
-
사용 중단
-
다음 cuSPARSE 기능은 더 이상 사용되지 않으며 향후 주요 릴리스에서 제거될 예정입니다[ 4687069 ].
-
cusparseSpVV()
-
cusparseAxpby()
-
cusparseXgemvi()
-
cusparseSbsr2csr()
-
cusparseSgebsr2csr()
-
cusparseSgebsr2gebsr()
-
cusparseXbsrmm()
(대신 사용cusparseSpMM
)
문제가 있는 경우 Math-Libs-Feedback @ nvidia.com 으로 문의 하거나 https://forums.developer.nvidia.com/을 방문 하세요 .
-
16비트 복소수 부동 소수점(CUDA_C_16F) 및 16비트 복소수 bfloat 부동 소수점(CUDA_C_16BF) 데이터 유형에 대한 지원이 향후 릴리스에서 cuSPARSE에서 제거될 예정입니다. 이러한 데이터 유형은 CUDA 12.2부터 더 이상 지원되지 않습니다. [ CUSPARSE-2225 ]
-
2.4.3. cuSPARSE: 릴리스 12.6 업데이트 2
-
해결된 문제
-
cusparseSpMV_preprocess()
,cusparseSpMM_preprocess()
, 및 에 대한 설명서를 다시 작성했습니다cusparseSDDMM_preprocess()
. 이제 설명서에서는 이러한 함수를 사용할 때 코드가 충족해야 하는 추가 제약 조건을 설명합니다. [ CUSPARSE-1962 ] -
cusparseSpMV()
외부 버퍼의 값이 다음 호출에서도 유지될 것으로 예상합니다. 그렇지 않으면 잘못된 결과를 계산하거나 충돌이 발생할 수 있습니다. [ CUSPARSE-1897 ] -
cusparseSpMV_preprocess()
cusparseSpMM_preprocess()
동일한 매트릭스에서 실행하면 올바르게 실행되지 않으며 그 반대의 경우도 마찬가지입니다. [ CUSPARSE-1897 ] -
cusparseSpMV_preprocess()
동일한 행렬에서 두 번 이상 호출되는 경우 SpMV 계산을 실행합니다. [ CUSPARSE-1897 ] -
cusparseSpMV()
cusparseSpMM()
동일한 매트릭스를 사용한 후속 호출이 잘못된 결과를 생성하거나 충돌할 수 있습니다 . [ CUSPARSE-1897 ] -
단일 희소 행렬 과 단일 열만 있는
A
밀집 행렬을 사용하는 경우, 두 행렬을 모두 호출하면 후속 호출이 충돌하거나 잘못된 결과가 생성될 수 있습니다. SpMV와 SpMM의 역할을 바꾼 경우에도 마찬가지입니다. [ CUSPARSE-1921 ]X
cusparseSpMM_preprocess(A,X,...)
cusparseSpMV()
-
2.4.4. cuSPARSE: 릴리스 12.6
-
알려진 문제
-
cusparseSpMV_preprocess()
동일한 행렬에서 두 번 이상 호출되면 SpMV 계산을 실행합니다. [ CUSPARSE-1897 ] -
cusparseSpMV_preprocess()
cusparseSpMM_preprocess()
동일한 매트릭스에서 실행된 경우에는 실행되지 않으며 그 반대의 경우도 마찬가지입니다. [ CUSPARSE-1897 ] -
모든 호출에 동일한 external_buffer를 사용해야 합니다
cusparseSpMV
. [ CUSPARSE-1897 ]
-
2.4.5. cuSPARSE: 릴리스 12.5 업데이트 1
-
새로운 기능
-
.BSR 형식에 대한 지원이 추가되었습니다
cusparseSpMM
.
-
-
해결된 문제
-
cusparseSpMM()
배치 사이에 패딩이 있음을 나타내는 경우alpha=0
, 때때로 잘못된 결과가 나올 수 있습니다 .num_batches>1
batch_stride
-
cusparseSpMM_bufferSize()
희소 행렬이 Blocked Ellpack이고 밀집 행렬에 열이 하나(n=1)만 있는 경우 잘못된 크기가 반환됩니다. -
cusparseSpMM
k=0
(예: A에 열이 없는 경우) 잘못된 결과가 반환되었습니다 . 올바른 동작은 를 수행하는 것입니다 . 버그 동작은 전혀 수정되지 않았습니다.C \*= beta
C
-
cusparseCreateSlicedEll
슬라이스 크기가 행렬의 행 개수보다 큰 경우 오류가 반환됩니다. -
Sliced-ELLPACK은
cusparseSpSV
대각 행렬에 대해 잘못된 결과를 생성합니다. -
cusparseSpSV_analysis()
일부 행렬과 일부 슬라이스 크기에 대한 리소스가 부족하여 Sliced-ELLPACK이 실패했습니다.
-
2.4.6. cuSPARSE: 릴리스 12.5
-
새로운 기능
-
SpMV에서 혼합된 입력 유형에 대한 지원이 추가되었습니다: 단일 정밀도 입력 행렬, 이중 정밀도 입력 벡터, 이중 정밀도 출력 벡터.
-
-
해결된 문제
-
cusparseSpMV()
출력 벡터가 16바이트에 맞춰지지 않으면 잘못된 메모리 액세스가 발생합니다.
-
2.4.7. cuSPARSE: 릴리스 12.4
-
새로운 기능
-
희소 행렬-벡터 곱셈에 대한 전처리 단계를 추가했습니다
cusparseSpMV_preprocess()
. -
. 에 대한 혼합 실수 및 복소수 유형에 대한 지원이 추가되었습니다
cusparseSpMM()
. -
cusparseSpSM_updateMatrix()
분석과 해결 단계 사이에 희소 행렬을 업데이트하기 위한 새로운 API를 추가했습니다cusparseSpSM()
.
-
-
알려진 문제
-
cusparseSpMV()
출력 벡터가 16바이트에 맞춰지지 않으면 잘못된 메모리 액세스가 발생합니다.
-
-
해결된 문제
-
cusparseSpVV()
희소 벡터에 0이 아닌 값이 많을 경우 잘못된 결과가 제공됩니다.
-
2.4.8. cuSPARSE: 릴리스 12.3 업데이트 1
-
새로운 기능
-
.64 및 128 블록 크기에 대한 지원이 추가되었습니다
cusparseSDDMM()
. -
cusparseSDDMM_preprocess()
BSR에 대한 전처리 단계를 추가하여cusparseSDDMM()
주요 컴퓨팅 단계의 성능을 개선하는 데 도움이 됩니다.
-
2.4.9. cuSPARSE: 릴리스 12.3
-
새로운 기능
-
이제 및 루틴
cusparseSpSV_bufferSize()
은cusparseSpSV_analysis()
밀집 벡터에 대한 NULL 포인터를 허용합니다. -
이제 및 루틴은 값에 대한 NULL 포인터
cusparseSpSM_bufferSize()
가cusparseSpSM_analysis()
있는 고밀도 행렬 설명자를 허용합니다.
-
-
알려진 문제
-
및 루틴
cusparseSpSV_analysis()
은cusparseSpSM_analysis()
호출을 차단하고 비동기적이지 않습니다. -
cusparseSpSV()
슬라이스 ELLPACK 포맷을 사용하고 행렬 A에 전치/전치 켤레 연산을 수행 하면 잘못된 결과가 발생할 수 있습니다.
-
-
해결된 문제
-
cusparseSpSV()
어떤 경우에는 불확실한 결과가 제공되었습니다. -
cusparseSpSV_analysis()
멀티스레드 환경에서 가끔씩 중단 되는 문제를 해결했습니다 . -
출력 벡터/행렬 또는 입력 행렬에 NaN이 포함된 경우 가끔 잘못된 출력이 생성되는
cusparseSpSV()
문제 를 해결했습니다 .cusparseSpSV()
-
2.4.10. cuSPARSE: 릴리스 12.2 업데이트 1
-
새로운 기능
-
이제 라이브러리는 디버깅 목적으로 설명자 생성 중에 희소 행렬을 파일에 덤프할 수 있는 기능을 제공합니다. 로깅 API( https://docs.nvidia.com/cuda/cusparse/index.html#cusparse-logging-api )를 참조하세요 .
-
-
해결된 문제
-
CUSPARSE_SPMM_CSR_ALG3
알고리즘 선택 과정에서 혼란을 피하기 위해 대체 방안을 제거했습니다 . -
지원되는 작업을 명확하게 설명했습니다
cusparseSDDMM()
. -
cusparseCreateConstSlicedEll()
이제const
포인터를 사용합니다. -
1 기반 인덱싱을 사용 하는 드문 예외 상황에서 잘못된 결과가 발생하는 문제를 수정했습니다
cusparseCsr2CscEx2()
. -
cusparseSpSM_bufferSize()
필요한 것보다 약간 적은 메모리를 요청할 수 있습니다. -
cusparseSpMV()
이제 꼭 필요할 때만 버퍼 포인터의 유효성을 확인합니다.
-
-
사용 중단
-
여러 레거시 API가 공식적으로 지원 중단되었습니다. 모든 API에 컴파일 타임 경고가 추가되었습니다.
-
2.4.11. cuSPARSE: 릴리스 12.1 업데이트 1
-
새로운 기능
-
SDDMM 루틴을 지원하는 일반 API에 대한 BSR(Block Sparse Row) 희소 행렬 저장소가 도입되었습니다(
cusparseSDDMM
). -
cusparseSpMV
일반 API에 대한 희소 행렬-벡터 곱셈( ) 및 단일 우변을 갖는 삼각 솔버( ) 를 지원하는 Sliced Ellpack(SELL) 희소 행렬 저장 형식이 도입되었습니다cusparseSpSV
. -
cusparseSpSV_updateMatrix
분석 단계 후 단일 우변을 사용하여 희소 삼각형 솔버에서 행렬 값 및/또는 행렬 대각선을 업데이트하기 위한 새로운 API 호출( )을 추가했습니다 .
-
2.4.12. cuSPARSE: 릴리스 12.0 업데이트 1
-
새로운 기능
-
cusparseSDDMM()
이제 혼합 정밀도 계산을 지원합니다. -
cusparseSpMM()
NVIDIA Ampere 아키텍처 GPU에서 일부 행렬의 alg2 혼합 정밀도 성능이 향상되었습니다 . -
cusparseSpMV()
새로운 부하 분산 알고리즘으로 성능이 향상되었습니다 . -
cusparseSpSV()
이제는cusparseSpSM()
제자리 계산을 지원합니다. 즉, 출력 및 입력 벡터/행렬이 동일한 메모리 주소를 갖습니다.
-
-
해결된 문제
-
cusparseSpSM()
RHS 행렬의 선행 차원(ld)이 열/행의 수보다 큰 경우 잘못된 결과가 발생할 수 있습니다.
-
2.4.13. cuSPARSE: 릴리스 12.0
-
새로운 기능
-
JIT LTO 기능(
cusparseSpMMOp()
)이 드라이버에서 nvJitLto 라이브러리로 전환되었습니다. CUDA 12.0부터 사용자는 에 연결해야 합니다libnvJitLto.so
. 자세한 내용은 cuSPARSE 문서를 참조하십시오 . 의 JIT LTO 성능도 향상되었습니다cusparseSpMMOpPlan()
. -
일반 API에 const 설명자를 도입했습니다(예: .
cusparseConstSpVecGet()
). 이제 일반 API 인터페이스는 설명자와 해당 데이터가 cuSPARSE 함수에 의해 수정되는 시점을 명확하게 선언합니다. -
메모리 사용량을 낮추기 위해 두 가지 새로운 알고리즘을 추가했습니다
cusparseSpGEMM()
. 첫 번째 알고리즘은 중간 생성물 개수에 대한 엄격한 제한을 두는 반면, 두 번째 알고리즘은 계산을 청크로 분할할 수 있도록 합니다. -
, , 및
int8_t
에 대한 지원이 추가되었습니다 .cusparseGather()
cusparseScatter()
cusparseCsr2cscEx2()
-
cusparseSpSV()
분석 및 해결 단계 모두에서 성능이 향상되었습니다 . -
cusparseSpSM()
분석 및 해결 단계 모두에서 성능이 향상되었습니다 . -
성능이 개선되었고
cusparseSDDMM()
일괄 계산에 대한 지원이 추가되었습니다. -
성능이 향상되었습니다
cusparseCsr2cscEx2()
.
-
-
해결된 문제
-
cusparseSpSV()
잘못된 결과가 나올 수도cusparseSpSM()
있습니다. -
cusparseDnMatGetStridedBatch()
수락하지 않았습니다 .batchStride == 0
-
-
사용 중단
-
더 이상 사용되지 않는 CUDA 11.x API, 열거자 및 설명자가 제거되었습니다.
-
2.5. 수학 라이브러리
2.5.1. CUDA 수학: 릴리스 12.8
-
새로운 기능
-
여러 가지 새로운 부동 소수점 데이터 유형에 대한 지원이 추가되었습니다.
-
E2M1(2비트 지수, 1비트 가수)
-
E2M3(2비트 지수, 3비트 가수)
-
E3M2(3비트 지수, 2비트 가수)
-
E8M0(8비트 지수, 0비트 가수)
변환 연산자 및 내장 함수를 포함한 FP4, FP6 및 FP8 유형에 대한 자세한 내용은 CUDA Math API 설명서를 참조하세요. [ CUMATH-1385 ]
-
-
이러한 유형에 대한 변환 작업은 특정 장치(예: 컴퓨팅 기능 10.0a의 장치)에서 기본적으로 지원되고 다른 장치는 에뮬레이션 경로를 사용합니다.
-
최적화된 표준 단정밀도 쌍곡탄젠트(
tanhf()
) 함수로 30-40% 더 빠른 성능을 달성했습니다. [ 4557267 ] -
여러 가지 새로운 tanh 구현이 추가되었습니다.
-
__tanhf(float x)
: 새로운 빠른 정확도 감소 수학 내장 -
htanh()
및h2tanh()
: 스칼라 및 팩 형식의 half 및 bfloat16 유형에 대한 tanh 함수 -
htanh_approx()
및h2tanh_approx()
: 빠른 정확도 감소 버전
자세한 사용 정보는 CUDA Math API 문서를 참조하세요. [ CUMATH-6821 ]
-
-
__float128
컴퓨팅 기능 10.0 이상의 GPU에서 장치 계산 시 4정밀도 데이터 유형 및 일부 수학 라이브러리 연산에 대한 지원이 추가되었습니다 . 자세한 내용은 CUDA Math API 문서를 참조하십시오. [ CUMATH-5463 ]
-
-
알려진 문제
-
MXFP4/MXFP6/MXFP8 형식으로 변환할 때 개발자는 현재 0으로 반올림하는 동작만 구현하는 C++ 변환 생성자를 사용해서는 안 됩니다. MXFP 형식으로 변환할 때는 양의 무한대로 반올림하는 동작을 사용해야 합니다. 이 동작은 .NET과 같은 변환 함수에서 옵션으로 구현되어 있습니다
__nv_cvt_bfloat16raw_to_e8m0
. C++ 변환 생성자의 동작은 향후 업데이트에서 변경될 예정입니다.
-
2.5.2. CUDA Math: 릴리스 12.6 업데이트 1
-
해결된 문제
-
릴리스 12.6의 문제 4731352가 해결되었습니다.
-
2.5.3. CUDA 수학: 릴리스 12.6
-
알려진 문제
-
NVIDIA는 지속적인 호환성 테스트 결과, MSVC 17.10으로 컴파일된 프로그램에서 여러 CUDA Math Integer SIMD API가 CPU에서 사용될 경우 잘못된 결과를 생성하는 것을 확인했습니다. 근본 원인은 GPU 기능의 호스트 기반 에뮬레이션을 수행할 때 정수 변환 시 정의되지 않은 동작에 노출된 API의 헤더 기반 구현에 코딩 오류가 있는 것으로 밝혀졌습니다. 이 문제는 향후 CUDA 릴리스에서 수정될 예정입니다. 영향을 받는 애플리케이션은 CUDA 커널이 아닌 CPU에서
__vimax3_s16x2
,__vimin3_s16x2
,__vibmax_s16x2
, 를 호출하는 애플리케이션입니다__vibmin_s16x2
. [ 4731352 ]
-
2.5.4. CUDA 수학: 릴리스 12.5
-
알려진 문제
-
지속적인 테스트 결과, 배정밀도
lgamma()
함수가 문서화된 4ulp 정확도 손실보다 더 큰 손실을 경험할 수 있는 구간 경계를 업데이트했습니다. 새로운 구간은 (-23.0001; -2.2637)로 표시됩니다. 이 결과는 CUDA 12.5 및 이전 모든 버전에 적용됩니다. [ 4662420 ]
-
2.5.5. CUDA 수학: 릴리스 12.4
-
해결된 문제
-
헤더 의 호스트별 코드
cuda_fp16/bf16
는 이제 유형 펀닝에서 자유로워졌으며 엄격한 별칭 규칙에 기반한 최적화가 있는 경우 올바르게 작동합니다. [ 4311216 ]
-
2.5.6. CUDA 수학: 릴리스 12.3
-
새로운 기능
-
SIMD Integer CUDA Math API의 성능이 개선되었습니다.
-
-
해결된 문제
-
컴파일러 옵션으로 컴파일할 경우 Math
__hisinf()
API와cuda_fp16.h
헤더cuda_bf16.h
가 자동으로 잘못된 결과를 생성하는 문제가 있었는데, 이는-std=c++20
기본 nvcc 컴파일러 문제로 인해 발생했으며, 이 문제는 버전 12.3에서 해결되었습니다.
-
-
알려진 문제
-
cuda_fp16.h
및 헤더 사용자는cuda_bf16.h
호스트 컴파일러의 엄격한 별칭 규칙 기반 최적화(예: 호스트 GCC 컴파일러로 전달)를 비활성화하는 것이 좋습니다 . 이러한 기능은 , , , 유형 구현-fno-strict-aliasing
에 사용되는 유형 펀닝 관용어를 방해 하고 사용자 프로그램을 정의되지 않은 동작에 노출시킬 수 있습니다. 헤더는 #pragma GCC 진단 무시를 통해 GCC 진단을 억제합니다 . 이 동작은 향후 헤더 버전에서 개선될 수 있습니다.__half
__half2
__nv_bfloat16
__nv_bfloat162
-Wstrict-aliasing
-
2.5.7. CUDA 수학: 릴리스 12.2
-
새로운 기능
-
CUDA Math API
__half
와__nv_bfloat16
유형은 많은 산술 연산과 변환에 대한 호스트 측 <에뮬레이션> 지원을 포함하여 사용성이 개선되었습니다. -
__half
및__nv_bfloat16
유형은 정수 유형과의 암묵적 변환을 제공하며, 이제 호스트 컴파일러에서 기본적으로 사용할 수 있습니다. 이러한 변환은 모호한 오버로드 해결로 인해 빌드 문제를 일으킬 수 있습니다. 사용자는 적절한 오버로드를 선택하도록 코드를 업데이트하는 것이 좋습니다. 이러한 변환을 원하지 않으면 다음 매크로를 정의할 수 있습니다(이 매크로는 향후 CUDA 릴리스에서 제거될 예정입니다).-
__CUDA_FP16_DISABLE_IMPLICIT_INTEGER_CONVERTS_FOR_HOST_COMPILERS__
-
__CUDA_BF16_DISABLE_IMPLICIT_INTEGER_CONVERTS_FOR_HOST_COMPILERS__
-
-
-
해결된 문제
-
진행 중인 테스트 과정에서 NVIDIA는 알고리즘 오류로 인해 기본 '가장 가까운 짝수로 반올림' 모드에서 64비트 부동 소수점 나눗셈 연산을 수행할 때 무한대까지 잘못된 오버플로가 발생할 수 있음을 확인했습니다. NVIDIA는 엄격한 IEEE754 준수를 요구하는 모든 개발자에게 CUDA 툴킷 12.2 이상으로 업데이트할 것을 권장합니다. 영향을 받는 알고리즘은 오프라인 컴파일과 JIT(Just-In-Time) 컴파일 모두에서 발견되었습니다. JIT 컴파일은 드라이버에서 처리되므로, IEEE754 준수가 필요하고 JIT를 사용하는 경우 R535(Windows에서는 R536) 이상의 드라이버 버전으로 업데이트할 것을 권장합니다. 이는 소프트웨어 알고리즘 수정 사항이며 특정 하드웨어에 국한되지 않습니다.
-
__expf()
단일 정밀도 내재 함수 와__exp10f()
이중 정밀도 함수에 대해 관찰된 최악의 경우 오차 한계를 업데이트했습니다asinh()
.acosh()
-
2.5.8. CUDA 수학: 릴리스 12.1
-
새로운 기능
-
atanf
,acosf
,asinf
,sinpif
,cospif
,powf
,erff
, 및 에서 성능과 정확도가 향상되었습니다tgammaf
.
-
2.5.9. CUDA 수학: 릴리스 12.0
-
새로운 기능
-
새로운 DPX 명령어의 성능 이점을 보여주는 새로운 정수/fp16/bf16 CUDA 수학 API가 도입되었습니다. https://docs.nvidia.com/cuda/cuda-math-api/index.html 을 참조하세요 .
-
-
알려진 문제
-
기본 '가장 가까운 짝수로 반올림' 모드에서 배정밀도 나눗셈 알고리즘을 유발하는 배정밀도 입력은 잘못된 오버플로를 발생시킵니다. 즉, 예상한 위치에 무한 결과가 전달됩니다. 영향을 받는 CUDA 수학 API: . 영향을 받는 CUDA 언어 연산: 장치 코드의 배정밀도/연산.
DBL_MAX 0x7FEF_FFFF_FFFF_FFFF
__ddiv_rn()
-
-
사용 중단
-
이전에 사용되지 않고 문서화되지 않은 모든 API는 CUDA 12.0에서 제거되었습니다.
-
2.6. NVIDIA 성능 프리미티브(NPP)
2.6.1. NPP: 릴리스 12.4
-
사용 중단
-
CTX가 아닌 API는 더 이상 사용되지 않으며 CUDA Toolkit 13.0 에서 제거될 예정입니다 .
-
이 API는 향후 릴리스에서 더 이상 지원되지 않습니다. 개발자는 NPP 문서 - 일반 규칙 및 StreamContexts 예제 에 설명된 구조를 사용하여 애플리케이션 관리 스트림 컨텍스트
nppGetStreamContext()
로 전환하는 것이 좋습니다 .NppStreamContext
-
-
해결된 문제
-
nppiTranspose
이제 GPU 스트리밍 멀티프로세서가 처리할 수 있는 수준까지 확장하여 더 큰 차원을 지원합니다. [ 4911722 , 4807542 ] -
nppiDistanceTransformPBA_8u16u_C1R_Ctx
. [ 4832970 ] 의 거리 계산 버그가 수정되었습니다 . -
NPP
ResizeSqrPixel
API의 성능 문제가 해결되어 성능이 향상되었습니다. -
API 에 대해 성능 개선이 구현되었습니다
nppiCrossCorrelation
. [ 4801572 ] -
nppiYUVToRGB_8u_C3R
이제 블록 선형 포맷 입력을 지원합니다. [ 4667704 ] -
nppiFilterGaussAdvanced
출력 피치가 512로 설정된 경우 잘못된 결과가 생성되는 문제가 해결되었습니다 . [ 4861931 ]
-
-
새로운 기능
-
. 을 통한 대용량 파일 지원이 향상되었습니다
size_t
.
-
2.6.2. NPP: 릴리스 12.0
-
사용 중단
-
다음 릴리스부터 CTX가 아닌 API 지원이 중단됩니다.
-
-
해결된 문제
-
NPP
ResizeSqrPixel
API의 성능 문제가 해결되어 성능이 향상되었습니다.
-
2.7. nvJPEG 라이브러리
2.7.1. nvJPEG: 릴리스 12.9
-
새로운 기능
-
NVIDIA Jetson Thor 하드웨어(Blackwell SM 10.1 아키텍처)에 하드웨어 가속 JPEG 인코딩 지원이 추가되었습니다. 서브샘플링 매개변수가 420(RGB/YUV/NV12 입력의 경우)으로 설정되고 입력 서브샘플링도 420(YUV/NV12 입력의 경우)인 경우 하드웨어 인코딩이 사용됩니다. 하드웨어 인코딩을 사용할 수 없는 경우 CUDA 인코딩으로 대체됩니다. 하드웨어 인코딩에 대한 추가 조건은 해당 설명서에 설명되어 있습니다.
-
하드웨어 엔진과 CUDA 모두에 대해 NV12와 YUY2라는 두 가지 새로운 포맷에 대한 JPEG 디코딩 지원이 추가되었습니다. NV12의 경우 크로마 서브샘플링은 420, YUY2의 경우 422여야 합니다.
-
새로운 공개 구조체 및 열거형:
-
nvjpegEncBackend_t
값: NVJPEG_ENC_BACKEND_DEFAULT, NVJPEG_ENC_BACKEND_GPU 및 NVJPEG_ENC_BACKEND_HARDWARE -
NVJPEG_OUTPUT_NV12, NVJPEG_OUTPUT_YUY2
-
NVJPEG_INPUT_YUV, NVJPEG_INPUT_NV12
-
-
새로운 API:
-
nvjpegEncoderStateSetBackend
: 인코더 백엔드를 설정합니다 -
nvjpegGetHardwareEncoderInfo
: 사용 가능한 하드웨어 인코더 엔진의 수를 쿼리합니다. -
nvjpegEncode
: 하드웨어 인코딩에는 .nvjpegEncodeYUV
가 필요합니다nvjpegEncodeImage
.nvjpegEncode
-
-
-
해결된 문제
-
RGB에서 인코딩할 때 입력 피치는 더 이상 수평 서브 샘플링 요소의 배수가 될 필요가 없으므로 사용자가 특별히 처리할 필요가 없습니다. [ 4363416 ]
-
CPU 백엔드를 사용하여 프로그레시브 JPEG를 디코딩할 때 간헐적으로 8x8 블록이 손상되는 문제가 해결되었습니다. [ 4829300 ]
-
매우 큰 이미지를 디코딩할 때 범위를 벗어난 쓰기 문제가 해결되었습니다. [ 4872523 ]
-
-
사용 중단
-
nvjpegEncoderParamsCopyHuffmanTables
다음 주요 릴리스에서 제거될 예정입니다.
-
2.7.2. nvJPEG: 릴리스 12.8
-
새로운 기능
-
NVIDIA Blackwell 아키텍처 GPU에 대한 nvJPEG에 하드웨어 가속 JPEG 디코딩 지원이 추가되었습니다.
-
nvJPEG 라이브러리는 이제 인코딩 시 GPU 메모리 사용량을 크게 줄여 이미지 크기와 크로마 서브샘플링 모드에 따라 30%에서 50%까지 메모리를 절약합니다. 5MB(약 2K x 1K 픽셀)보다 큰 이미지와 4:2:2 및 4:2:0과 같은 일반적인 서브샘플링 모드를 사용하는 경우 메모리 절약률은 약 50%입니다. 또한, nvJPEG는 크거나 복잡한 이미지를 처리할 때 인위적으로 메모리를 소모하지 않으므로 안정성과 성능이 향상됩니다.
-
-
해결된 문제
-
크기가 25픽셀 미만인 매우 작은 이미지의 올바른 인코딩을 방해하는 nvJPEG의 문제가 해결되었습니다. [ 4655922 ]
-
. [ 4663831 ]
nvjpegDecodeJpegHost
을 사용하여 잘린 JPEG 파일을 디코딩할 때 범위를 벗어난 읽기가 발생하는 문제를 해결했습니다 .NVJPEG_BACKEND_GPU_HYBRID backend
-
2.7.3. nvJPEG: 릴리스 12.4
-
새로운 기능
-
단일 이미지 CUDA 디코드를 위한 IDCT 성능 최적화.
-
Zero Copy 동작이 변경되었습니다.
NVJPEG_FLAGS_REDUCED_MEMORY_DECODE_ZERO_COPY
플래그를 설정해도 더 이상 활성화되지 않습니다NVJPEG_FLAGS_REDUCED_MEMORY_DECODE
.
-
2.7.4. nvJPEG: 릴리스 12.3 업데이트 1
-
새로운 기능
-
새로운 API:
nvjpegBufferPinnedResize
이를 통해nvjpegBufferDeviceResize
고정된 버퍼와 장치 버퍼를 사용하기 전에 크기를 조정할 수 있습니다.
-
2.7.5. nvJPEG: 릴리스 12.2
-
새로운 기능
-
JPEG 무손실 디코드(프로세스 14, FO 예측)에 대한 지원이 추가되었습니다.
-
nvJPEG가 이제 L4T에서 지원됩니다.
-
2.7.6. nvJPEG: 릴리스 12.0
-
새로운 기능
-
nvJPEG 코덱에 대한 GPU 메모리 최적화가 개선되었습니다.
-
-
해결된 문제
-
nvJPEGDecMultipleInstances
많은 수의 스레드로 테스트했을 때 런타임 오류가 발생하는 문제가 해결되었습니다. -
CMYK 4가지 구성 요소 색상 변환 문제가 이제 해결되었습니다.
-
-
알려진 문제
-
백엔드
NVJPEG_BACKEND_GPU_HYBRID
- 추가 스캔 길이가 있는 비트스트림을 처리할 수 없습니다.
-
-
사용 중단
-
Encoder에서 Huffman 테이블의 재사용(
nvjpegEncoderParamsCopyHuffmanTables
).
-
- 1
-
선택된 Linux 배포판에서만 사용 가능
3. 공지사항
3.1. 공지
본 문서는 정보 제공 목적으로만 제공되며, 제품의 특정 기능, 상태 또는 품질에 대한 보증으로 간주되지 않습니다. NVIDIA Corporation("NVIDIA")은 본 문서에 포함된 정보의 정확성이나 완전성에 대해 명시적 또는 묵시적으로 어떠한 진술이나 보증도 하지 않으며, 여기에 포함된 오류에 대해 책임을 지지 않습니다. NVIDIA는 해당 정보의 사용 또는 그 사용으로 인해 발생할 수 있는 제3자의 특허 또는 기타 권리 침해에 대해 어떠한 책임도 지지 않습니다. 본 문서는 자료(아래 정의됨), 코드 또는 기능을 개발, 배포 또는 제공하겠다는 약속이 아닙니다.
NVIDIA는 사전 통지 없이 언제든지 이 문서에 대한 수정, 변경, 향상, 개선 및 기타 변경을 할 권리가 있습니다.
고객은 주문하기 전에 최신 관련 정보를 입수해야 하며, 해당 정보가 최신이고 완전한지 확인해야 합니다.
NVIDIA 제품은 주문 확인 시 제공되는 NVIDIA 표준 판매 약관에 따라 판매됩니다. 단, NVIDIA와 고객의 공식 담당자가 서명한 개별 판매 계약서("판매 약관")에서 별도로 합의한 경우는 예외입니다. NVIDIA는 본 문서에 언급된 NVIDIA 제품 구매와 관련하여 고객에게 일반 약관을 적용하는 것에 명시적으로 반대합니다. 본 문서는 직간접적으로 어떠한 계약상 의무도 발생시키지 않습니다.
NVIDIA 제품은 의료, 군사, 항공기, 우주 또는 생명 유지 장비에 사용하기에 적합하도록 설계, 승인 또는 보증되지 않으며, NVIDIA 제품의 고장 또는 오작동으로 인해 개인 상해, 사망 또는 재산 또는 환경 피해가 발생할 것으로 합리적으로 예상되는 용도에도 적합하지 않습니다. NVIDIA는 이러한 장비 또는 용도에 NVIDIA 제품을 포함하거나 사용하는 것에 대해 어떠한 책임도 지지 않으므로, 이러한 포함 및/또는 사용은 고객의 책임입니다.
NVIDIA는 이 문서에 기반한 제품이 특정 용도에 적합하다는 진술이나 보증을 하지 않습니다. 각 제품의 모든 매개변수에 대한 테스트는 반드시 NVIDIA에서 수행하는 것은 아닙니다. 이 문서에 포함된 정보의 적용 가능성을 평가하고 결정하고, 제품이 고객이 계획한 응용 프로그램에 적합하고 적합한지 확인하고, 응용 프로그램이나 제품의 기본값을 방지하기 위해 응용 프로그램에 필요한 테스트를 수행하는 것은 전적으로 고객의 책임입니다. 고객 제품 설계의 약점은 NVIDIA 제품의 품질과 신뢰성에 영향을 미칠 수 있으며 이 문서에 포함된 것 이상의 추가적 또는 다른 조건 및/또는 요구 사항을 초래할 수 있습니다. NVIDIA는 (i) 이 문서에 반하는 방식으로 NVIDIA 제품을 사용하는 경우 또는 (ii) 고객 제품 설계를 기반으로 하거나 기인할 수 있는 기본값, 손상, 비용 또는 문제와 관련하여 책임을 지지 않습니다.
본 문서에 명시된 NVIDIA 특허권, 저작권 또는 기타 NVIDIA 지적 재산권에 따라 명시적이든 묵시적이든 어떠한 라이선스도 부여되지 않습니다. NVIDIA가 타사 제품 또는 서비스와 관련하여 게시한 정보는 해당 제품 또는 서비스를 사용할 수 있는 NVIDIA의 라이선스 또는 그에 대한 보증이나 지지를 의미하지 않습니다. 이러한 정보를 사용하려면 타사의 특허 또는 기타 지적 재산권에 따라 타사의 라이선스가 필요하거나, NVIDIA의 특허 또는 기타 지적 재산권에 따라 NVIDIA의 라이선스가 필요할 수 있습니다.
이 문서의 정보를 재생산하는 것은 NVIDIA가 사전에 서면으로 승인을 한 경우에만 허용되며, 변경 없이 재생산하고 모든 해당 수출법 및 규정을 완전히 준수하며 모든 관련 조건, 제한 및 고지를 첨부해야 합니다.
본 문서와 모든 NVIDIA 설계 사양, 참조 보드, 파일, 도면, 진단, 목록 및 기타 문서(이하 "자료")는 "있는 그대로" 제공됩니다. NVIDIA는 자료와 관련하여 명시적, 묵시적, 법적 또는 기타 어떠한 보증도 하지 않으며, 비침해, 상품성 및 특정 목적에의 적합성에 대한 모든 묵시적 보증을 명시적으로 부인합니다. 법률에 의해 금지되지 않는 한, 어떠한 경우에도 NVIDIA는 직접적, 간접적, 특별, 우발적, 징벌적 또는 결과적 손해를 포함하되 이에 국한되지 않는 모든 손해에 대해 책임을 지지 않습니다. 이는 원인과 책임 이론에 관계없이 NVIDIA가 그러한 손해의 가능성을 사전에 알고 있었더라도 이 문서의 사용으로 인해 발생하는 모든 손해에 대해 책임을 지지 않습니다. 어떤 이유로든 고객이 입을 수 있는 손해에도 불구하고, 여기에 설명된 제품에 대한 고객에 대한 NVIDIA의 총체적이고 누적된 책임은 해당 제품의 판매 약관에 따라 제한됩니다.
3.2. 오픈CL
OpenCL은 Apple Inc.의 상표이며 Khronos Group Inc.에 라이선스 하에 사용됩니다.
3.3. 상표
NVIDIA와 NVIDIA 로고는 미국 및 기타 국가에서 NVIDIA Corporation의 상표 또는 등록 상표입니다. 다른 회사명 및 제품명은 해당 회사와 관련된 해당 회사의 상표일 수 있습니다.