[CUDA] Thread할당
Computer Architecture/GPU2022. 10. 29. 23:12[CUDA] Thread할당

Cuda kernel 함수를 개시하면, kernel function을 수행하는 thread들이 grid를 형성한다. kernel 함수는 program 실행 중 kernel이 개시될때 생성되는 thread들이 수행할 C문장을 정의한 것이다. grid내부의 thread들의 구성과 자원할당, 스케줄링을 살펴본다. CUDA thread의 구성 - grid내부 thread들은 모두 동일한 kernel fuction을 실행하기에 서로 구별하고 사용할 data영역을 구별하기 위해 고유한 좌표값(blockIdx, threadIdx)를 사용한다. - blockIdx, threadIdx는 kernel 함수에서 사용할 수 있도록 이미 초기화된 변수로 주어진다. 즉, thread가 kernel 함수를 수행하는 도중 blcok..

[CUDA] 기초
Computer Architecture/GPU2022. 10. 29. 23:12[CUDA] 기초

GPU는 많은 양의 연산을 병렬처할 수 있으며, 이를 지원하기위해 CUDA라는 GPU programming으르 통해 효율적인 연산 병렬화를 지원한다. 행렬 곱셈의 예) 행렬 P의 각 원소는 M의 행과 N의 열의 내적연산의 결과이다. 이 과정에서 P의 서로 다른 원소를 얻기위해 내적을 동시에 실행할 수 있다(data 계산의 병렬성). 이 원리를 통해 CUDA device(GPU)는 CPU보다 더 빨리 연산이 가능하다. pitfall! "GPU가 CPU에 비해 연산이 더 빠르다고 CPU가 필요없는 것은 아니다. " CPU와 GPU는 사용목적과 배경에 따라 서로 다르게 발전했다. GPU는 CPU보다 훨씬 많은 양의 ALU를 보유하고 있어 병렬연산에 용이하지만, 현재까지 CPU(host)없이 GPU는 구동할 수..

[PIM] GradPIM: A Practical Processing-in-DRAM Architecture for Gradient Descent
카테고리 없음2022. 9. 4. 01:18[PIM] GradPIM: A Practical Processing-in-DRAM Architecture for Gradient Descent

Abstract - 본 논문은 DNN의 parameter update를 가속화하는 processing in memory architecture인 GradPIM을 제시한다. GradPIM은 기존 memory protocol을 침해하지 않는 incremental simple design이다. bank-group parallelism을 활용하면 하드웨어 비용 및 성능 측면에서 PIM 모듈의 운영 설계가 효율적이다. - 제안된 architecture은 DNN 훈련 성능을 향상시키고 memory bandwidth 요구사항을 크게 줄이는 동시에 protocol과 DRAM region의 최소한의 overhead만 가진다. Introduction - DNN의 중요성이 부상함에 딸, NPU는 inference, trai..

UVM & RTL/Verilog HDL2022. 6. 14. 15:06[Verilog HDL] CH7 순차 처리와 병렬 처리 블록

Introduce 한번에 수행하기 위해서 여러 문장들은 블록문으로 그룹지어 진다. 키워드 begin-end를 사용해 여러 문장들을 그룹지었는데 이들은 하나의 문장을 수행하고 다음 문장을 수행하는 순차 처리 블록을 사용했다. 이번 장에서는 블록의 형태를 알아본다. 블록 형태 순차 처리와 병렬 처리. 2가지 형태의 블록이 있다. 순차 처리 블록 문장을 순차 처리 블록으로 그룹 짓기 위해서 키워드 begin과 end를 사용한다. 순차 블록은 다음과 같은 특징을 갖느다. 순차처리 블록의 문장들은 지정된 순서에 따라 처리된다. 만약 지연 또는 사건 제어가 지정되었다면, 블록 안에서 이전 문장이 완전히 수행을 끝내는 시뮬레이션 시간에 관계된다. // 지연이 없는 순차 처리 블록 reg x, y; reg [1:0] ..

UVM & RTL/Verilog HDL2022. 6. 14. 14:54[Verilog HDL] CH7 루프

Introduce Verilog에는 4가지 형식의 루프문이 있다. 모든 루프 문장은 initail, always블록 안에 위치해야 한다. while for repeat forever While 루프 while-수식이 거짓이 될 때까지 수행한다. 다음은 while 루프의 사용법이다. // 0부터 127까지 카운트 예제 integer count; initial begin count = 0; while (count

UVM & RTL/Verilog HDL2022. 6. 14. 14:52[Verilog HDL] CH7 조건문, 다중분기

