본문 바로가기

Data Mining & R

CUDA Sample 2

http://robano.tistory.com/8



다들 CUDA를 설치하시고 완벽하게 사용하실텐데 저같이 모지리는 뭔가 확실한 예제까지 있어야 이게 '아.... 쿠다를 이렇게 쓰는거구먼!' 이라고 생각이 들더군용 ㅋㅋㅋㅋ


가르치기 힘든 타입...ㅋㅋㅋ


암튼 제가 예제를 얻고 나서 아! 이렇게 쓰는구먼! 이라고 느낀 예제가 있어 공유합니당


먼저 예제에 들어가기 앞서 CUDA의 개념부터 살짝 짚고 넘어가자면


요론 느낌인데요. 그림 출처는 NVIDA와 아래 블로그에서 가져왔습니다.

https://ingun37.wordpress.com/2013/01/10/cuda-programming-model-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EB%AA%A8%EB%8D%B8/

요 위의 블로그에서 정리가 잘 되어 있네용 전체적은 느낌은 위의 그림이고 GRID단에서 처리를 하는데 

Grid 안에 block이 있고 block안에는 thread들이 존재하여 병렬처리를 하는걸로 아주 야매스럽게 표현이 가능합니다.


(참 몇개 안되지만 이렇게 포스팅하는거 보면 야매스러운데 야매 개발로 바꿔야겠습니다...=_=a;;)


아무튼! 요론 구조를 가지고 있으니 참 뭐가 처리 하기 좋아보이는데 혹시 감이 오시나염??


힌트는 선형대수... ㅎㄹ, 가로 세로,


ㅋㅋㅋㅋㅋ 바로 행렬 처리가 용이해 보입니다!! 잘 생각해보면 영상처리도 그렇고, NN(뉴럴네트워크)도 행렬 연산처럼 표현이 가능하니 CUDA랑 찰떡 궁합을 이룰 거 같습니다.

(하지만... 저는 야매이기때문에 아직도 Matlab이 쓰기 좋더라구요...ㅋㅋㅋ)


자 그럼 CUDA로 가볍게 행렬 처리를 해보지요 ㅎㅎㅎ


가장 쉬운 문제는 역시 행렬 덧셈이겠죠??



요 걸 보시면 간단하게 이해가 가실겁니당 ㅎㅎ 요 그럼도 출처는 인터넷의 서강대학교 CUDA 강의 자료가 있더라구요 감사하게 사용했습니다.


출처는 URL은 찾아서 다시 올리겠습니다.


크으 요고를 보시고 바로 덧셈을 하셧다면 바로 곱셈도 해보셔야겠죠??


저는 3*2 행렬 A와 2*4 행렬 B를 곱셈하여 행렬 C를 생성해 보았습니다.


음 이게 어느 곳에서 시험문제는 아니지만 숙제로 많이 내시더라구요 그래서! 소스를 다 공개 하진 않고 일부 캡쳐해서 올리겠습니다. ㅎㅎㅎ


한번 생각해보시고 꼭 정답을 맞추세요ㅎㅎ