투표와 선택 함수
워프 전체에서 조건식을 확인합니다.
투표와 선택 함수은(는) CoddyKit의 무료 CUDA Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 CUDA Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. CUDA Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
레인은 투표할 수 있습니다
데이터를 옮기는 것뿐 아니라 워프는 예·아니오 질문에도 함께 답할 수 있습니다. Vote 내장 함수를 사용하면 모든 레인이 참 또는 거짓 조건을 한 번의 저렴한 단계로 공유할 수 있습니다.
ballot_sync 알아보기
가장 유연한 투표 방식은 ballot_sync입니다. 이 함수는 32비트 숫자를 반환하며, 레인 i의 조건이 참일 때 정확히 비트 i가 1이 됩니다.
unsigned bits = __ballot_sync(mask, pred);레인마다 하나의 비트
반환된 정수는 워프를 나타내는 작은 bitmap입니다. 비트 i를 읽으면 레인 i가 참에 투표했는지 알 수 있으며, 모든 정보가 하나의 레지스터에 담깁니다.
참인 값 세기
몇 개의 레인이 예라고 답했는지 알고 싶으신가요? ballot 결과의 팝카운트를 계산하십시오. popc는 설정된 비트 수를 세어 워프에서 참인 투표의 개수를 즉시 알려 줍니다.
int yes = __popc(__ballot_sync(mask, pred));모두 또는 하나라도
두 가지 단축 함수로 흔한 질문에 답할 수 있습니다. all_sync는 모든 레인이 동의한 경우에만 true를 반환하고, any_sync는 하나 이상의 레인이 동의하면 true를 반환합니다.
bool every = __all_sync(mask, pred);Any는 하나 이상을 뜻합니다
조기 종료에는 any_sync를 사용하십시오. 어느 레인 하나라도 일치하는 값을 찾으면 레인을 하나씩 검사하지 않고 전체 워프가 함께 반응할 수 있습니다.
bool found = __any_sync(mask, pred);스트림 압축
ballot은 compaction을 가능하게 합니다. 각 레인이 자신의 요소를 유지할지 결정하고 투표하면, 비트맵이 레인들이 압축된 출력 배열의 어디에 기록할지 알려 줍니다.
내 슬롯 찾기
값을 배치하려면 레인은 자신의 위치보다 앞에 있는 참 비트의 개수를 셉니다. ballot에서 얻은 이 prefix count가 압축된 결과에서의 인덱스입니다.
int slot = __popc(bits & ((1u << lane) - 1));리더 레인 선택하기
때로는 한 레인이 공통 작업을 수행해야 합니다. ffs로 찾은 ballot의 가장 낮은 설정 비트가 자연스러운 리더가 되며, 워프 전체가 이에 동의할 수 있습니다.
항상 마스크 전달하기
셔플과 마찬가지로 vote 내장 함수에도 활성 mask가 필요합니다. 비활성 레인은 0 비트를 제공하므로, 존재하지 않는 레인을 세지 않도록 올바른 집합을 전달하십시오.
저렴한 조정
투표는 하나의 명령어만 사용하며 메모리에 접근하지 않습니다. 따라서 워프가 원자 연산이나 공유 메모리 플래그보다 훨씬 저렴하게 결정을 coordinate할 수 있습니다.
빠른 확인
ballot_sync가 각 레인에 무엇을 반환하는지 떠올려 보십시오.
복습
ballot과 vote로 워프를 조사했습니다. 참인 값을 세고, 모두 또는 하나라도 참인지 확인하며, 스트림을 저렴하게 압축했습니다. 다음 주제는 유연한 동기화를 위한 협력 그룹입니다. ✨
AI 튜터와 함께 C++을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 30
- 레슨
- 120
자주 묻는 질문
“투표와 선택 함수” 강의는 무료인가요?
네 — “투표와 선택 함수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 CUDA Academy 강의 전체를 잠금 해제할 수 있습니다. CUDA Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“투표와 선택 함수”에서 뭘 배우나요?
워프 전체에서 조건식을 확인합니다. 브라우저에서 직접 실행하는 실습 코드로 CUDA Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
CUDA Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 CUDA Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“투표와 선택 함수” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 CUDA Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 CUDA Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.