작성자 | 김명원 |
일 시 | 2024. 11. 12 (화) 18:00 ~ 21:00 |
장 소 | 복지관 B-128-1호 |
참가자 명단 | 임혜진, 장원준, 이재영, 성창민, 김명원 |
사 진 |
1. 스레드 (Thread)
CUDA 장치에서 동시에 실행되는 코드와 관련된 상태를 가진 실행 단위를 정의한다. 여러 스
레드가 병렬로 실행된다.
CUDA에서는 스레드가 병렬 작업의 기본 단위로 사용된다. 많은 수의 스레드가 동
시에 실행되어 데이터를 병렬로 처리한다.
CUDA 스레드는 CPU 스레드에 비해 생성 비용, 자원 사용, 스위칭 비용이 훨
씬 적다. 이는 GPU의 대량 병렬 처리 능력을 효율적으로 활용할 수 있게 한다.
2. 스레드 블록 (Thread Block)
함께 실행되는 스레드 그룹을 정의한다. 하나의 멀티프로세서에서 공유 메모리를 사용할 수
있다.
스레드 블록 내의 스레드들은 서로 데이터를 공유하고 (Shared Memory 사용), 동기화
(Synchronization)할 수 있다. 즉, 스레드들이 특정 지점에서 함께 멈추고 다른 스레드를 기다릴 수
있다.
최대 몇 백 개에서 몇 천 개의 스레드를 포함할 수 있다.
3. 그리드 (Grid)
하나의 CUDA 커널을 논리적으로 병렬로 실행하는 스레드 블록의 집합을 정의한다. GPU의
전체 작업 영역을 나타내다.
그리드는 하나의 GPU에서 동시에 실행될 수 있는 여러 스레드 블록을 포함한다. 각 스레드
블록은 독립적으로 실행되며, 블록 간의 직접적인 데이터 공유가 불가능하다.
대신 Global memory를 통해 간접적으로 데이터 교환 가능하다.
스레드, 스레드 블록, 그리드에 대해 공부했다.
GPU의 연산 능력을 극대화할 수 있는 병렬 프로그래밍을 공부하여 효율적인 인공지능 활용을 기대한다.