CUDA SM80 이상에서 torch.fft·torch.stft를 bfloat16으로 돌리면 지원 크기는 cuFFT 네이티브로 갑니다 | DAKER 커뮤니티

FFT bfloat16
설명용 생성 이미지입니다.

한 줄 요약
PyTorch 2.14는 CUDA에서 torch.fft 계열과 torch.stft에 bfloat16 입력을 받습니다. 네이티브 cuFFT bfloat16 경로는 SM80 이상·2의 거듭제곱 변환 길이에서 열리고, 그 밖은 float32로 승격됩니다. 스펙트로그램·주파수 도메인 전처리를 낮은 정밀도로 맞추려는 실험에 오늘 바로 쓸 수 있습니다.

짧은 1D·2D FFT와 STFT 한 세트를 float32와 bfloat16으로 같은 길이에서 돌리십시오. 지원 조건(SM80+, power-of-two)과 비지원 길이에서 dtype·오차·커널 시간을 비교하면 됩니다. 노트에는 디바이스 capability, 변환 길이, 승격 여부를 남깁니다.

재현해 볼 실험 조건

  1. SM80 이상 GPU에서 power-of-two 길이의 torch.fft.fft·rfft를 bfloat16 입력으로 실행하고 dtype·시간을 기록합니다.
  2. 같은 입력을 비 power-of-two 길이로 바꿔, float32 승격이 일어나는지 확인합니다.
  3. torch.stft에도 동일 dtype 실험을 적용해, 스펙트로그램 경로의 정밀도·지연을 비교합니다.

CPU FFT는 저정밀 dtype을 계속 거부하므로, 오늘은 CUDA 경로만 봅니다. NVGEMM·복소 컴파일 글과도 축이 다릅니다.

실무에서 바로 볼 포인트

관련 DAKER 학습

설명용 생성 이미지입니다. 동작은 로컬 CUDA에서 길이·dtype 조합을 비교해 확인하십시오.