GPU 프로그래밍
GPU의 SIMT(단일 명령·다중 스레드) 방식과 CPU의 SIMD 명령의 차이로 올바른 것은?
- ASIMT는 하나의 데이터에 여러 명령을 동시에 수행하고, SIMD는 하나의 명령을 하나의 데이터에 수행한다
- BSIMT와 SIMD는 완전히 같은 것이며 이름만 다르다
- CSIMT에서는 각 스레드를 독립된 프로그램으로 작성할 수 있고 분기도 하드웨어가 처리하지만, SIMD에서는 프로그래머나 컴파일러가 폭이 정해진 벡터 명령을 명시적으로 사용한다
정답과 해설 보기
정답: C. SIMT에서는 각 스레드를 독립된 프로그램으로 작성할 수 있고 분기도 하드웨어가 처리하지만, SIMD에서는 프로그래머나 컴파일러가 폭이 정해진 벡터 명령을 명시적으로 사용한다
CPU의 SIMD에서는 4개나 8개의 데이터를 묶은 벡터 레지스터에 하나의 명령을 적용하므로, 프로그램은 벡터 폭을 의식하여 작성합니다. GPU의 SIMT에서는 프로그래머가 하나의 스레드 처리를 평범하게 작성하면 하드웨어가 32개씩 묶어 같은 명령으로 실행합니다. 스레드별로 분기해도 되며 하드웨어가 갈라진 경로를 차례로 실행하지만, 이때는 효율이 떨어집니다.