0.000000000000000000542%의 버그를 고치려 모든 나눗셈을 느리게 만들기
Futhark 컴파일러가 signed integer division의 오버플로를 피하도록 고치자 CUDA 성능이 특정 벤치마크에서 5,548μs에서 12,592μs로 느려졌습니다. 일반 벤치마크에서는 차이가 측정되지 않았지만, 모든 나눗셈에 추가된 분기 때문에 GPU 코드 생성이 달라지는 사례를 보여줍니다.
언어와 프레임워크, SDK와 개발 방식·도구의 변화를 다룹니다.
Futhark 컴파일러가 signed integer division의 오버플로를 피하도록 고치자 CUDA 성능이 특정 벤치마크에서 5,548μs에서 12,592μs로 느려졌습니다. 일반 벤치마크에서는 차이가 측정되지 않았지만, 모든 나눗셈에 추가된 분기 때문에 GPU 코드 생성이 달라지는 사례를 보여줍니다.
Futhark 프로그램에서 순차적인 그래프 색칠은 CPU로, 대규모 병렬 Jacobian 계산은 GPU로 실행해야 하는 문제가 생겼습니다. 컴파일러가 메모리 위치를 자동으로 최적화하는 대신, 작성자는 함수에 #[cpu_function] 속성을 붙여 해당 함수의 계산과 중간 배열을 CPU에서 처리하도록 구현했습니다.
TileLang은 Python과 비슷한 문법으로 GEMM, FlashAttention 같은 연산 커널을 작성하고 TVM 기반 컴파일러로 하드웨어별 코드를 생성하는 도메인 특화 언어입니다. CUDA를 중심으로 ROCm, Metal, CPU 등 여러 백엔드를 지원하며, 커널 개발과 컴파일 과정의 도구도 함께 제공합니다.
p5.js의 셰이더 시스템 p5.strands가 컴퓨트 셰이더까지 확장됩니다. 익숙한 JavaScript 문법으로 픽셀 필터와 정점 변형부터 GPU 병렬 연산까지 단계적으로 익히며, 글에서는 WebGPU로 보이드(boids) 1만 개를 실행한 사례도 소개합니다.