OpenCL을 이용한 이미지 처리 프로그램의 자동 최적화 방법

영상 장비가 발전하고 고화질 이미지의 사용량이 많아짐에 따라 이를 병렬화하여 빠르게 처리하는 방법이 많이 연구되고 있다. 본 논문은 OpenCL을 사용한 이미지 처리 프로그램이 하드웨어에 관계없이 최적의 성능을 내도록 하는 방법을 제시한다. OpenCL은 계산 디바이스의 아키텍처에 따라 적절한 병렬화 방법과 워크그룹 크기를 개발자가 실험을 통해 찾아야 한다. 하지만 이는 시간적, 자원적 한계가 있다. 본 논문에서는 대상 하드웨어에 최적화된 병렬화 방법과 워크그룹 크기를 프로파일링을 통해 자동으로 선택하는 방법을 제안한다. 또한 OpenCL을 사용한 이미지 처리는 입력 이미지의 크기에 따라 순차코드 보다 성능이 좋을 수도 있고 안좋을 수도 있다. 본 논문에서는 OpenCL코드의 성능이 순차코드 성능보다 좋아지는 시점의 이미지 크기를 자동으로 검색하여 OpenCL을 사용할지 기존의 순차코드를 사용할지 결정하는 이미지 크기 threshold를 설정하는 방법을 제시한다. 이를 통해 이미지 처리 프로그램이 임의의 하드웨어에서 이미지 크기에 상관없이 항상 최적의 성능을 보이는 것을 확인했다.