GPU

2025. 10. 21. 16:45·CS/컴퓨터구조

병렬성과 동시성

병렬성(parallelism): 실제로 물리적으로 동시에 작업을 처리하는 성질

병렬성 예시

 

동시성(concurrency): 동시에 작업을 처리하는 것처럼 보이는 성질

동시성 예시

 

 

*CPU 하나의 코어에서 여러 스레드를 동작할때: 동시성

*여러개의 CPU 코어가 동작할때: 병렬성

 

 

GPU [덧셈 뺄셈 삼각함수 연산 등 간단하게 할 수 있는 코어가 엄청나게 많음]

 

 

GPU 구조

  CPU GPU
목적 Latency 감소
한 작업을 빨리 실행
Throughput 증가
여러 작업을 한 번에 실행
코어 수 수십 개 수천 개
코어 성능 상대적으로 높음 상대적으로 낮음
메모리 대역폭 상대적으로 작음 상대적으로 큼
캐시 메모리 상대적으로 큼 상대적으로 작음
용도 '주요' 프로세서 '보조'프로세서

 

딥러닝과 GPU

• 딥러닝 연산: 단순 연산(행렬연산[더하기, 곱하기], 벡터연산, 메모리연산)의 반복으로 구성

• 단순 연산을 빠르게 수행하는 대규모 병렬처리 필요: GPU 유리

 

Nvidia H100 구조

 

PCI Express 5.0 Host Interface

• PCI Express (PCIe): 입출력 버스의 일종

• PCIe 5.0 입출력 버스와의 연결 지점 Gigathread Engine

• GPU에서 실행할 스레드를 코어로 분배(스케줄링)

• 어떤 스레드를 어떤 코어에서 실행할지를 결정

 

HBM (High Bandwidth Memory)

• 고대역폭(High Bandwidth) 메모리(Memory)

• 여러 DRAM 칩을 수직으로 쌓아올려 대역폭을 높인 메모리 기술

• 오늘날 GPU대부분장착 Memory Controller

• HBM의 장치 컨트롤러 L2 캐시

• GPU 내부코어간 공유되는 L2 캐시 메모리

 

 

 

GPU의 실행 단위

GPU 커널(kernel)

- GPU에서 병렬적으로 실행되는 실행 단위

- 다수의 스레드로 실행되는 함수 형태

- Tensorflow, Pytorch 등의 딥러닝 프레임워크로 정의된 딥러닝 코드도 수많은 커널로 실행

 

 

GPU 계층

  • 스레드(Thread)
    • 커널을 실행하는 최소 단위
  • 블록(Block)
    • 여러 스레드로 구성된 스레드 집합
    • 논리적단위: 소프트웨어적 실행단위
  • 그리드(Grid)
    • 블록들의집합: 그리드내 스레드는 같은 커널 실행

CUDA GPU 프로그래밍

nvcc : ".cu"를 컴파일 해주는 컴파일러

 

C++로 CUDA GPU 프로그래밍 가능.

 

GPU가 실행할 커널 함수정의

keyword 호출 실행
__host__ (default) CPU CPU
__global__ CPU GPU
__device__ GPU GPU

 

 

#include <stdio.h>

__global__ void helloFromGPU()
{
	printf("Hello from GPU!\n");
}

int main()
{
	helloFromGPU<<<4, 4>>>(); \\ <<<블록 개수, 스레드 개수>>>
    cudaDeviceSynchronize(); \\ 출력 끝 플래그 푸시
    printf("Hello from CPU!\n");
    return 0;
}

 

.cu 파일로 작성하고 nvcc로 컴파일 하여 실행.

 

[출력]

Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from GPU!
Hello from CPU!

 

4*4로 16번 출력

 

 

'CS > 컴퓨터구조' 카테고리의 다른 글

보조기억장치와 입출력장치  (0) 2025.10.21
메인 메모리와 캐시 메모리  (0) 2025.10.21
CPU  (0) 2025.10.20
데이터  (0) 2025.10.20
명령어  (0) 2025.10.20
'CS/컴퓨터구조' 카테고리의 다른 글
  • 보조기억장치와 입출력장치
  • 메인 메모리와 캐시 메모리
  • CPU
  • 데이터
Yun Lab.
Yun Lab.
Yun Lab.
  • Yun Lab.
    윤랩
    Yun Lab.
  • 글쓰기 방명록 관리자
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • CS (13)
        • 컴퓨터구조 (6)
        • 운영체제 (7)
        • 네트워크 (0)
        • 시스템 프로그래밍 (0)
        • 데이터베이스 (0)
      • Git (0)
      • AI Study (6)
        • LLM (0)
        • Machine Learning (6)
      • 자격증 (2)
        • AICE (1)
        • 리눅스마스터 (1)
      • 논문리뷰 (4)
        • NeurIPS (0)
        • ICLR (1)
        • ICML (1)
        • 기타 (2)
      • 코딩테스트 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    교착상태
    LLM
    머신러닝
    ML
    Machine Learning
    서포트벡터머신
    디시전트리
    ICML
    프로세스와 스레드
    명렁어
    K-최근접이웃
    도커
    리눅스마스터
    운영체제
    2025ICML
    ICLR2025
    multi-agent
    쿠버네티스
    의사결정나무
    SVM
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.5
Yun Lab.
GPU
상단으로

티스토리툴바