반응형 cuda2 CUDA 병렬 프로그래밍(Parallel Programming) 행렬 연산 우선 행렬(Matrix) 연산을 하기 전에 CUDA에서 어떤 방식으로 여러 개의 쓰레드를 돌리는지를 알아야한다. CUDA에선 BLOCK과 GRID로 쓰레드 그룹을 관리한다. BLOCK에서는 여러 개의 THREAD를 (x, y, z) 즉, 3차원 이하로 가지고 있을 수 있고, GRID는 여러 BLOCK을 2차원 이하(x, y) 로 가지고 있을 수 있다. 그림으로 나타내면 다음과 같다. 그리고 한 BLOCK에는 1024개가 넘는 THREAD를 가지고 있을 수 없다. 그리고 이와 같은 BLOCK과 GRID를 정의한 다음에 Kernel Function 즉 Device에서 돌아갈 함수랑 같이 쓰여야한다. __global__ void kernelFunc(); dim3 DimGrid(10, 10); //100 thr.. 2016. 10. 16. CUDA 병렬 프로그래밍(Parallel Programming) 개념 및 데이터 전송(Data transfer) 최근에 병렬 프로그래밍이 많은 관심을 받고 있다. 그 이유는 병렬 프로그래밍을 이용하면 비교적 저렴한 가격에 슈퍼컴퓨터의 성능을 얻을 수 있다는데 있다. 하지만 어떻게 해서 이런 일이 가능한지 우선 알아보도록 하자. GPU 그래픽카드는 그래픽을 실제 출력장치에 그려주는 역할을 한다. 하지만 출력장치의 하나 하나의 Pixel에 대해서 그래픽을 매칭시켜야 하기 때문에 디스플레이 기술이 발전할 수록 그래픽카드는 발전하였다. 그리고 그 그래픽카드에서 그래픽 처리를 하는 장치를 GPU 라고 한다. 많은 연산을 필요로하는 그래픽을 처리하는 GPU는 CPU와 구조가 많이 다르다. 아래 사진을 보면 명확하기 확인할 수 있다. GPU가 CPU보다 엄청나게 많은 량의 ALU를 가지고 있는 것을 알 수 있다. CPU는 순차.. 2016. 10. 15. 이전 1 다음 반응형