오전 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 |