이미지 프로세싱 속도 비교 – CUDA vs CPU(single thread)

앞선 글에서 겁나 빠르다고..말했으나 사실 측정을 하지 않았기 때문에 겁나 빠른지 의외로 안빠른지 정확히 알 수 없었다. 해서 동일한 코드를 CPU용 코드로도 돌려보고 소요된 시간을 비교해보기로 했다. 빌드환경 : x64, release모드 대상 이미지 : 697*992 32bit 필터적용 : 5×5 가우시안 필터 30회 CPU : 인텔 Q6600 2.4GHz GPU : nVidia GeForce9800GTX+ 왼쪽 스샷이 CUDA코드. 대략 … More 이미지 프로세싱 속도 비교 – CUDA vs CPU(single thread)

cuda 필터 만들기. 3*3커널을 이용한 필터링

더디지만 cuda프로그래밍을 계속 학습하고 있다. 지난번 B/W필터에 이어 3*3 커널을 이용한 필터를 만들어보았다. 3*3 가우시안 마스크를 이용해서 블러를, 3*3 라플라시안 마스크를 이용해서 엣지필터를 만들었다. 아직 많이 미숙하여 퍼포먼스 고려할 처지가 아니기 때문에 퍼포먼스는 신경쓰지 않았다. 메모리 접근을 32바이트 단위로 끊으면 더 빨라질텐데…뭐 지금도 겁나 빠른거 같다.

cuda로 필터 만들기 첫번째 B/W필터

물론 기술적으로는 별거 아니지만. CUDA로 만들었다는데 의를 둔다. 3×3이나 5×5, 9×9 커널을 이용한 필터는 주말에 시도해 볼 예정. 아직 세부적인 메모리 모델이나 cuda api는 잘 모르지만 대충 어떻게 코드를 작성해야하는지, 블럭과 그리드 개념에 대해서는 이해가 되고 있다. 화면 출력코드는 만들지 않았으므로 이미지 파일을 읽어서 cuda코드로 B/W필터를 먹이고 다시 세이브해서 ACDSEE로 확인했다.

프레임 자랑질.

– BSP기반 공간분할-실시간 PORTAL컬링 – SW Occlusion Culling – HW Occlusion Culling – SSE Assembly Code – 비동기 멀티스레딩 충돌처리 라이브러리 – Font Cache 이 모든것들을 동원하여 죽도록 최적화한 결과. UI코드까지 싸그리 내 손으로 다 최적화했다면 조금쯤 더 빨라질 수 있었을텐데 약간 아쉬움이… nVidia Geforce9800GTX+ (GTS250과동일) INTEL Q6600 2.4GHz RAM 8GB 중 (x86버젼으로 319MB, x64버젼으로 … More 프레임 자랑질.