[논문 리뷰] Benchmarking OpenCL, OpenACC, OpenMP, and CUDA: programming productivity, performance, and energy consumption
이 논문은 Intel Xeon Phi 및 GPU 시스템에서 SPEC Accel 및 Rodinia 벤치마크 세트를 사용하여 OpenMP, OpenACC, OpenCL 및 CUDA의 프로그래밍 생산성, 성능 및 에너지 효율성 측면에서 벤치마킹을 수행한다. 그 결과 OpenMP는 코드 수정이 가장 적게 필요했으며, 전체 라인의 4.86%만 수정되었고, OpenCL은 OpenACC 및 CUDA보다 훨씬 더 많은 노력을 요구했지만, Ida와 같은 GPU 가속 시스템에서는 뛰어난 성능을 발휘함을 확인했다.
Many modern parallel computing systems are heterogeneous at their node level. Such nodes may comprise general purpose CPUs and accelerators (such as, GPU, or Intel Xeon Phi) that provide high performance with suitable energy-consumption characteristics. However, exploiting the available performance of heterogeneous architectures may be challenging. There are various parallel programming frameworks (such as, OpenMP, OpenCL, OpenACC, CUDA) and selecting the one that is suitable for a target context is not straightforward. In this paper, we study empirically the characteristics of OpenMP, OpenACC, OpenCL, and CUDA with respect to programming productivity, performance, and energy. To evaluate the programming productivity we use our homegrown tool CodeStat, which enables us to determine the percentage of code lines that was required to parallelize the code using a specific framework. We use our tool x-MeterPU to evaluate the energy consumption and the performance. Experiments are conducted using the industry-standard SPEC benchmark suite and the Rodinia benchmark suite for accelerated computing on heterogeneous systems that combine Intel Xeon E5 Processors with a GPU accelerator or an Intel Xeon Phi co-processor.
연구 동기 및 목표
- OpenMP, OpenACC, OpenCL 및 CUDA라는 네 가지 주요 이종 프로그래밍 프레임워크의 프로그래밍 생산성, 성능 및 에너지 소비를 평가하고 비교하기 위해.
- 특정 대상 시스템과 애플리케이션 환경에 가장 적합한 프레임워크를 선택하는 데 도전 과제를 해결하기 위해.
- 각 프레임워크를 사용할 때 코드를 병렬화하기 위해 필요한 인간적 노력의 양을 정량화하기 위해, 특히 코드 라인 수정 비율과의 관계를 중심으로.
- 실제로 GPU와 Intel Xeon Phi 가속기 탑재 이종 시스템에서의 실제 성능 및 에너지 소비를 측정하고 비교하기 위해.
- 생산성, 성능 및 에너지 효율성 간의 상호 교환 관계를 바탕으로 프레임워크 선택을 안내할 수 있는 경험적 데이터를 제공하기 위해.
제안 방법
- 프로그래밍 생산성의 지표로 사용하기 위해, 병렬화를 위해 수정된 코드 라인 비율을 측정하기 위해 자체 개발한 도구인 CodeStat을 사용함.
- GPU 및 Intel Xeon Phi 가속기 탑재 시스템에서 성능과 에너지 소비를 모두 측정하기 위해 MeterPU의 확장판인 x-MeterPU를 개발함.
- Ida(GTX Titan X GPU 탑재)와 Emil(이중 Intel Xeon Phi E5 프로세서 탑재)이라는 두 대의 이종 시스템에서 실험을 수행함.
- 산업 표준 벤치마크 세트인 SPEC Accel 및 Rodinia를 사용하여 다양한 계산 집약적 커널을 커버함.
- 모든 프레임워크와 벤치마크에 대해 실행 시간 및 에너지 소비 데이터를 수집하여 프레임워크 간 비교를 가능하게 함.
- 코드 수정 비율, 실행 시간, 에너지 효율성 등의 다중 지표를 분석하여 비교적 통찰을 도출함.
실험 결과
연구 질문
- RQ1OpenMP, OpenACC, OpenCL 및 CUDA 간에 프로그래밍 생산성(코드 수정 노력 측정)을 비교할 때 어떤가?
- RQ2GPU 및 Xeon Phi 가속 시스템에서 OpenCL, OpenACC, OpenMP 및 CUDA 간의 성능 차이는 어떻게 되는가?
- RQ3동일한 벤치마크를 실행할 때 네 가지 프레임워크 간 에너지 소비는 어떻게 달라지는가?
- RQ4인간 요인이 병렬 프로그래밍 작업에서 코드 수정 비율에 얼마나 큰 영향을 미치는가?
- RQ5이종 컴퓨팅 환경에서 생산성, 성능 및 에너지 효율성 간의 최적 트레이드오프를 제공하는 프레임워크는 무엇인가?
주요 결과
- OpenMP는 코드 수정 비율이 가장 낮아 전체 라인의 4.86%만 수정되었으며, 본 연구에서 가장 생산성이 높은 프레임워크로 나타남.
- OpenCL는 코드 라인의 9.07%가 수정되었고, OpenACC보다 훨씬 더 높은 생산성 비용을 유발함을 확인함.
- Rodinia 벤치마크 세트에서 OpenCL은 CUDA에 비해 병렬화 작업을 약 두 배 더 많은 노력이 필요로 함.
- GPU 가속 시스템인 Ida에서 OpenCL은 LBM 및 MRI-Q 커널의 실행 시간에서 OpenACC를 능가했지만, Stencil 커널의 경우 결과가 유사함.
- Ida 시스템에서 OpenMP, OpenCL 및 CUDA는 유사한 성능과 에너지 소비를 보였으며, 이는 유사한 효율성 프로파일을 가짐을 시사함.
- 인간 요인이 코드 수정 비율에 상당한 영향을 미쳤으며, 이는 다양한 프레임워크 간 개발자 노력의 변동성이 있음을 시사함.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.