SARscape 5.1과 OpenCL FAQ

SARscape가 GPU 연산을 지원한다고 예고를 했었는데, 5.1 버전부터 지원이 되고 있습니다. CUDA 기반일 것이라고 예상을 했으나, 더 좋게도 – 다양한 제조사의 GPU, 코프로세서를 지원하는 – OpenCL 기반으로 고속 연산 기능을 제공합니다. 아래에도 언급이 되지만 현재는 모든 기능에 적용되지는 않고, persistence scatter와 geocoding에 OpenCL 기술이 적용됩니다.
이와 관련하여 sarmap 사가 제공하는 SARscape 5.1 + OpenCL에 대한 FAQ가 있어 공유하고자 합니다.

원문은 SARscape 제작사인 sarmap 홈페이지에서 보실 수 있습니다.

제가 궁금했던 내용이 잘 정리되어 있어 거칠지만 번역하여 올립니다.
Q: OpenCL이 뭐예요?
OpenCL(Open Computing Language)은 현대적인 연산장치들이 제공하는 병렬처리 성능을 활용할 수 있도록 어플리케이션을 개발할 수 있는 프레임웍입니다. 이러한 장치들로는 다중코어 프로세서, 그래픽 프로세싱 장치(Graphics processing units; GPUs), 코프로세서(co-processor, 예: Xeon Phi), FPGAs(Field/Programmable gate arrays) 등이 있습니다. OpenCL은 요즘의 주요 하드웨어 제조사들이 채택한 개방 표준입니다.
Q: SARscape에서 OpenCL을 왜 쓰는 건가요?
10년쯤 전 부터, 프로세서들이 클록주파수를 높이기 보다는 병렬처리를 통해 연산 성능을 높이는 방법을 쓰고 있습니다. 이런 이유로, 프로그래밍 패러다임의 변화에 맞추어, SARscape 파이프라인의 몇몇 부분은 이미 병렬화되어 있습니다. GPU와 여타 현대적인 거대 병렬처리 장치들(예 : Xeon Phi 코프로세서)은 합리적인 가성비와 높은 병렬처리효과를 제공하고 있습니다. SARscape의 핵심 유닛을 OpenCL로 작성하여, SARscape는 멀티코어 CPU는 물론, 시스템에 장착되어 있는 연산 장치들의 병렬 연산 성능을 활용할 수 있게 됩니다.
Q: SARscape의 어떤 기능이 OpenCL을 활용하고 있나요?
현재로서는 Persistence scatter와 Geocoding 프로세싱 파이프라인과, SARscape의 다양한 곳에서 활용되는 몇가지 전역 루틴들이 OpenCL로 포팅되어 있습니다. 향후 SARscape 버전에서 차차 추가적인 OpenCL 지원이 이루어질 계획입니다.
Q: SARscape 5.1을 실행하기 위해 요즘의 그래픽 카드가 필요한가요?
아닙니다. NVIDIA GPU가 반드시 필요한 CUDA와 달리, OpenCL은 최소 2개 코어 CPU만 있으면 작동할 수 있기 때문에, 거의 모든 컴퓨터에서 실행될 수 있습니다. ‘CPU 만으로 실행되는 OpenCL’ 이라는 것은  단순히 GPU가 없어도 실행은 되도록 해주는 우회책과는 다른 것입니다. CPU의 멀티코어가 가지는 하드웨어 자원을 최대한 끌어낼 수 있도록 최적화 되어 있기 때문입니다.  어쨌든 SARscape 5.1은 최소 1GB 메모리 이상의 GPU(또는 OpenCL 가속기)가 필요합니다. 최소 사양을 충족하지 못하는 장비는 설정(preference)에 보이지 않게 되어 있습니다. 만일 여러분이 SARscape 5.1을 사용하기 위하여 장비를 구매하고자 한다면, 최근의 장비로는 AMD GPU를 추천합니다. 물론 SARscape가 NVIDIA 장비나 Xeon Phi 코프로세서에서 원활히 작동하지만, OpenCL 성능, 지원, 가성비 면에서 AMD가 다른 제조사에 비해 매우 좋습니다.
Q: 컴퓨터에 GPU가 없습니다. SARscape 5.1을 실행할 수 있습니까?
예. 기본적으로 SARscape 5.1 설치 프로그램이 시스템을 검사합니다. 만일, CPU만으로 실행되는 OpenCL 런타임(CPU-only OpenCL Runtime)이 설치되어 있지 않다면, Intel의 CPU만으로 실행되는 OpenCL 런타임을 자동으로 설치합니다. Intel의 CPU-only OpenCL Runtime은 요즘 Intel의 대부분 CPU(일부 AMD)를 지원합니다. 만일 당신의 CPU가 좀 오래되거나 Intel의 runtime으로 지원되지 않는다면, AMD의 CPU-only OpenCL Runtime을 다운로드 받아 설치할 수 있습니다. 이는 Intel의 runtime에 비해 최적화가 부족하지만 더 다양한 종류의 프로세서를 지원합니다. 법률적 이유로, SARscape 자체적으로 AMD runtime을 포함하여 배포하지는 못하지만, AMD runtime은 AMD 개발자 포털(developer.amd.com)에서 무료로 다운로드 받을 수 있는 AMD APP SDK 안에 포함되어 있습니다. 현 시점에서 우리는 AMD APP SKD version 2.8.1을 추천합니다(최신 버전이 있더라도).  추가적인 정보는 우리의 OpenCL 설치 노트에서 보실 수 있습니다.
Q: SLI/CrossFire로 연결되어 있는 두 개, 또는 그 이상의 GPU를 가지고 있다면 SARscape가 더 빠르게 실행되나요?
NVIDIA의 SLI나 AMD의 CrossFire는 GPU가 그래픽 렌더링을 수행할 때에만 성능을 발휘하는 기술입니다. OpenCL과 관련하여서는 효과가 없습니다. 현재로서는 SARscape는 단지 하나의 GPU 장비만을 활용하게 됩니다. 여러개의 장치가 설치되어 있다면, 사용자가 어떤 장치를 이용할 것인지 선택할 수 있습니다. 반면에, 여러 개의 독립적인 배치 프로세스를 실행할 때는 각각의 프로세스를 각각의 GPU에 할당하여 병렬 진행할 수는 있습니다.