Puzzle 5: 브로드캐스트
개요
벡터 a와 b를 브로드캐스트(broadcast)로 더해 2D 행렬 output에 저장하는 커널을 구현해 보세요.
병렬 프로그래밍에서 브로드캐스트란 요소별 연산을 할 때 저차원 배열을 고차원 배열의 형상에 맞게 자동으로 확장하는 것을 말합니다. 실제로 메모리에 데이터를 복제하지 않고, 추가 차원에 걸쳐 값을 논리적으로 반복하는 방식입니다. 예를 들어, 2D 행렬의 각 행(또는 열)에 1D 벡터를 더할 때 벡터를 여러 번 복사하지 않아도 같은 요소가 자동으로 반복 적용됩니다.
참고: 스레드 수가 행렬의 위치 수보다 많습니다.
핵심 개념
- 벡터를 행렬로 브로드캐스트하기
- 2D 스레드 관리
- 서로 다른 차원 간 연산
- 메모리 레이아웃 패턴
구현 방식
🔰 원시 메모리 방식
수동 메모리 인덱싱으로 브로드캐스트를 처리하는 방법을 알아봅니다.
📐 LayoutTensor 버전
서로 다른 차원 간 연산을 LayoutTensor로 처리합니다.
💡 참고: 수동 인덱싱과 비교했을 때 LayoutTensor가 브로드캐스트를 얼마나 간단하게 만들어주는지 확인해 보세요.