편집 요약 없음
잔글편집 요약 없음
 
(같은 사용자의 중간 판 하나는 보이지 않습니다)
3번째 줄: 3번째 줄:
== 개요 ==
== 개요 ==
Princeton Application Repository for Shared-Memory Computers(PARSEC)은 프린스턴 대학교에서 만든 벤치마크 툴로, 무료로 다양한 범위의 컴퓨팅 벤치마크를 할 수 있게 한다. PARSEC은 병렬컴퓨팅 환경에서 다양한 컴퓨팅 파워를 체크할 수 있도록 설계되었다. PARSEC은 현재 Version 3까지 나와있으며 다음과 같은 벤치마크를 돌릴 수 있다.
Princeton Application Repository for Shared-Memory Computers(PARSEC)은 프린스턴 대학교에서 만든 벤치마크 툴로, 무료로 다양한 범위의 컴퓨팅 벤치마크를 할 수 있게 한다. PARSEC은 병렬컴퓨팅 환경에서 다양한 컴퓨팅 파워를 체크할 수 있도록 설계되었다. PARSEC은 현재 Version 3까지 나와있으며 다음과 같은 벤치마크를 돌릴 수 있다.
* blacksholes
{| class="wikitable"
* bodytrack
|+
* canneal
!프로그램 이름
* dedup
!적용 분야
* facesim
!병렬화 모델
* ferret
!병렬화 정도
...
!워킹셋 크기
!데이터 공유
!데이터 교환
|-
|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 다운로드
==설치 방법==
*PARSEC 3 다운로드
  wget http://parsec.cs.princeton.edu/download/3.0/parsec-3.0-core.tar.gz
  wget http://parsec.cs.princeton.edu/download/3.0/parsec-3.0-core.tar.gz
* Unpakc PARSEC 3
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  
  tar -xzf parsec-3.0.tar.gz; cd parsec-3.0  
* 환경 변수 설정
*환경 변수 설정
  bash; source env.sh # PARSEC은 bash shell에서만 env.sh이 정상적으로 작동함.
  bash; source env.sh # PARSEC은 bash shell에서만 env.sh이 정상적으로 작동함.
* Build/Run/Uninstall
./configure # github에서 다운 받은 경우 test파일들이 설치되어 있지 않기 때문에 ./configure로 설치해야 함)
  parsecmgmt -a build -p streamcluster (all for building all benchmarks)
*Build/Run/Uninstall
  parsecmgmt -a run -p streamcluster (all for running all benchmarks)
  parsecmgmt -a build -p streamcluster (all for building all benchmarks) -n <num of thread>
  parsecmgmt -a fulluninstall -p streamcluster
  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)님의 스크립트를 사용하면 다음과 같이 편하게 교환할 수 있다.  
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/apps/ferret | xargs sed -i "s/HUGE/DBL_MAX/g"
  grep -rl "HUGE" pkgs/netapps/netferret | xargs sed -i "s/HUGE/DBL_MAX/g"  
  grep -rl "HUGE" pkgs/netapps/netferret | xargs sed -i "s/HUGE/DBL_MAX/g"  


== 참고 ==
==참고==
# https://parsec.cs.princeton.edu/parsec3-doc.htm
#https://parsec.cs.princeton.edu/parsec3-doc.htm
# https://yulistic.gitlab.io/2016/05/parsec-3.0-installation-issues/
#https://yulistic.gitlab.io/2016/05/parsec-3.0-installation-issues/
# https://ve0x10.in/blog/2022/running-parsec-benchmark/
#https://ve0x10.in/blog/2022/running-parsec-benchmark/

2023년 8월 7일 (월) 05:13 기준 최신판


개요

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/