다른 명령
잔글편집 요약 없음  | 
				잔글편집 요약 없음  | 
				||
| 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까지 나와있으며 다음과 같은 벤치마크를 돌릴 수 있다.  | ||
{| class="wikitable"  | |||
|+  | |||
!프로그램 이름  | |||
!적용 분야  | |||
!병렬화 모델  | |||
!병렬화 정도  | |||
!워킹셋 크기  | |||
!데이터 공유  | |||
!데이터 교환  | |||
|-  | |||
|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이 정상적으로 작동함.  | ||
  ./configure # github에서 다운 받은 경우 test파일들이 설치되어 있지 않기 때문에 ./configure로 설치해야 함)  |   ./configure # github에서 다운 받은 경우 test파일들이 설치되어 있지 않기 때문에 ./configure로 설치해야 함)  | ||
* Build/Run/Uninstall  | *Build/Run/Uninstall  | ||
  parsecmgmt -a build -p streamcluster (all for building all benchmarks)  |   parsecmgmt -a build -p streamcluster (all for building all benchmarks) -n <num of thread>  | ||
  parsecmgmt -a run -p streamcluster (all for running all benchmarks)  |   parsecmgmt -a run -p streamcluster (all for running all benchmarks) -n <num of thread>  | ||
  parsecmgmt -a   |   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"