오전 9:12 2008-04-01
bro@shinbiro.com 조경민
cuda
====================================================


cuda zone
http://cudazone.co.kr


병렬 GPU로 구성하여 그래픽 처리를 위한 사용자 함수를 GPU내에 병렬처리 함수로
넣어서 CPU에서 호출하도록 하는 방식


void inc_cpu(float *a, float b, int N)
{
  for(int i = 0; i M N; i++)
     a[i] = a[i] + b;
}


void main()
{
  inc_cpu(a,b,N);
}



CUDA Program
GPU에 속하는 프로그램 컴파일 후 GPU 메모리에서 실행됨
GPU의 병렬 gpu processor의 실행 스레드는 async하게 동작되며
CUDA프로그래밍은 보통 data decomposition되는 패턴으로 작성
__global__ void inc_gpu(float* a, float b, int N)
{
  int i = blockIdx.x * blockDim.x + threadIdx.x; // cuda built-in 상수
  if( i < N )
     a[i] = a[i] + b;
}


host프로그램에서 GPU내 커널(프로그램 함수) 호출
void main()
{
 dim3 dimBlock(blocksize);  // dimension of block in threads
 dim3 dimGrid( ceil(N / (float)blocksize) ); // dimension of grid in blocks


 // allocate host memory
 unsigned int n = N * sizeof(float)
 float* h_A = (float*)malloc(n);


 // allocate device memory
 float* d_A = 0;
 cudaMalloc((void**)&d_A, n);


 // copy data from host to device
 cudaMemcpy(d_A, h_A,n, cudaMemcpyHostToDevice);


 // execute kernel
 inc_gpu<<< N/blockSize, blockSize>>>(d_A, b);


 // copy data from device bakc to host
 cudaMemcpy(h_A, d_A, n, cudaMemcpyDeviceToHost);


 //free device memory
 cudaFree(d_A);
}


 


 

'KB > security' 카테고리의 다른 글

암호화 알고리즘 소스  (0) 2005.10.12
암호화 알고리즘들  (0) 2005.10.12
vTPM  (0) 2005.10.11
RSA 알고리즘 소스  (0) 2005.10.04
공개키 기반 응용  (0) 2005.10.04

+ Recent posts