Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

텐서 매핑

매핑은 논리적 순서와 물리적 배치를 결정하는 기준입니다. 이동 연산이나 계산 연산을 선택하기 전에 매핑의 셀과 차원을 검증하십시오. 모든 매핑 표현식은 논리 인덱스를 물리적 위치에 매핑합니다. 이동 연산이나 계산 연산을 선택하기 전에 위치 셀 요약에 정의된 결과 범주를 읽으십시오.

차원 배치와 리덕션

이 표는 이동 연산이나 계산 연산을 선택하기 전에 축을 배치합니다.

차원타입정의 위치리덕션 위치
Chip공간HBM, DM, StreamDMA + Vector
Cluster공간DM, StreamDMA + Vector
Slice공간DM, StreamVector
Lane공간TRFContraction
Time시간StreamContraction
Packet공간스트림축약

Chip과 Cluster 리덕션은 DMA 재분배 후 Vector Engine 리덕션을 수행합니다.

매핑 순서와 성능

텐서에는 값이 있지만 고유한 저장 순서는 없습니다. 매핑은 그 순서를 정하며, 하드웨어 접근은 인접한 값이 연속된 버퍼 위치를 차지할 때 가장 효율적입니다. 가장 바깥쪽 매핑 차원은 major 차원이며 가장 느리게 변합니다. 가장 안쪽 차원은 minor 차원이며 가장 빠르게 변합니다. 높이×너비 텐서에서 m![H, W]는 행을 연속되게 하고, m![W, H]는 열을 연속되게 합니다. 각 순서는 서로 다른 축을 따른 지역성에 유리합니다. H-major 매핑은 W를 따른 스캔을 연속되게 하고, W-major 매핑은 H를 따른 스캔을 연속되게 합니다. m![H / 2, W / 2, H % 2, W % 2]와 같은 타일링된 매핑은 작은 2차원 이웃 영역을 연속되게 배치하므로, H와 W 중 어느 쪽도 전역적으로 유일한 연속 방향이 되지 않습니다. 이는 어떤 접근 패턴이 가까운 버퍼 위치에 매핑되는지를 바꾸지만, 그 자체로 더 빠른 하드웨어 접근을 보장하지는 않습니다. 분할된 차원을 표현하는 데 필요한 추가 매핑 상태가 이 방식의 주된 추가 비용입니다.

따라서 축 H(6개 행)와 W(8개 열)에 대해 같은 값이라도 물리적 접근 패턴이 서로 다를 수 있습니다.

H\W01234567
0abcdefgh
1ijklmnop
2········
3········
4········
5········
  • H-major, W-minor: m![H, W] — W 방향 스캔은 연속적입니다. H 방향 스캔은 캐시 라인마다 값 하나에만 접근합니다.

    H=0 H=1 ...
    abcdefgh ijklmnop ...
  • W-major, H-minor: m![W, H] — H 축을 따라 스캔하면 연속적으로 접근합니다. W 축을 따라 스캔하면 캐시 라인마다 값 하나에만 접근합니다.

    W=0 W=1 W=2 ...
    ai···· bj···· ck···· ...
  • 2×2 타일: m![H / 2, W / 2, H % 2, W % 2] — H-major와 W-major는 각각 한 축을 따라서는 지역성을 희생합니다. 타일링은 작은 이웃 영역을 두 축 모두를 따라 연속적으로 배치하므로 지역성 분포가 달라지지만, 그 자체로 하드웨어 접근이 더 빨라진다고 보장하지는 않습니다. 분할된 차원에는 단순하지 않은 주소 공식과 추가 매핑 상태가 필요합니다.

    t(0,0) t(0,1) t(0,2) ...
    abij cdkl efmn ...

선택한 매핑은 이후 실행도 제약합니다. 할당 후에 표현의 순서를 바꾸려면 일반적으로 데이터를 복사하거나 전치해야 하므로, 할당 시점의 선택이 이후 연산에 영향을 줍니다. 하드웨어 기하 구조, 정렬, 스케줄링은 여전히 컴파일러 로워링이 고려해야 하는 아키텍처 제약 조건입니다. 매핑은 원시 주소 계산이 아니라 논리적 순서를 표현합니다. 장치별 정렬 검사가 적용되며, 정렬되지 않은 접근에는 read-modify-write 사이클이 필요할 수 있어 성능 비용이 상당합니다(영향을 받는 DM 접근에서 약 50배의 비용이 관측된 바 있습니다).

매핑은 이 선택을 기술적으로 완전하게 기술합니다. 물리적 표현은 해당 매핑으로부터 만들어지는 구체적인 버퍼, 장치 배치, 스트림 분해입니다. 같은 값은 논리적 텐서를 바꾸지 않고도 서로 다른 물리적 표현 사이를 이동할 수 있습니다.

위치 Cell 요약

모든 매핑 표현식은 물리적 위치를 Cell에 매핑합니다. 좌표를 해석하기 전에 먼저 결과 범주를 확인하십시오.

#![allow(unused)]
fn main() {
extern crate furiosa_opt_std;
extern crate furiosa_mapping;
use furiosa_opt_std::prelude::*;
axes![A = 4];
type E = m![A];

assert_eq!(E::map(0), i![A: 0]);
assert_eq!(E::map(4), Cell::OutOfBounds);
}

