CUDA(10)
-
스레드 블록 아키텍처 Thread Block Architecture
CPU의 스레드 CPU환경에서 생성하는 스레드는 생성 즉시 실행 코드가 프로세서에서 실행된다. 생성한 스레드의 개수와 CPU 코어 수가 동일하면 최적의 효율을 나타냄. CPU의 태스크 분할 처리 과정 스레드의 개수를 코어 수와 동일하게 생성 해야 할 작업을 태스크 단위로 작게 분할하여 태스크 큐에 넣는다. 스레드가 작업을 태스크 단위로 가져와서 처리 스레드가 하나의 테스크를 완료하면 다음 태스크를 큐에서 가져와서 다시 작업을 수행 그리드 블록 모델 Grid Block Model CUDA에서는 스레드가 모여 블록을 이루고 블록이 모여 그리드를 이루게 된다. 하나의 블록은 1개에서부터 최대 512개까지 스레드를 가질 수 있다. 블록 안에 있는 스레드는 고유 아이디를 갖는다. 블록이 스레드를 512개까지 가지..
2022.11.16 -
CUDA C
함수 수식어 __global__ 디바이스에서 실행. 호스트에서 호출할 수는 있어도 디바이스에서 호출할 수는 없음. 디바이스로 실행하는 커널 함수 지정에 사용할 수 있음. 재귀호출 할 수 없음. 가변형 인수를 가질 수 없음. __host__와 동시에 이용할 수 없음. 디바이스에서 처리가 완료되기 전에 호출한 즉시 반환하여 비동기 동작함. __device__ 디바이스에서 실행. 디바이스에서 호출할 수 있고 호스트에서 호출할 수 없음. 디바이스 코드 중에 작성하여 디바이스 내에서의 실행되는 서브함수로 사용. __device__ int function(int a, int b) { } 주의사항 : 재귀호출 할 수 없음. 함수 내에 static 변수를 가질 수 없음. 가변형 인수 가질 수 없음. __device__..
2022.11.16 -
CUDA 프로세서 아키텍처
스트리밍 프로세서(SP) SP는 GPU에서 사실상의 연산을 하는 코어 유닛. SP에는데이터를 연산하기 위한 레지스터와 실수 계산을 하기 위한 FPU(FP), 정수 계산을 하는 ALU(int), 데이터를 load/store 하기 위한 LSU(move,cmp)를 갖추고 있음. 하나의 SP는 CUDA프로그램에서 4개의 스레드를 동작시킴. 스트리밍 멀티프로세서(SM) 여러 SP가 모여 SM을 구성함. SM은 SP를 제어하고 명령어 캐시와 데이터 캐시를 가지고 있음. 공유 메모리는 SP가 서로 데이터를 공유하고 빠르게 사용할 수 있는 메모리로 L1 캐시의 성능을 발휘함. SM하나에 담긴 특수 기능 유닛(SFU, Special Function Unit)은 2개다. SFU는 사인, 코사인, 역수, 제곱근 등의 특수 ..
2022.11.16 -
CUDA 기본
프로그램 구현 시 컴퓨터의 동작 순서 1.입력과 출력에 사용할 메모리 할당 2.처리하고자 하는 데이터를 메모리에 입력 3.연산을 하고자 메모리에 있는 데이터를 CPU(레지스터)로 가져옴 4.정수 연산은 ALU에서 실수 연산은 FPU에서 처리 5.처리된 레지스터의 값을 메모리로 출력 6.사용한 메모리 해제 스레드로 구현된 프로그램 구현 시 컴퓨터의 동작 순서 1.입력과 출력에 사용하는 메모리 할당 2.처리하고자 하는 데이터를 메모리에 입력 3.연산을 하고자 데이터를 4등분하여 각각의 코어로 가져옴 4.데이터를 4개의 스레드로 처리 5.처리된 4개의 데이터를 병합 6.결과를 메모리에 출력 CUDA의 데이터 흐름 1.그래픽 카드 메모리 공간 할당 2.PC의 입력 데이터를 그래픽카드의 메모리로 복사 3.GPU를..
2022.11.15