wawawaaw
안녕하세요
wawawaaw
전체 방문자
오늘
어제
  • 분류 전체보기 (33)
    • Programming (13)
      • Debugging (0)
      • Linux (5)
      • CUDA (5)
      • Git (1)
    • AI Research (14)
      • Tracking (2)
      • Object Detection (9)
      • Dataset (1)
      • GPU (2)
    • Paper Review (1)
    • 보안 (2)
    • Book Review (0)
    • Etc. (2)
      • 자격증 (1)

인기 글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
wawawaaw

안녕하세요

[CUDA] Parallel Programming in CUDA
Programming/CUDA

[CUDA] Parallel Programming in CUDA

2023. 5. 1. 02:11
반응형

 

Parallel Programming 

  • 그렇다면 이제 CUDA로 parallel 프로그래밍하는 방법을 알아보자!
__global__ void add(int* a, int* b, int* c) { 
	int tid = blockIdx.x; 
    if (tid < N) { 
    	c[tid] = a[tid]+b[tid];
        
}
#define N 10 

int main(void){
	int a[N], b[N], C[N]; 
    int* dev_a, *dev_b, *dev_c; 
    
    //allocate mem on gpu 
    cudaMalloc((void**)&dev_a, N*sizeof(int)); 
    cudaMalloc((void**)&dev_b, N*sizeof(int));     
    cudaMalloc((void**)&dev_c, N*sizeof(int));     
    
    //a,b 배열에 임의의 값 넣기 
    for(int i =0;i<N;i++){
    	a[i]=-i; 
        b[i] =i*i; 
    }
    
    //a,b값 gpu로 연산할 수 있도록 device로 옮기기
    cudaMemcpu(dev_a,a,N*sizeof(int),cudaMemcpyHostToDevice));
    cudaMemcpu(dev_b,b,N*sizeof(int),cudaMemcpyHostToDevice));   
    
    add<<N,1>>(dev_a,dev_b,dev_c); 
    
    cudaMemcpy(c,dev_c,N*sizeof(int),cudaMemcpyDeviceToHost));
    
    cudaFree(dev_a); 
    cudaFree(dev_b);     
    cudaFree(dev_c);     
    
    return 0; 
    
}
  • kernel <<<1,1>>>(param1,param2,...) ;
    • kernel 함수가 호출될 때 이같은 형식을 취한다. 
    • kernel <<< number_of_parallel_blocks, 1>>> : 첫번째 파라미터는 parallel로 돌릴 block의 수를 의미한다. 
    • kernel<<<256,1>>>이라면, 256개의 block을 동시에 돌린다는 것을 의미한다. 
    • 그런데 이렇게 된다면, 어떤 block 이 몇번째를 돌리는 지는 어떻게 알까? 
  • blockId.x 
    • blockId는 선언하지 않아도 사용 가능하다. cuda built in variable이기 때문이다. 따라서 위의 add 함수 안과 같이 사용이 가능하다. 
    • blockId.x가 의미하는 바는 blockId.y가 있다는 말이 아닐까? 즉 2차원의 block으로 생각하면 될 듯하다. 
  • grid : 여러개의 parallel running block을 의미한다. 
    • 예를 들어 위의 예시를 보면 1차원 N-block을 가진 grid가 실행되는 것이다.

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Programming > CUDA' 카테고리의 다른 글

[CUDA] Constant Memory 와 이벤트  (0) 2023.05.02
[CUDA] CUDA로 threading & shared memory  (0) 2023.05.02
[CUDA] CUDA C 기초  (0) 2023.05.01
[CUDA] GPU Programming을 하는 이유  (0) 2023.05.01
    'Programming/CUDA' 카테고리의 다른 글
    • [CUDA] Constant Memory 와 이벤트
    • [CUDA] CUDA로 threading & shared memory
    • [CUDA] CUDA C 기초
    • [CUDA] GPU Programming을 하는 이유
    wawawaaw
    wawawaaw
    안녕하세요.

    티스토리툴바