Cell::Index는 살아 있는 Index 항을 담습니다. Cell::OutOfBounds는 매핑 범위 밖의 위치를 나타냅니다. Cell::Padding은 매핑 표현식에서 패딩과 함께 소개합니다.

이 섹션에서는 결과 범주를 요약합니다. Cell을 확인한 후, 생성자와 API 문법은 매핑 표현식을 참고하십시오.

표현과 분산

물리적 표현

저장소 텐서와 스트림 텐서는 하나의 매핑을 여러 하드웨어 차원에 걸쳐 분할합니다. HBM 표현은 채널을 여러 Chip에 분산할 수 있습니다. DM 표현은 그 채널을 여러 Slice에 걸쳐 다시 분할할 수 있습니다. 스트림 표현은 나머지 차원을 Time과 Packet에 둘 수 있습니다. 공간 차원과 시간 차원에서는 하나의 NCHW 텐서가 이러한 표현을 거치는 과정을 구체적인 좌표 추적으로 따라갑니다.

이 표현 추적으로 이 장을 마무리합니다. 매핑을 선택하고, 각 물리적 표현을 도출한 다음, 추적한 Index의 값이 예상한 스트림 셀에 도달하는지 확인합니다. 텐서 값의 형식적 정의는 텐서 의미론에 있습니다. 이 장에서는 동작 중심으로 설명합니다.

표현에 대한 최소한의 계산은 Vector Engine을 참고하십시오. 요소별 연산은 해당 실행 API에서 다루며, 이 장에서는 매핑과 표현에 집중합니다.

공간과 시간에 걸친 분산

매핑 차원은 공간 하드웨어 차원(Chip, Cluster, Slice, Packet) 또는 시간 차원인 Time 루프에 명시적으로 할당됩니다. 이 이름들은 매핑이 어디에서 소비되는지를 나타낼 뿐이며, 별도의 표현 어휘가 아닙니다. 텐서 선언과 제약 조건은 공간 차원과 시간 차원을 참고하십시오.

할당은 파이프라인 전체가 아니라 한 단계에만 적용되며, Time과 공간 차원 사이에서 축을 옮기는 경로는 네 가지입니다.

경로이동 대상사용 가능 조건비용
Switch EngineSlice와 Time 사이에서 어느 방향으로든 옮기는 축 하나구성 중 하나가 Slice 배치를 표현하는 경우링 순회 ring_size × Time::SIZE × flits_per_packet 사이클
DMA원하는 배치로 기록하여 Chip, Cluster 또는 Slice로 옮기는 축 하나항상텐서 전체의 전송
Inter-Slice ReducerTime에서 리덕션된 축이 비운 Slice 슬롯으로 옮기는 축 하나스트림이 어차피 Slice 축에 대해 리덕션되는 경우해당 리덕션 외에는 없음
축 리프팅, 페치 시점Time에서 Chip, Cluster 또는 Slice로 옮기는 축선택한 차원이 브로드캐스트를 담고 있음원래의 읽기에 더해, Slice의 경우 DMA, 컨텍스트 로컬 덧셈, SFR 저장

Switch Engine은 아직 값을 갖고 있지 않은 Slice에도 값을 전달할 수 있으므로 Slice / Time 경계를 넘는 일반적인 경로입니다. Switch Engine은 Slice 사이에서만 동작하므로, 축을 Chip 또는 Cluster로 옮기려면 원하는 배치대로 쓰는 DMA가 필요합니다.

축 리프팅을 하려면 선택한 차원에 브로드캐스트가 있어야 합니다. 즉, 각 Chip, Cluster 또는 Slice가 이미 소스 영역을 갖고 있어야 합니다. 그러면 읽기 오프셋을 서로 다르게 하는 것만으로 데이터 전송 없이 축을 Time 밖으로 옮길 수 있습니다.

선언적 매핑 컨텍스트

선언적 매핑은 원시 스트라이드나 오프셋 대신 논리 축을 기준으로 순서를 나타냅니다. 위의 H×W 예제는 H-major 순서에 m![H, W], W-major 순서에 m![W, H], 2×2 타일에 m![H / 2, W / 2, H % 2, W % 2]를 사용합니다. 앞의 두 타일 차원은 타일을 식별하고, 뒤의 두 차원은 그 타일 안에서의 위치를 식별합니다.

매핑 표현식은 표준 표현으로 정규화할 수 있으므로, 동등한 생성자 형태를 더 쉽게 살펴볼 수 있습니다. 테스트된 정규화 속성과 그 한계는 동등한 매핑에 문서화되어 있습니다. 이 장은 보편적인 증명이나 유일한 표현을 주장하지 않습니다.


원문 © FuriosaAI · Programming Tensor Contraction Processors · Apache License 2.0 · NOTICE
yeokja 한국어 번역 · Anthropic 사의 claude-sonnet-5 모델을 활용하여 번역되었으며 학습을 모두 비허용한 상태로 작업하였습니다 · 이 문서는 원문을 수정한 비공식 번역본이며 Apache License 2.0으로 제공합니다.