잔글편집 요약 없음 |
잔글편집 요약 없음 |
||
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"