반응형

컴퓨터/대규모병렬컴퓨팅 4

[MPC] 3. CUDA Thread (1)

3. CUDA Thread (1) 3.1 What is Thread? 3.1.1 Process and Thread Process 컴퓨터 프로그램을 실행했을 때, 실행된 프로그램의 인스턴스 프로그램 코드 + 실행 상태 (다음 명령어의 주소, 레지스터 상태, 메모리 컨텐츠) 스토리지 (프로그램) > 메모리 (여러 프로세스 생성) > PC는 프로세스에서 명령어 주소를 읽어오고 데이터는 컴퓨팅 엔진과 레지스터, 메모리 사이에서 주고 받는다. Thread 프로세스에 대한 실행 흐름 (execution flow) 실행 상태 (다음 명령어의 주소, 레지스터 상태, 스택) 모든 스레드는 프로그램 코드를 공유한다. CPU의 멀티코어와 달리 GPU의 SM은 각 코어가 레지스터만 갖고 PC를 공유한다. SM의 각 코어는 동..

[MPC] 2. Fundamentals of CUDA (2)

2. Fundamentals of CUDA (2) 2.1 A Vector Addition Kernel Review: Data-level Parallelism 서로 다른 데이터에 동일한 명령어 흐름을 병렬적으로 실행하는 것 Image processing: 이미지 내의 독립적인 픽셀을 다룬다. Molecular dynamics: 여러 원자간의 상호작용에 대해 시뮬레이션한다. Airline scheduling: 수천개의 비행기, 승무원, 게이트들을 다뤄야한다. 2.1.1 Vector Addition Scalar vs Vector Scalar: a single number Vector: an array of numbers Vector: 1D array로 표현되는 것 Vector addition: 1d array..

[MPC] 1. Fundamentals of CUDA (1)

1. Fundamentals of CUDA 1.1 History 1.1.1 3D Graphics Pipeline 3D 이미지를 만들어낼 때 다음과 같은 단계를 거친다. 3D mesh를 vertex processing을 통해 triangles in screen space를 만든다. Rasterization을 통해 여러 개의 triangles을 픽셀로 만든다. Raster Operations를 통해 Texture filtering을 하여 각 픽셀에 색상을 입힌다. Fragment processing을 통해 3D 이미지를 출력한다. 1세대 모든 스테이지를 하드웨어로 구현했다. 고정된 데이터 흐름을 가진다. 2세대 하드웨어가 특정 기능을 하지만 어느정도 설정할 수 있었다. -> 특정 모드를 지원 시간이 지남에 ..

[MPC] 0. GPU Architecture

0. GPU Arhitecture 0.1 Parallel Execution in Modern Processors 0.1.1 Pre multi-core era 멀티코어 프로세서를 만들기 전에는 대부분이 슈퍼스칼라 형태였다. 단일 명령어를 빠르게 실행시키기 위해 여러 로직을 넣어주었다. (ex: Out of order control logic, Fancy branch predictor, Memory prefecher) 무어의 법칙에 따라 많은 트랜지스터를 사용할 수 있게 되어, 캐시를 키우고 좋은 OO logic, branch predictor를 추가시켰다. -> 근본적으로 한계가 있었다. Power wall: clock frequency를 높임 -> power consumption 증가 -> 온도 증가 D..

반응형