본문 바로가기
CUDA 프로그래밍

Rodinia 벤치마크 - 개요

by 채소장사 2019. 10. 26.

 병렬 연산을 위한 가속 디바이스(accelerator)들이 출현하면서, 이기종 컴퓨팅(heterogeneous computing)의 성능 측정을 위한 벤치마크도 필요해졌다. Parboil 벤치마크와 더불어 GPU성능 측정을 위해 활용되는 Rodinia 벤치마크는 University of Virginia에서 연구되었고, (IISWC '09) Rodinia : A Benchmark Suite for Heterogeneous Computing 이라는 논문을 통해 소개되었다. 논문의 내용을 바탕으로 Rodinia의 특징에 대하여 생각해본다.

https://dl.acm.org/citation.cfm?id=1680782

 

Rodinia

Rodinia: A benchmark suite for heterogeneous computing Authors: Shuai Che Department of Computer Science, University of Virginia, USA Michael Boyer Department of Computer Science, University of Virginia, USA Jiayuan Meng Department of Computer Science, Uni

dl.acm.org

 Rodinia는 GPU와 멀티코어 CPU에서 병렬처리(parallelism)와 데이터 공유특성을 잘 드러내는 애플리케이션을 Berkeley dwarves에 따라 선택하여 구성되었다. 여기서 Dwarf는 연산과 통신 패턴(pattern of computation and communication)을 찾아낼 수 있는 알고리즘 방법론을 의미한다. 컴퓨터 구조, 병렬 컴퓨팅, 분석전문가를 포함한 여러 분야의 전문가들은 병렬 아키텍처와 새로운 프로그래밍 모델을 개발할 수 있도록 13개의 Dwarf 묶음을 설계하였다. Berkeley에서 연구된 dwarf 묶음을 실행할 때 나타나는 성능을 통해, 새로 연구되는 아키텍처 및 애플리케이션의 실제 성능을 예상해 볼 수 있었다. 2009년 당시(실제로는 2008년 소개되었던 벤치마크를 발전시켰다)에는 9개의 애플리케이션이 포함되어 있었고, 현재의 최신버전인 Rodinia 3.1에는 CUDA 성능 측정을 위한 총 23개의 애플리케이션이 포함되어 있다.

https://rodinia.cs.virginia.edu/doku.php?id=start

 

start [Rodinia]

A vision of heterogeneous computer systems that incorporate diverse accelerators and automatically select the best computational unit for a particular task is widely shared among researchers and many industry analysts; however, there are no agreed-upon ben

rodinia.cs.virginia.edu

 Rodinia의 workload는 서로 다른 종류의 병렬성(parallelism), 데이터 액세스 패턴, 데이터 공유 특성을 가지고 있다. 또 다양한 영역의 애플리케이션을 다루고 있으며, 비록 각 애플리케이션이 동인한 dwarf 기준으로 선택되었어도 실제 특성은 다르다. 마지막으로 애플리케이션의 입력 데이터 크기는 유연하게 선택하여 다양한 실험을 수행할 수 있다. 

참고로 Rodinia 페이지에 따르면 현재 dwarf는 ( structured grid / unstructured grid / graph traversal / dense linear algebra / dynamic programming / N-body / sorting / finite state machine )로 8개이고, 애플리케이션의 도메인은 이미지 처리, 유체역학, 분자동역학, 그래프 알고리즘 등으로 여러 영역에 걸쳐 선택되었음을 알 수 있다.

 발표 당시의 논문을 보면 Rodinia 벤치마크는 다음의 특성들을 멀티코어 CPU와 매니코어 GPU에서 비교하는 것에 중점을 뒀음을 알 수 있다. 

1) parallelization and speedup 

2) computation vs. communication

3) synchronization

4) power consumption

 

실험을 위해 Rodinia 메인 페이지에 링크된 다운로드 페이지에서 벤치마크를 받아도 좋고, 다른 연구자들이 올려놓은 github 페이지를 이용해도 좋을 것 같다. 

https://github.com/yuhc/gpu-rodinia

 

yuhc/gpu-rodinia

Rodinia benchmark. Contribute to yuhc/gpu-rodinia development by creating an account on GitHub.

github.com

단, 위의 깃헙페이지에는 data가 빠져 있어서 Julia를 사용하기 위해 포팅한 다음 깃헙페이지에서 데이터를 받아왔다.

https://github.com/JuliaParallel/rodinia

 

JuliaParallel/rodinia

Julia ports of the Rodinia benchmark suite for heterogeneous computing infrastructures - JuliaParallel/rodinia

github.com

 

댓글