쿠다 변수 특성
http://blog.naver.com/lithium81/80145123334
이 포스트는 "CUDA By Example", "대규모 병렬 프로세서 프로그래밍", "CUDA 병렬 프로그래밍"을 스터디하면서 익힌 내용을 까먹지 않게 정리한 것임.
※ 로그인 안 하고도 내가 언제든지 볼 수 있도록 공개한 것일 뿐, 맘대로 퍼가고 수정하라고 만든 자료 아님. 불펌 금지
2012/01/27 15:02 |
//---------------------------------------------------
아~ for문으로 10번 돌것을 하나의 block 이 하나의 배열을
맡아서 계산해서 넘겨주는 거구나
즉 커널을 통해 "나(CPU) 10번 돌거 GPU 니내 10명이서 나눠서
한개씩 맡고 나에게 주렴" 이라는 거구나... 어렵다...
//--------------------------------------------------
#include <stdio.h>
#include <malloc.h>
#include <cuda_runtime.h>
#include <cutil.h>
#define blksize 8
#define grdsize 8
#define N 10
__global__ void test(int *a, int *b, int *c)
{
int tid = blockIdx.x;
c[tid] = a[tid] + b[tid];
}
int main()
{
//cudaSetDevice (int device );
//property출력을 위한 구조체 생성
cudaDeviceProp prop;
//디바이스 장치의 숫자를 획득
int count;
cudaGetDeviceCount(&count);
//각 디바이스 장치의 property들을 출력
for(int i=0;i<count;i++){
cudaGetDeviceProperties(&prop,i);
printf("--%d번째 디바이스의 정보를 출력합니다--\n",i+1);
printf(" (1) 장치 이름: %s\n", prop.name);
printf(" (2) Clock Rate: %d\n", prop.clockRate);
printf(" (3) 전역 메모리 용량: %ld\n",prop.totalGlobalMem);
printf(" (4) 상수 메모리 용량: %ld\n",prop.totalConstMem);
printf(" (5) 통합형인가??: %ld\n",prop.integrated);
}
int a[N], b[N], c[N];
int *dev_a, *dev_b, *dev_c;
cudaMalloc( (void**) &dev_a, sizeof(int) * N);
cudaMalloc( (void**) &dev_b, sizeof(int) * N);
cudaMalloc( (void**) &dev_c, sizeof(int) * N);
for(int i=0; i<N; i++) {
a[i] = i;
b[i] = i;
}
cudaMemcpy( dev_a, a, sizeof(int) * N, cudaMemcpyHostToDevice );
cudaMemcpy( dev_b, b, sizeof(int) * N, cudaMemcpyHostToDevice );
test<<<N, 1>>>(dev_a, dev_b, dev_c);
cudaMemcpy( c, dev_c, sizeof(int) * N, cudaMemcpyDeviceToHost );
for(int i=0; i<N; i++) {
printf("%d + %d = %d\n", a[i], b[i], c[i]);
}
cudaFree(dev_a);
cudaFree(dev_b);
cudaFree(dev_c);
return 0;
}
[출처] CUDA 병렬프로그래밍에 대한 이해...|작성자 김연슬
'그래픽스(Graphics) > CUDA' 카테고리의 다른 글
그래픽카드 인터페이스 - PCI 익스프레스 (0) | 2012.10.27 |
---|---|
atomicAdd vs2010 에서 정의도지 않았다고 할때.. (0) | 2012.10.27 |
CUDA Event로 시간측정 (1) | 2012.10.27 |
쿠다 비주얼어시스트 목록 뜨게하기 (0) | 2012.10.27 |
CUDA 4.1 VS2010 Configuration (0) | 2012.10.27 |