GPGPU
-
cuda template projectCUDA 2011. 4. 20. 12:30
cuda를 설치하고 나면 기본적으로 제공되는 예제들 중에 template에 관해서 살펴보겠습니다. 뭐 시작하기전에 메모리 종류라던가 커널이라던가 이것저것 알아야 할 것들이 많지만 일단 돌려보고 그런건 차차 하면서 알아 나가는게 좋지 않을까 합니다. 이 카테고리는 제가 공부하고 정리하는 의미가 있기 때문에 크게 순서에 얽매이지 않고 그냥 생각나는대로 쓰고 있음을 밝혀둡니다.;; 그럼 우선 한번 실행 시켜보도록 하죠. Visual C++을 열고 C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\projects 폴더로 가면 예제들이 쭉 있습니다. 한 50개 좀 넘는군요.. 이 중에서 template라는 폴더로 가서 솔루션을 엽니다. 그 다음 F5를 눌러 프로그램을 실..
-
CUDA 프로그래밍 기본개념CUDA 2010. 11. 25. 17:55
CUDA는 일반적인 CPU연산이 아닌 GPU연산을 합니다. 그래서 일반적인 코딩을 할때보다 신경써주어야 할 부분들이 더 있습니다. 여러가지가 있는데 그 중에서 우선 GPU연산을 위해서는 CPU에 있는 데이터를 GPU용으로 바꾸어야 합니다. 메인보드 ram에 있는 데이터를 GPU ram으로 옮기는 거죠. 이때 메모리에 데이터를 어떻게 할당을 하고, GPU에는 여러가지 종류의 메모리가 있는데 그 중에서 어떤 메모리를 활용 하느냐에 따라서 성능차이가 많이 나게 됩니다. 메모리를 잘못 사용하면 CPU보다 느린 성능을 낼수도 있습니다.;; 그런 다음에 그 데이터를 이용해서 GPU상에서 계산을 합니다. 계산한 결과는 GPU에 있기 때문에 GPU에 있는 데이터를 CPU로 가지고 오면 CUDA의 역할이 끝나게 됩니다...
-
불친절한 CUDA 설치하기 정리CUDA 2010. 11. 25. 17:55
테스트환경 필요 hardware CUDA 사용 가능한 GPU 머신 참조 : http://kr.nvidia.com/object/cuda_learn_products.html * G80 시리즈 중에서 8400은 현재 4만원이면 구입가능. 나머진 너무 비쌈..ㅡ_ㅡ; CUDA에서 에뮬레이션 모드를 지원하나 실제 머신에서 돌리는 것과 에뮬레이션 모드에서 돌릴때의 차이가 있기 때문에 에뮬레이션보다는 실제머신에서 돌려보는 것을 추천. ex) double precision같은 경우 현재 출시되어 있는 GPU들은 지원하지 않음. 그래서 실제 하드웨어 상에서 double을 쓰면 문제 발생. 그러나 에뮬레이션 모드에서는 이런 문제가 발생하지 않음. 필요 software windows xp visual c++ 2005 exp..
-
cuda template project(2)CUDA 2010. 11. 16. 10:07
여기부터는 template_kernel.cu 에 관한 내용입니다. 첫번째 포스트쓰고 이래저래 딴짓하느라 그 사이 CUDA2.0 이 나왔네요. template_kernel.cu는 실제 GPU연산을 담당하는 함수가 들어가 있습니다. __global__ void testKernel( float* g_idata, float* g_odata) { // shared memory // the size is determined by the host application extern __shared__ float sdata[]; // access thread id const unsigned int tid = threadIdx.x; // access number of threads in this block const un..
-
CUDA 메모리 구조(2)CUDA 2010. 9. 9. 15:41
CUDA 연산의 개념은 아래 그림과 같은 구조로 되어 있습니다. 여기서 Thread라고 되어 있는 것들이 CUDA연산에서 가장 작은 단위인 것입니다. 이 Thread들은 Block의 하위에 있고 Block들은 다시 Grid의 하위에 있습니다. 그래서 프로그래머가 연산을 하려면 '몇번Grid의 몇번Block의 몇번Thread를 사용하여 계산하겠다' 를 지정해 주어야 합니다. 여기서 각 Thread는 자신만의 local memory를 가지게 됩니다. 각 Thread 간에 data 공유를 위한 shared memory는 따로 있습니다. 그리고 Block들의 집합인 Grid간에 data 공유를 위한 Global memory가 있습니다. 구조는 아래와 같습니다. 이 memory들을 어떻게 사용하느냐에 따라서 같은..
-
CUDA 메모리 구조(1)CUDA 2010. 4. 7. 23:08
오랜만에 쓰네요. 여기는 CUDA관련해서 들어오시는 분들이 제일 많군요..;; 잠깐 검색해봤는데 해가 지났는데 아직 CUDA관련한 한글자료는 잘 없는 편이군요. 국내에 어느정도 보급은 된거 같은데 정보공유는 어떻게들 하시는지 모르겠습니다. nvidia싸이트 가봐도 그다지 활성화되어 있는거 같지는 않구요. 이번 글은 CUDA 메모리 구조 관련한 정리 입니다. 2.0은 안봐서 모르겠는데 이전버전에서의 CUDA는 메모리 구조를 숙지하고 있었어야 했기 때문에 그냥 그럴거라 생각하고 메모리구조에 대한 정리부터 이어갑니다. 우리가 CUDA를 쓰려고하는 이유는 GPU를 사용하여 연산속도의 향상을 얻기 위함입니다. GPU가 CPU연산보다 빠른 이유가 CPU보다 많은 ALU를 보유하고 있기 때문입니다. 위 그림에서 보시..
-
CUDA 시작 글CUDA 2010. 4. 7. 23:02
CUDA 관련 기본글 퍼온 것 CUDA ("Compute Unified Device Architecture"),는 그래픽 처리장치(GPU)에서 수행하는 알고리즘을 코딩하는데 있어서 C 프로그래밍 언어를 사용할 수 있도록 하는 GPGPU 기술이다. CUDA는 엔비디아(Nvidia)에 의해서 개발되어져왔고 이 아키텍쳐의 사용하기위해선 Nvidia GPU와 특별한 스트림 처리 드라이버가 필요하다. CUDA는 G8X GPUs로 구성된 GeForce 8시리즈에서 동작할 수 있다.; Nvidia는 GeForce 8 시리즈상에 작성된 프로그램은 앞으로 개발될 Ncidia 비디오 카드에서도 프로그램 수정없이 작동할 것이라고 선언했다. CUDA는 CUDA GPUs 안의 명령셋과 대용량 병렬처리 메모리를 접근할 수 있도록..