@select — 벡터 요소를 조건에 따라 골라 담기
@select — 벡터 요소를 조건에 따라 골라 담기
벡터끼리 섞어서 조건에 맞는 요소를 골라 새 벡터를 만들고 싶을 때 쓰는 내장 함수예요. 참/거짓 예측 벡터가 각 자리를 누구를 가져올지 결정해 줘요.
본문
@select는 두 벡터의 요소를 요소별로(element-wise) 골라서 새 벡터를 만들어요. 어느 벡터의 값을 가져올지는 예측 벡터 pred가 정해요.
@select(comptime T: type, pred: @Vector(len, bool), a: @Vector(len, T), b: @Vector(len, T)) @Vector(len, T)
동작을 하나씩 뜯어볼게요. pred, a, b 세 벡터가 전부 같은 길이 len이에요. 결과 벡터의 i번째 요소는 이렇게 정해져요.
pred[i]가true면 → 결과의i번째 요소는a[i]pred[i]가false면 → 결과의i번째 요소는b[i]
즉 pred는 "이 자리에서는 a를 가져올까, b를 가져올까"를 자리마다 찍어주는 스위치 역할을 하는 거예요. 마치 각 인덱스마다 조건문을 돌려서 골라 넣은 것과 같은 결과가 되죠. 벡터를 통째로 다루니 반복문 없이도 한 번에 끝낼 수 있어요.
더 알아보기(Learn more)
- Vectors — 벡터 타입과 요소별 연산에 대한 자세한 설명