[국내논문]이기종 컴퓨팅 환경에서 OpenCL을 사용한 포토모자이크 응용의 효율적인 작업부하 분배 Efficient Workload Distribution of Photomosaic Using OpenCL into a Heterogeneous Computing Environment원문보기
최근 고성능 컴퓨팅과 모바일 컴퓨팅에서 성능가속기를 사용하는 병렬처리 방법들이 소개되어왔다. 포토모자이크 응용은 내재된 데이터 병렬성을 활용하고 성능가속기를 사용하여 병렬처리가 가능하다. 본 논문에서는 CPU와 GPU로 구성된 이기종 컴퓨팅 환경에서 포토모자이크 수행 시 작업부하 분배 방법을 제안한다. 즉, 포토모자이크 응용을 비동기 방식으로 병렬화하여 CPU와 GPU 자원을 동시에 활용하고, 각 처리기에 할당할 최적의 작업부하량을 예측하기 위해 CPU-only와 GPU-only 작업 분배 환경에서 수행시간을 측정한다. 제안 방법은 간단하지만 매우 효과적이고, CPU와 GPU로 구성된 이기종 컴퓨팅 환경에서 다른 응용을 병렬화하 데에도 적용될 수 있다. 실험 결과, 이기종 컴퓨팅 환경에서 최적의 작업 분배량으로 수행한 경우, GPU-only의 방법과 비교하여 141%의 성능이 개선되었음을 확인한다.
최근 고성능 컴퓨팅과 모바일 컴퓨팅에서 성능가속기를 사용하는 병렬처리 방법들이 소개되어왔다. 포토모자이크 응용은 내재된 데이터 병렬성을 활용하고 성능가속기를 사용하여 병렬처리가 가능하다. 본 논문에서는 CPU와 GPU로 구성된 이기종 컴퓨팅 환경에서 포토모자이크 수행 시 작업부하 분배 방법을 제안한다. 즉, 포토모자이크 응용을 비동기 방식으로 병렬화하여 CPU와 GPU 자원을 동시에 활용하고, 각 처리기에 할당할 최적의 작업부하량을 예측하기 위해 CPU-only와 GPU-only 작업 분배 환경에서 수행시간을 측정한다. 제안 방법은 간단하지만 매우 효과적이고, CPU와 GPU로 구성된 이기종 컴퓨팅 환경에서 다른 응용을 병렬화하 데에도 적용될 수 있다. 실험 결과, 이기종 컴퓨팅 환경에서 최적의 작업 분배량으로 수행한 경우, GPU-only의 방법과 비교하여 141%의 성능이 개선되었음을 확인한다.
Recently, parallel processing methods with accelerator have been introduced into a high performance computing and a mobile computing. The photomosaic application can be parallelized by using inherent data parallelism and accelerator. In this paper, we propose a way to distribute the workload of the ...
Recently, parallel processing methods with accelerator have been introduced into a high performance computing and a mobile computing. The photomosaic application can be parallelized by using inherent data parallelism and accelerator. In this paper, we propose a way to distribute the workload of the photomosaic application into a CPU and GPU heterogeneous computing environment. That is, the photomosaic application is parallelized using both CPU and GPU resource with the asynchronous mode of OpenCL, and then the optimal workload distribution rate is estimated by measuring the execution time with CPU-only and GPU-only distribution rates. The proposed approach is simple but very effective, and can be applied to parallelize other applications on a CPU and GPU heterogeneous computing environment. Based on the experimental results, we confirm that the performance is improved by 141% into a heterogeneous computing environment with the optimal workload distribution compared with using GPU-only method.
Recently, parallel processing methods with accelerator have been introduced into a high performance computing and a mobile computing. The photomosaic application can be parallelized by using inherent data parallelism and accelerator. In this paper, we propose a way to distribute the workload of the photomosaic application into a CPU and GPU heterogeneous computing environment. That is, the photomosaic application is parallelized using both CPU and GPU resource with the asynchronous mode of OpenCL, and then the optimal workload distribution rate is estimated by measuring the execution time with CPU-only and GPU-only distribution rates. The proposed approach is simple but very effective, and can be applied to parallelize other applications on a CPU and GPU heterogeneous computing environment. Based on the experimental results, we confirm that the performance is improved by 141% into a heterogeneous computing environment with the optimal workload distribution compared with using GPU-only method.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
OpenCL은 이기종 컴퓨팅 환경에서 병렬처리를 할 수 있는 프레임워크이기 때문에, CPU와 GPU를 동시에 활용하여 병렬처리할 수 있다. 본 논문에서는 이러한 OpenCL의 특징을 이용하여, 포토모자이크(Photomosaic)[11] 응용의 작업부하를 CPU와 GPU에 분배하여 수행시간을 단축하는 방법을 제안한다. 즉, CPU와 GPU를 동시에 활용하기 위하여 주어진 포토모자이크 응용을 OpenCL의 비동기 방식으로 병렬화 한다.
그러나 이러한 GPU 구현은 CPU를 호스트로만 활용하여, 다중 코어를 장착하여 성능이 지속적으로 개선되는 CPU 자원을 최대한 활용하지 못하는 문제점이 있다. 본 논문에서는 이러한 문제점을 개선하기 위하여 CPU와 GPU의 자원을 동시에 활용하여 전체 포토모자이크 응용의 수행시간을 단축하는 방법을 제안한다.
따라서 본 논문에서는 CPU와 GPU 수행을 비동기 방식으로 설정하고 유휴상태인 CPU 자원도 포토모자이크 연산에 같이 활용하여 수행시간을 줄이고자 한다. 즉, OpenCL의 비동기 방식을 이용하여 병렬처리를 수행함으로써 CPU와 GPU 자원을 동시에 활용하고, 따라서 기존 방법에서 CPU 자원이 유휴상태로 대기하는 문제를 해결할 수 있다.
그러나 다중코어의 복잡한 구조를 갖는 각각의 처리기에서 해당 응용프로그램을 수행할 때 소요되는 수행시간을 해석적으로 모델링하는 것은 매우 어려운 일이다. 그렇기 때문에, 효율적인 작업 분배량을 정하기 위해서 포토모자이크 응용의 CPU-only와 GPU-only 수행시간을 먼저 비교하고, 이를 통하여 포토모자이크 응용과 각 처리기의 특성을 확인하고자 한다. 수행시간 특성을 분석하기 위한 실험은 Intel i5-2500 CPU(4-코어), NVIDIA GeForce GTX 560(336-코어)의 플랫폼에서 진행하였고, 실험에 사용한 이미지로는 3072×2048의 크기를 갖는 이미지를 사용하였다.
따라서 최적의 작업 분배량은 주어진 처리기에서 전수조사를 통해 확인할 수 있으나, 모든 경우의 수행시간을 측정해야 하는 어려움이 있다. 본 논문에서는 주어진 처리기의 수행 시간 특성을 한 차례 측정을 통하여 파악하고 최적의 분배량을 결정하는 방법을 제안한다.
본 논문에서는 이기종 컴퓨팅 환경에서 포토모자이크 응용의 병렬처리를 위하여 OpenCL을 이용한 CPU-GPU 간 작업 분배량을 결정하는 방법을 제안하였다. 또한, 연산량 (즉, 타일 개수)의 변화가 CPU와 GPU 간의 작업 분배량에 미치는 영향을 분석하였다.
제안 방법
즉, CPU와 GPU를 동시에 활용하기 위하여 주어진 포토모자이크 응용을 OpenCL의 비동기 방식으로 병렬화 한다. 그리고 CPU와 GPU 각각에서 처리기 자체의 차이와 OpenCL 구현의 차이를 확인하기 위하여 비동기 방식으로 구현된 OpenCL 코드를 CPU-only(CPU : GPU=100% : 0%)와 GPU-only(CPU : GPU=0% : 100%) 작업 분배 환경에서 측정함으로써 각 처리기에 할당할 작업부하량을 예측한다. 특히 포토모자이크 응용은 원하는 정확도를 파라미터화 할 수 있는데, 이 파라미터값에 따라 동일한 수행 환경에서도 CPU와 GPU의 상대적인 수행시간이 차이가 날 수 있다.
2의 축소된 원본영상과 포토모자이크로 변환된 영상은 유사해보이지만, 포토모자이크의 영상을 확대하여 확인하면 포토모자이크 영상의 한 영역이 여러 개의 작은 타일로 나누어져서 변환된 것을 알 수 있다. 본 논문에서 사용한 포토모자이크 응용은 분할된 원 영상을 유사한 타일로 대체할 때, 반복문을 5회 중첩하여 수행하는 특성을 가지고 있다.
본 논문에서는 작업부하의 최소 분배량을 타일의 높이로 정의하였기 때문에, 3072(원 영상의 가로 크기)×64(타일의 세로 크기)인 약 0.2 메가픽셀로 구간간격을 나누어 실험하였고, 이 경우 분배량은 총 31개로 나누어 측정할 수 있었다.
3은 CPU와 GPU에 각각 나누어서 할당된 하나의 입력영상과 연산 후에 합쳐진 결과영상을 보여준다. 본 논문에서는 포토모자이크 응용을 병렬처리하기 위해서 Fig. 3과 같이 주어진 영상을 윗부분과 아랫부분으로 나누어 CPU와 GPU에 각각 할당하고, 각각의 타일 계산은 서로 간의 데이터 종속성이 없다. 따라서 타일의 높이에 원 영상의 높이를 나누어서 CPU와 GPU에 할당할 수 있는 타일의 개수를 정할 수 있다.
본 논문에서는 CPU와 GPU를 동시에 이용하기 위해서 OpenCL의 이식성을 이용한다. Fig.
8은 타일의 개수를 1000개, 100개, 10개로 변경하여 포토모자이크를 OpenCL로 수행하였을 경우의 수행시간이다. 수행시간의 대략적인 경향을 파악하기 위하여 이미지를 11개의 경우로 나누어 GPU와 CPU에 분배하였고, 각 분배량에 따른 초기화 시간, CPU 수행시간, GPU 수행시간을 보여준다. CPU 또는 GPU를 OpenCL에서 사용하기 위해서는 초기화가 반드시 필요하고, CPU나 GPU 의 수행시간이 길어지면 초기화 시간의 상대적인 비율이 작아지지만, 수행시간이 짧게 걸리는 경우 초기화 시간의 상대적인 비율이 커지게 된다.
OpenCL의 이식성을 활용하여, 주어진 포토모자이크 응용을 비동기 방식으로 구현하고 이를 CPU-only와 GPU-only 작업 분배 환경에서 측정함으로써 각 처리기에 배분할 작업 부하량을 대략적으로 예측한다. 이로써 어떠한 이기종 컴퓨팅 환경에서도 동일한 OpenCL 코드를 CPU-only와 GPU-only 작업 분배 환경에서 수행시키면 초기 작업 분배량을 결정할 수 있으며, 보다 정확한 분배량을 도출하기 위하여 필요하다면 유사한 작업 분배량으로 수행시간을 추가 측정하는 현실적인 방법을 취한다.
본 논문에서는 작업부하의 최소 분배량을 타일의 높이로 정의하였기 때문에, 3072(원 영상의 가로 크기)×64(타일의 세로 크기)인 약 0.2 메가픽셀로 구간간격을 나누어 실험하였다.
9와 같이 얻어진 CPU-only와 GPU-only 작업 분배 환경에서의 수행시간 비율을 기준으로 결정할 수 있다. 보다 정확한 분배량을 도출할 필요가 있으면, 초기 작업 분배량을 기준으로 작업부하 최소 분배량(본 논문에서는 3.2에서 언급한대로 0.2 메가픽셀로 설정)을 GPU에서 감하고 CPU에 가하는 경우의 수행시간과, CPU에서 감하고 GPU에 가하는 경우의 수행시간을 추가적으로 측정한다. 이렇게 측정된 총 3번의 수행시간 중 가장 빠른 수행시간을 갖는 경우를 최종 작업 분배량으로 결정한다.
원 영상에서 세로를 기준으로 32개의 타일이 존재하고, 32개의 타일을 CPU와 GPU에 나누어 분배를 할 경우, 분배 가능한 방법은총 31가지이다. 최적의 작업 분배량을 검증하기 위하여 31가지의 수행시간을 모두 측정하여 제안 방법을 검증하였다. 또한, 연산량에 따른 성능 향상을 알아보기 위하여 탐색할 타일 후보의 개수를 1000개, 100개, 10개로 변화시켜 실험하였다.
최적의 작업 분배량을 검증하기 위하여 31가지의 수행시간을 모두 측정하여 제안 방법을 검증하였다. 또한, 연산량에 따른 성능 향상을 알아보기 위하여 탐색할 타일 후보의 개수를 1000개, 100개, 10개로 변화시켜 실험하였다. 타일의 개수를 줄이면 탐색할 타일의 수가 적어지기 때문에 수행시간에서 이득을 얻을 수 있지만, 탐색하는 타일의 후보가 적어지기 때문에 분할된 원 영상이 적절한 타일로 교체가 될 확률이 낮아지게 되는 단점이 있다.
본 논문에서는 이기종 컴퓨팅 환경에서 포토모자이크 응용의 병렬처리를 위하여 OpenCL을 이용한 CPU-GPU 간 작업 분배량을 결정하는 방법을 제안하였다. 또한, 연산량 (즉, 타일 개수)의 변화가 CPU와 GPU 간의 작업 분배량에 미치는 영향을 분석하였다.
대상 데이터
수행시간 특성을 분석하기 위한 실험은 Intel i5-2500 CPU(4-코어), NVIDIA GeForce GTX 560(336-코어)의 플랫폼에서 진행하였고, 실험에 사용한 이미지로는 3072×2048의 크기를 갖는 이미지를 사용하였다.
타일은 64×64의 크기를 갖는 이미지를 사용하였다.
3절에서 언급한 예측 방법을 검증하기 위한 실측 실험은 Intel i5-2500 CPU(4-코어), NVIDIA GeForce GTX 560(336-코어)의 플랫폼에서 진행하였고, 실험에 사용한 이미지로는 3072×2048의 크기를 갖는 이미지를 사용하고, 타일은 64×64의 크기를 갖는 이미지를 사용하였다.
데이터처리
처리기의 특성을 분석하기 위해서 3.2에서 언급한대로 OpenCL의 초기화 시간을 제외한 CPU와 GPU의 수행시간을 비교한다. Fig.
성능/효과
특히 포토모자이크 응용은 원하는 정확도를 파라미터화 할 수 있는데, 이 파라미터값에 따라 동일한 수행 환경에서도 CPU와 GPU의 상대적인 수행시간이 차이가 날 수 있다. 실험 결과, 어떠한 경우에도 제안 방법을 활용하면 CPU나 GPU만을 이용하는 경우나 CPU와 GPU에 균등하게 작업부하를 배분하는 경우보다 수행시간을 단축할 수 있음을 확인하였다.
따라서 본 논문에서는 CPU와 GPU 수행을 비동기 방식으로 설정하고 유휴상태인 CPU 자원도 포토모자이크 연산에 같이 활용하여 수행시간을 줄이고자 한다. 즉, OpenCL의 비동기 방식을 이용하여 병렬처리를 수행함으로써 CPU와 GPU 자원을 동시에 활용하고, 따라서 기존 방법에서 CPU 자원이 유휴상태로 대기하는 문제를 해결할 수 있다. Fig.
7은 포토모자이크의 정확도를 일부 희생하면서 연산량을 감소시킨 경우를 실험하기 위하여 타일의 개수를 100개로 줄였을 경우의 수행시간을 보여준다. OpenCL 초기화 시간의 상대적인 비율이 Fig. 6보다 커진 것을 확인할 수 있고, GPU 수행시간이 GPU에 배분된 작업부하의 구간별로 유사함을 확인하였다.
10은 타일 개수가 1000개일 경우의 분배량에 따른 총 수행시간을 보여준다. 실험 결과, CPU에 약 3.4 메가픽셀, GPU에 약 2.6 메가픽셀을 분배하였을 경우의 구간부터 CPU에 약 4.1 메가픽셀, GPU에 약 1.9 메가픽셀을 분배하였을 경우의 구간까지에서 총 수행시간이 가장 적은 것으로 확인되었다.
11은 타일 개수 100개일 경우의 분배량에 따른 총 수행시간을 보여준다. 마찬가지로 CPU에 약 3.4 메가픽셀, GPU에 약 2.6 메가픽셀을 분배하였을 경우부터 CPU에 약 4.1 메가픽셀, GPU에 약 1.9 메가픽셀을 분배하였을 경우의 구간까지에서 수행시간이 가장 적은 것으로 확인되었다.
12는 타일 개수 10개일 경우의 분배량에 따른 총 수행시간을 보여준다. 타일 개수 1000개와 100개의 경우와 달리 작업 분배량에 따른 차이가 크지 않으나, CPU에 약 3.4메가픽셀, GPU에 약 2.6 메가픽셀을 분배하였을 경우부터 CPU에 약 4.5 메가픽셀, GPU에 약 1.5 메가픽셀을 분배하였을 경우의 구간까지에서 수행시간이 가장 적은 것으로 확인되었다.
2 메가픽셀이다. 타일 개수 100개의 경우, 개별 수행시간은 1000개 타일의 경우와 다르지만 예측과 최적 분배량은 1000개 타일의 경우와 동일함을 확인하였다(사실 예측과 최적 분배량도 1000개 타일의 경우와 상이할 수 있으나, 0.2 메가픽셀 단위로 작업부하를 설정하면서 발생하는 현상임). 반면 타일의 개수가 10개일 경우에는, 실제 측정하여 구한 최적의 분배량은 CPU에서 3.
종합하면, 연산량이 다른 3가지 모든 경우에서 실제 측정한 최적의 분배량 구간 안에 예측한 작업 분배량이 존재함을 확인하였다. 즉, 작업부하의 최소 분배량 기준으로 모든 경우의 수행시간을 실제 측정 후 최적의 분배량을 얻는 경우는 총 31번의 수행시간 측정이 필요하다.
즉, 작업부하의 최소 분배량 기준으로 모든 경우의 수행시간을 실제 측정 후 최적의 분배량을 얻는 경우는 총 31번의 수행시간 측정이 필요하다. 그러나 제안 방법을 사용하면, CPU-only와 GPU-only 작업 분배 환경에서 측정한 결과를 이용한 초기 작업 분배량이 실측한 최적 분배량 구간 내에 있음을 확인할 수 있었다.
13은 타일 개수가 1000개, 100개, 10개일 경우의 CPUonly, GPU-only, CPU(50%)+GPU(50%)(즉, 작업부하를 CPU와 GPU에 균등배분), 제안 방법의 Speedup을 보여준다. 타일 개수의 모든 경우에서 제안 방법으로 이미지를 분배하였을 경우 CPU-only, GPU-only, CPU(50%)+GPU (50%)보다 성능이 좋아지는 것을 확인할 수 있었다. 타일 개수가 많아질수록 제안 방법의 Speedup이 더 높게 나왔는데, 이것은 타일 개수가 많아짐에 따라서 OpenCL의 초기화 시간이 차지하는 비율이 적어지기 때문이다.
타일 개수가 많아질수록 제안 방법의 Speedup이 더 높게 나왔는데, 이것은 타일 개수가 많아짐에 따라서 OpenCL의 초기화 시간이 차지하는 비율이 적어지기 때문이다. 즉, 정확도를 높이기 위해 타일 개수를 1000개로 설정할 경우, CPU-only, GPU-only, CPU(50%)+GPU(50%), 제안 방법의 Speedup은 각각 20, 12, 20, 29이었다(OpenCL의 초기화 시간이 차지하는 비율이 적어지더라도 단순히 작업부하를 CPU와 GPU에 균등배분하면 CPU-only와 GPU-only보다 좋은 성능을 보장하지 않음). 특이한 점은 주어진 실험 환경에서는 GPU보다 CPU만을 이용할 때 더 좋은 성능을 제공하고, CPU에서 병렬처리할 경우 캐시 히트율의 개선으로 Super-speedup을 얻을 수 있었다는 점이다.
즉, 정확도를 높이기 위해 타일 개수를 1000개로 설정할 경우, CPU-only, GPU-only, CPU(50%)+GPU(50%), 제안 방법의 Speedup은 각각 20, 12, 20, 29이었다(OpenCL의 초기화 시간이 차지하는 비율이 적어지더라도 단순히 작업부하를 CPU와 GPU에 균등배분하면 CPU-only와 GPU-only보다 좋은 성능을 보장하지 않음). 특이한 점은 주어진 실험 환경에서는 GPU보다 CPU만을 이용할 때 더 좋은 성능을 제공하고, CPU에서 병렬처리할 경우 캐시 히트율의 개선으로 Super-speedup을 얻을 수 있었다는 점이다.
실험 결과, 타일 개수와 무관하게 제안된 방법으로 계산된 초기 분배량이 실제 측정하여 얻은 최적 분배량 구간 내에 있음을 확인하였다. 또한, 연산량이 늘어날수록 CPU-only, GPU-only, CPU(50%)+GPU(50%) 방법 대비 제안 방법의 Speedup 차이가 증가함을 확인하였다.
실험 결과, 타일 개수와 무관하게 제안된 방법으로 계산된 초기 분배량이 실제 측정하여 얻은 최적 분배량 구간 내에 있음을 확인하였다. 또한, 연산량이 늘어날수록 CPU-only, GPU-only, CPU(50%)+GPU(50%) 방법 대비 제안 방법의 Speedup 차이가 증가함을 확인하였다. 즉, 타일 개수가 1000개일 경우에 제안 방법을 사용하면 Speedup은 29를 얻게 되는데, 이것은 CPU-only, GPU-only, CPU(50%)+ GPU(50%)로 병렬처리한 결과보다 각각 45%, 141%, 45% 향상된 성능임을 확인하였다.
또한, 연산량이 늘어날수록 CPU-only, GPU-only, CPU(50%)+GPU(50%) 방법 대비 제안 방법의 Speedup 차이가 증가함을 확인하였다. 즉, 타일 개수가 1000개일 경우에 제안 방법을 사용하면 Speedup은 29를 얻게 되는데, 이것은 CPU-only, GPU-only, CPU(50%)+ GPU(50%)로 병렬처리한 결과보다 각각 45%, 141%, 45% 향상된 성능임을 확인하였다.
따라서 총 6 메가픽셀을 갖는 3072×2048 이미지의 경우, CPU에 약 3.8 메가픽셀, GPU에 약 2.2 메가픽셀로 분배할 경우 최적의 분배량이라고 예측할 수 있다.
질의응답
핵심어
질문
논문에서 추출한 답변
GPU는 어디에 활용되는가?
최근 고성능 컴퓨팅과 모바일 컴퓨팅 분야에서 성능가속기인 GPU(Graphics Processing Unit), DSP(Digital Signal Processing), FPGA(Field Programmable Gate Array) 등을 사용하여 성능을 개선하는 연구가 활발히 진행되고 있다[1]. 예를 들어, 대표적인 성능가속기인 GPU는 범용 병렬프로그래밍 프레임워크인 CUDA[2] 등을 활용하여 많은 응용에 적용되고 있다[3-6]. 그러나 CUDA의 경우 NVIDIA 계열의 제품에서만 동작하는 단점이 있고, CPU와 같은 마이크로프로세서에서는 지원을 하지 않는다.
본 저자가 제안하는 이기종 컴퓨팅 환경에서의 작업부하 분배 방법은?
본 논문에서는 CPU와 GPU로 구성된 이기종 컴퓨팅 환경에서 포토모자이크 수행 시 작업부하 분배 방법을 제안한다. 즉, 포토모자이크 응용을 비동기 방식으로 병렬화하여 CPU와 GPU 자원을 동시에 활용하고, 각 처리기에 할당할 최적의 작업부하량을 예측하기 위해 CPU-only와 GPU-only 작업 분배 환경에서 수행시간을 측정한다. 제안 방법은 간단하지만 매우 효과적이고, CPU와 GPU로 구성된 이기종 컴퓨팅 환경에서 다른 응용을 병렬화하 데에도 적용될 수 있다.
CUDA의 단점은?
예를 들어, 대표적인 성능가속기인 GPU는 범용 병렬프로그래밍 프레임워크인 CUDA[2] 등을 활용하여 많은 응용에 적용되고 있다[3-6]. 그러나 CUDA의 경우 NVIDIA 계열의 제품에서만 동작하는 단점이 있고, CPU와 같은 마이크로프로세서에서는 지원을 하지 않는다. 이러한 이식성(portability)의 문제점을 해결한 것이 최근 발표된 OpenCL 표준[7]이다.
참고문헌 (13)
C. Chun, S. Hong, J. Bae, and M. Lee, "High Performance Computing Using GPU's: with Application to Financial Derivatives Modeling," The Journal of Korean Institute of Next Generation Computing, Vol.5, No.1, pp.30-40, 2009.
J. Nickolls, I. Buck, M. Garland, and K. Skadron, "Scalable Parallel Programming with CUDA," ACM Queue, Vol.6, No.2, pp.40-53, 2008.
I. Kim, K. Chang, C. Lee, D. Oh, and W. Ro, "An Efficient H.264 Encoding Process using Multiple GPUs," in Proceedings of the IEEK Summer Conference, Jeju, pp.739-740, 2012.
J. Kang, D. Lee, I. Kang, and H. Yu, "A Study on a Declines in Performance by Memory Copy in CUDA," in Proceedings of the 40th conference of the KIPS, Jeju, pp.135-138, 2013.
J. Kim, S. Ko, and N. Park, "Implementation of High-Throughput AES Algorithm using CUDA," in Proceedings of the 2014 Spring Conference of the KIPS, Suwon, pp.119-120, 2014.
Y. Jeong, N. Tran, and M. Lee, "Parallelization and Optimization of Boyer-Moore Algorithm on GPU," in Proceedings of the KCC, Busan, pp.54-56, 2014.
J. Stone, D Gohara, and G Shi, "OpenCL: A Parallel Programming Standard for Heterogeneous Computing Systems," Computing in Science and Engineering, Vol.12, No.3, pp.66-73, 2010.
Y. Yuan, Z. He, Z. Gong, and W. Qiu, "Acceleration of AES Encryption with OpenCL," in Proceedings of The 9th Asia JCIS, Wuhan, pp.64-70, 2014.
M. Bach, V. Lindenstruth, O. Philipsen, and C. Pinke, "Lattice QCD based on OpenCL," Computer Physics Communications, Vol.184, No.9, pp.2042-2052, 2013.
V. Demchik and N. Kolomoyets, "QCDGPU: open-source package for Monte Carlo lattice simulations on OpenCLcompatible multi-GPU systems," in Proceedings of The 3rd HPC-UA, Kyiv, pp.92-99, 2013.
R. Silvers and M. Hawley, "Photomosaics," New York: Holt Paperbacks, 1997.
D. Kang and K. Yoon, "Photomosaic using a programmable GPU," Journal of the Korea Computer Graphics Society, Vol.15, No.1, pp.17-25, 2008.
J. Yang, C. Joo, and K. Oh, "Photo Mosaics using Quad-tree structure on GPU," Journal of the Korea Computer Graphics Society, Vol.17, No.1, pp.25-31, 2011.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.