조건문 조건문은 특정 조건에 따라서 결정하기 위해 이 조건은 문장을 수행할지 말지를 결정하는데 사용된다. // 형식 1 if(!lock) buffer = data; // 형식 2 if(number_queued < MAX_Q_DEPTH) begin data_queue = data; number_queued = number_queued + 1; end else $display("Queue Full. Try again"); // 형식 3 // ALU 제어 신호에 따라 문장을 수행한다. if(alu_control == 0) y = x + z; else if(alu_control == 1) y = x - z; else $display("Invalid ALU control signal"); 다중 분기 위의 조건문의..

UVM & RTL/Verilog HDL2022. 6. 14. 14:50[Verilog HDL] CH7 타이밍 제어

Introduce Verilog에서는 다양한 행위 수준의 타이밍 제어구조를 사용할 수 있다. 지연 기반 타이밍 제어(delay-based timing control) 사건 기반 타이밍 제어(event-based timing control) 준위-구동 타이밍 제어(level-sensitive timing control) 지연 기반 타이밍 제어 수식문 안에서 지연 기반 타이밍 제어는 문장을 만나고 그것이 수행되는 사이의 시간 지연을 지정한다. 지연은 기호 #에 의해서 지정된다. 절차적 할당을 위한 지연에는 3가지 형태가 있다. 정규 지연 제어 내부 할당 지연 제어 제로 지연 제어 정규지연 제어 절차적 할당의 왼쪽에 0값이 아닌 지연이 지정될때 사용한다. 사용법은 다음과 같다. parameter latency..

UVM & RTL/Verilog HDL2022. 6. 14. 14:44[Verilog HDL] CH7 구조적 프로시저 & 절차적 할당

구조적 프로시저 Verilog에는 두 가지 구조적 프로시저 always와 initial이 있다. 이 두 문장은 행위 수준 모델링에서 가장 기본적인 문장이다. 모든 행위 수준 문장은 반드시 구조적 프로시저 문장 안에 나타난다. 두 구문은 중첩될 수 없으며 각 always와 initial문이 분리되어 독립적으로 수행된다. ★ 규칙4 : always, initial의 LHS는 무조건 reg형이다. initial문 initial블록은 시간 0에서 시작하고, 시뮬레이션동안 한 번만 수행되고, 다시는 수행되지 않는다. 만약 여러 개의 initial 블록이 있으면, 각 블록은 시간 0에서 동시에 수행되고, 다른 블록과 상관없이 독립적으로 실행을 마친다. 여러 개의 행위 수준 문장은 반드시 키워드 begin과 end문..

[Verilog HDL] CH6 연산자
UVM & RTL/Verilog HDL2022. 6. 14. 14:37[Verilog HDL] CH6 연산자

연산자(Operator) 산술(Arithmetic) 연산자 - 나누기와 나머지 연산자에서 두 번째 피연산자가 0인 경우, 결과값은 x가 된다. - 나머지 연산자의 결과 값은 첫번재 피연산자의 부호를 따른다. 산술연산의 예 논리 연산자 논리 연산의 예 관계 연산자 - 두 피연산자의 비트 수가 다른 경우네는, 비트 수가 작은 피연산자의 MSB쪽에 이 채워져 비트 수가 큰 피연산자에 맞추어진 후, 관계를 판단함. 관계 연산자의 예 등가 연산자 - 두 피연산자의 비트 수가 다른 경우에는, 비트 수가 작은 피연산자의 MSB쪽에 0이 채워져 비트 수가 큰 피연산자에 맞추어진 후, 등가를 판단한다. 등가 연산자의 예 조건 예 비트 논리 연산자 비트 논리 연산의 예 축약 연산자 - 단항(unary) 연산자 - 피연산자..

[Verilog HDL] CH6 dataflow 모델링
UVM & RTL/Verilog HDL2022. 6. 14. 14:36[Verilog HDL] CH6 dataflow 모델링

연속(Continuous)할당 연속 할당문은 데이터플로우 모델링 기법에 있어서 가장 기본이 되는 문장으로 하나의 값을 넷에 할당하는데 사용된다. 연속할당문은 키워드 assign로 시작하며, 다음과 같은 특징을 가지고 있다. ★ 규칙3 : 연속 할당문의 왼쪽은 항상 wire형이다. 연속 할당문은 항상 능동적이다. 할당문은 항상 오른쪽 피연산자들의 값이 바뀌자마자 왼쪽의 넷에 값을 할당한다. 연산자의 오른쪽에 올 수 있는 것은 레지스터 또는 넷 또는 함수 호출문이다. 지연값은 할당문 안에서 단위 시간으로 지정된다. 지연 지연 값은 오른쪽의 피연산자들의 값이 연산되어 왼쪽에 값을 할당할 때까지의 시간을 제어해 준다. 수식, 연산자 그리고 피연산자 수식 수식은 결과를 산출해 내기 위한 연산자와 피연산자들의 조합..

image