연구실

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)은 작은 그래프나 디버깅용으로 적합​