Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

PARSEC

From noriwiki


개요

Princeton Application Repository for Shared-Memory Computers(PARSEC)은 프린스턴 대학교에서 만든 벤치마크 툴로, 무료로 다양한 범위의 컴퓨팅 벤치마크를 할 수 있게 한다. PARSEC은 병렬컴퓨팅 환경에서 다양한 컴퓨팅 파워를 체크할 수 있도록 설계되었다. PARSEC은 현재 Version 3까지 나와있으며 다음과 같은 벤치마크를 돌릴 수 있다.

프로그램 이름 적용 분야 병렬화 모델 병렬화 정도 워킹셋 크기 데이터 공유 데이터 교환
blackscholes Financial Analysis data-parallel coarse small low low
bodytrack Computer vision data-parallel medium medium high medium
canneal Engineering unstructured fine unbounded high high
dedup Enterprise stroage pipieline medium unbounded high high
facesim Animation data-parallel coarse large low medium
ferret Similarity search pipeline medium unbounded high high
fluidanimate Animation data-parallel fine large low medium
freqmine Data mining data-parallel medium unbounded high medium
raytrace Rendering data-parallel medium unbounded high medium
streamcluster Data mining data-parallel medium medium low medium
swaptions Financial anlysis data-parallel coarse medium low low
vips Media processing data-paralell coarse medium low medium
x264 Media processing pipline coarse medium high high


설치 방법

  • PARSEC 3 다운로드
wget http://parsec.cs.princeton.edu/download/3.0/parsec-3.0-core.tar.gz
git clone https://github.com/cirosantilli/parsec-benchmark.git # 이 버전은 우분투 22.04에서도 돌릴 수 있게 여러 버그들을 고친 버전임. <참고용>
  • Unpakc PARSEC 3
tar -xzf parsec-3.0.tar.gz; cd parsec-3.0 
  • 환경 변수 설정
bash; source env.sh # PARSEC은 bash shell에서만 env.sh이 정상적으로 작동함.
./configure # github에서 다운 받은 경우 test파일들이 설치되어 있지 않기 때문에 ./configure로 설치해야 함)
  • Build/Run/Uninstall
parsecmgmt -a build -p streamcluster (all for building all benchmarks) -n <num of thread>
parsecmgmt -a run -p streamcluster (all for running all benchmarks) -n <num of thread>
parsecmgmt -a uninstall -p streamcluster

벤치마크 돌리는 법

parsecmgmt -a run -p <test name> -i <input setting> -n <thread num> -c <build conf>

에서 i에 해당하는 인자를 어떤것을 넣느냐에 따라서 벤치마크의 크기를 정할 수 있다.

  • test: 제일 작은 테스트용 벤치마크 설정 파일 입력
  • simdev: 매우큰 실제 input과 비슷한 벤치마크 설정
  • simsmall, simmedium, simlarge: 각각 1s, 5s, 15s 정도 돌릴 수 있도록 고려된 벤치마크 설정
  • native: 대략 15분 정도 걸리는 실제와 같은 input을 사용하는 벤치마크 설정

이때 -c 옵션을 통해서 어떤 build configuration을 줄지 설정할 수 있다. 기본 build configuration은 gcc, gcc-hooks, gcc-serial 그리고 icc이며, gcc-openmp, gcc-pthreads, gcc-tbb와 같은 specific parallelization옵션들을 선택할 수 있다.

만약 peak memory usage와 같은 다른 벤치마크 결과도 보고 싶을 경우에는, "/bin/usr/time -v"를 -s 옵션을 통해서 주면 벤치마크가 사용할 default tool이 바뀌어서 peak memory usage도 출력해 준다.

parsecmgmt -a run -p bodytrack -i simlarge -s "/usr/bin/time -v"

에러 핸들링

1. ferret 에서 "error: ‘HUGE’ undeclared (first use in this function)": 모든 HUGE를 DBL_MAX로 교환 하면 된다. 종률 선배(yulistic)님의 스크립트를 사용하면 다음과 같이 편하게 교환할 수 있다.

grep -rl "HUGE" pkgs/apps/ferret | xargs sed -i "s/HUGE/DBL_MAX/g"
grep -rl "HUGE" pkgs/netapps/netferret | xargs sed -i "s/HUGE/DBL_MAX/g" 

참고

  1. https://parsec.cs.princeton.edu/parsec3-doc.htm
  2. https://yulistic.gitlab.io/2016/05/parsec-3.0-installation-issues/
  3. https://ve0x10.in/blog/2022/running-parsec-benchmark/