Performance evaluation of branch-free fused multiply-add algorithms for multi-component-type multiple-precision floating-point arithmetic
본 논문은 조건부 분기를 제거함으로써 기존 방식보다 더 높은 성능 향상을 달성함을 입증하며, 더블 워드, 트리플 워드 및 쿼드러플 워드 다중 정밀 산술을 위한 새로운 분기 없는 융합 곱셈-누산 알고리즘을 제안하고 벤치마킹한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
당신이 오직 표준적인 기성품 레고 브릭만을 사용하여 초정밀 계산기를 만들려고 한다고 상상해 보십시오. 이 브릭들은 당신의 컴퓨터가 사용하는 일반적인 부동 소수점 숫자들입니다. 보통, 이 브릭들을 쌓아 "더블 워드(double-word, 두 개의 브릭)", "트리플 워드(triple-word, 세 개의 브릭)", 또는 "쿼드러플 워드(quadruple-word, 네 개의 브릭)" 숫자를 만들 때, 당신은 브릭을 쌓는 동안 끊임없이 부품의 크기를 확인해야 합니다. 만약 부품이 너무 크거나 작으면, 당신은 멈춰서, 잠시 쉬었다가, 스택을 다시 재배치해야 합니다. 컴퓨터 칩의 세계에서 이러한 "멈춤"은 **분기(branches)**라고 불립니다.
당신이 한 번에 수백만 개의 스택을 동시에 만들려고 할 때(현대적인 그래픽 카드나 강력한 프로세서처럼), 이러한 멈춤은 악몽이 됩니다. 이것은 마치 모든 자동차가 움직이기 전에 서로 다른 표지판을 확인하기 위해 멈춰 서야 하는 교통 체증과 같습니다. 어떤 차는 왼쪽으로 가고, 어떤 차는 오른쪽으로 가면서 전체 행렬이 멈춰버립니다. 이것을 "레인 다이버전스(lane divergence, 경로 이탈)"라고 하며, 이는 성능을 저하시킵니다.
위대한 발견: "멈춤 없는" 고속도로
Tomonori Kouya의 논문은 절대 "표지판을 확인하기 위해 멈추지 않는" 새로운 방식으로 스택을 만드는 방법을 소개합니다. 이것은 "분기 없는(branch-free)" 알고리즘입니다. "이 부품이 충분히 큰가?"라고 묻고 답을 기다리는 대신, 이 새로운 방법은 부품이 어떤 모습이든 완벽하게 작동하는 영리하고 미리 계획된 경로를 사용합니다.
이 논문은 이 새로운 경로가 모든 표준 컴퓨터 형식에 대해 안전하고 정확하다는 것을 초지능 로봇 수학자(FPANVerifier라는 SMT 솔버)를 사용하여 증명합니다. 핵심적인 발견은 이러한 "멈춰서 확인하는" 과정을 제거함으로써 컴퓨터가 훨씬 더 빠르게 계산할 수 있다는 것입니다.
마법의 기술: 동작의 융합
이 논문은 **Fused Multiply-Add (FMA)**라고 불리는 특정 동작에 집중합니다. 곱셈을 한 뒤에 덧셈을 해야 하는 상황을 상상해 보십시오. 보통, 당신은 이를 두 단계로 수행합니다:
- 곱셈 (그리고 아마도 결과를 수정하기 위해 잠시 멈춤)
- 덧셈 (그리고 아마도 다시 잠시 멈춤)
저자는 이 두 가지를 하나의 매끄러운 동작으로 수행하는 "융합된(Fused)" 버전을 제안합니다. 마치 닌자가 칼을 던지고 동시에 받는 것과 같습니다.
- 더블 워드 (2개의 브릭): 기존 방식은 29단계가 걸렸습니다. 새로운 방식은 단 17단계가 걸립니다.
- 트리플 워드 (3개의 브릭): 기존 방식은 96단계가 걸렸습니다. 새로운 방식은 66단계가 걸립니다.
- 쿼드러플 워드 (4개의 브릭): 기존 방식은 209단계가 걸렸습니다. 새로운 방식은 146단계가 걸립니다.
이 논문은 다른 연구자들이 제안한 "지름길(shortcut)" 방법(6단계 방법)에 대해서도 논의합니다. 결정적으로, 이 지름길은 일반적으로 유효하지 않습니다. 그것은 숫자들이 이미 특정한 방식으로 완벽하게 배치되어 있을 때(구체적으로, 더해지는 숫자가 곱의 결과보다 최소 2배 이상 클 때)만 작동하는 고속 도구입니다. 만약 당신이 이 지름길을 나눗셈이나 제곱근처럼 숫자의 배치가 보장되지 않는 일반적인 수학 문제에 사용하려고 한다면, 정확도가 심각하게 떨어집니다. 저자의 새로운 방법은 특별한 배치 없이도 모든 숫자에 대해 작동하며, 따라서 일반적인 고정밀 수학을 위한 진정한 "드롭인(drop-in)" 대체제 역할을 합니다.
우리는 얼마나 확신하는가?
저자들은 매우 확신하고 있으며, 단순히 추측하는 것이 아니라 강력한 증거로 이를 뒷받침합니다.
- 기계 검증: 그들은 단순히 코드를 작성하고 희망을 품은 것이 아닙니다. 그들은 컴퓨터 프로그램을 사용하여 새로운 방법의 오차가 매우 작다는 것(가 단일 숫자의 미세한 반올림 오차일 때, , , 와 같은 공식으로 제한됨)을 수학적으로 증명했습니다.
- 어디서나 테스트됨: 그들은 이 새로운 알고리즘을 두 가지 매우 다른 슈퍼컴퓨터인 **Arm 기반 칩(GB10)**과 **Intel 기반 칩(H100)**에서 실행했습니다.
- 결과:
- Arm 칩에서, 새로운 방법은 나눗셈 및 제곱근 계산에서 1.5 ~ 2.1배 더 빨랐습니다.
- Intel 칩에서, 새로운 방법은 나눗셈 및 제곱근 계산에서 1.2 ~ 1.6배 더 빨랐습니다.
- 행렬 곱셈(GEMM)과 같은 큰 수학 작업의 경우, Arm 칩에서의 속도 향상은 더욱 극적이었으며, 트리플 워드 숫자에 대해 최대 2.0배 더 빨라졌습니다.
"정확한" 대안
이 논문은 이 기술의 더 정밀한 버전인 Exact FMA에 대해서도 언급합니다. 이 버전은 훨씬 더 정밀하지만, 무거운 대가를 치러야 합니다: 이 방식은 제안된 새로운 방법보다 6 ~ 11배 더 느립니다. 저자들은 최고 수준의 정확도가 반드시 필요한 경우에만 이 "Perfect" 버전을 사용할 것을 권장합니다. 그 외의 거의 모든 경우에는 "분기 없는(branch-free)" 방식이 승자입니다.
"옛날" 방식은 어떠했는가?
이 논문은 이전 연구 버전의 실수 하나를 바로잡기도 합니다. 이전에 저자들은 자신들의 새로운 방법을 매우 느리고 비효율적인 "완전히 증류된(fully distilled)" 옛날 방식과 비교했습니다. 그들은 그것이 공정한 대결이 아니라는 것을 깨달았습니다. 새로운 방법을 실제 "분기 없는(branch-free)" 표준 방식(이미 꽤 빠른 방식)과 비교했을 때, 새로운 방법이 여전히 승리했지만 속도 향상은 더 완만했습니다 (약 1.3 ~ 1.7배 더 빠름). 이것은 여전히 거대한 승리이지만, 더 현실적인 결과입니다.
핵টি 요점
이 논문은 고정밀 수학에서 "멈춰서 확인하는" 분기를 제거함으로써, 정확도를 잃지 않고도 컴퓨터를 훨씬 더 빠르게 만들 수 있음을 보여줍니다. 이것은 마치 모든 교차로에서 멈춰야 하는 자동차에서 교차로 위를 날아다닐 수 있는 자동차로 업그레이드하는 것과 같습니다. 저자들은 이것이 작동함을 증명했고, 실제 하드웨어에서 테스트했으며, 차세대 초고속 계산기를 위해 준비되었음을 보여주었습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.