연구실
GAPBS 벤치마크 사용법
sw.kim
2025. 10. 13. 22:40
빌드 및 기본 실행
git clone https://github.com/sbeamer/gapbs.git
cd gapbs
make
공식 gapbs는 위의 레포이지만, 개인적으로는 아래의 수정한 레포를 사용한다.
시간과 관련하여 세 가지를 수정하였는데,
1. 시간 측정 함수를 steady clock으로 바꿔서 안정성을 가져가고,
2. 평균 시간 산출 방식을 산술 평균에서 기하 평균으로 변경하였으며,
3. 첫번째 실행을 average time 계산에서 제외하였다(warm-up)
https://github.com/hogumalatte/gapbs.git
GitHub - hogumalatte/gapbs: GAP Benchmark Suite_with geometric mean & steady clock
GAP Benchmark Suite_with geometric mean & steady clock - hogumalatte/gapbs
github.com
기본 테스트 실행:
./bfs -g 10 -n 1
그래프 생성 및 실행 방식
1. 메모리에서 직접 생성
./bfs -g 20 -n 51
- -g 29: 2^20 크기의 Kronecker 그래프 생성
- -n 51: 51번의 반복 실행
- 파일 I/O 없이 메모리에서 즉시 그래프 생성하여 실행
2. 그래프 파일 미리 생성 후 실행
그래프 생성
./converter -g 20 -b kron20.sg # serialized graph 생성
./converter -g 20 -e kron20.el # edge-list 생성
실행
./bfs -f kron20.sg
./bfs -f kron20.el
지원 파일 포맷
- .el: plain-text edge-list (텍스트 기반, 파싱 오버헤드 있음)
- .wel: weighted edge-list (가중치 포함)
- .gr: DIMACS format (표준화된 메타데이터 포함)
- .graph: Metis format (파티셔닝 최적화)
- .mtx: Matrix Market format (희소 행렬 형식)
- .sg: serialized pre-built graph (바이너리, 빠른 로딩, 성능 최적)
- .wsg: weighted serialized graph (가중치 포함 바이너리)
성능 최적화 팁
- 대용량 그래프는 .sg 포맷 사용 권장 (캐시 효율 높음, I/O 최소화)
- 메모리 직접 생성 방식(-g 옵션)은 -g 옵션을 크게 가져갈수록 빌드 시간이 오래걸리니 여러번 반복하는 실험이라면 미리 만들어두는 것이 좋다.
- 텍스트 기반(.el, .wel)은 작은 그래프나 디버깅용으로 적합