Install and Run SPEC2006

Linux 2013. 10. 19. 16:31

'Linux' 카테고리의 다른 글

웹접속 속도가 느려 졌을때 점검 해보기  (0) 2014.03.30
xterm  (0) 2013.11.19
Compile SPEC CPU2006  (0) 2013.10.19

Compile SPEC CPU2006

Linux 2013. 10. 19. 16:31

ARM

1. Install SPEC CPU2006.

$ cd {path to SPEC_CPU2006}
$ ./install.sh
>> choose my platform, in my cause type "x86_64"
<< installation finish and ./shrc file is created

2. install ARM cross compiler
[Ref] http://www.m5sim.org/wiki/index.php/Download
$ sudo apt-get install gcc-arm-linux-gnueabi libc6-dev-armel-cross packages
$ which arm-linux-gnueabi-gcc
<< /usr/bin/arm-linux-gnueabi-gcc

3. Create configuration file for SPEC2006 build
[Ref] http://www.mail-archive.com/gem5-users@m5sim.org/msg04983/armv7-gcc.cfg 
- change below line and save

CC           = arm-none-linux-gnueabi-gcc 
CXX          = arm-none-linux-gnueabi-g++
CC           = /usr/bin/arm-linux-gnueabi-gcc 
CXX          = /usr/bin/arm-linux-gnueabi-g++





4. Compile A benchmark
[ref] http://holypsycho.egloos.com/3084145
$ source ./shrc
$ runspec --config=armv7-gcc.cfg --action=build --tune=base bzip2




.










5. Run with Gem5
$ cd {gem5-stable}
$ ./build/ARM/gem5.opt ./configs/example/se.py -c /home/gihoon81/SPECCPU_2006/benchspec/CPU2006/401.bzip2/run/build_base_armv7-gcc.0000/bzip2 -o "/home/gihoon81/SPECCPU_2006/benchspec/CPU2006/401.bzip2/data/all/input/input.combined 3"

출처: http://www.foxwolf.net/gihun/63


ALPHA

Ref 1: http://jorrigal.blogspot.com/2008/12/spec-cpu-2006-benchmarks-linux-alpha-to.html 
Ref 2: http://www.m5sim.org/wiki/index.php/SPEC2006_benchmarks
Ref 3(pre-compiled cross-compiler): http://www.m5sim.org/wiki/index.php/Download
Ref 4(SPEC CPU 2006 commands):http://www.eecs.harvard.edu/~vj/index.php/SPEC_CPU2006_Commands



1. SPEC CPU 2006 설치
# cd SPEC-CPU2006
# ./install.sh
(Ref 1을 보면 자세한 모양?이 나온다.)

2. cross compiler 설치
가장 간단하게
http://www.m5sim.org/wiki/index.php/Download
에서 gcc-4.3.2, glibc-2.6.1 (NPTL,x86/64) 라고 되어 있는 것을 받자.
적당한 디렉토리에서 (여기가 아래에서 [cross compiler installed dir]이 된다.)
# wget http://www.m5sim.org/dist/current/alphaev67-unknown-linux-gnu.tar.bz2
# tar xvfj alphaev67-unknown-linux-gnu.tar.bz2

3. alpha cross compile용 환경설정 파일 만들기
# cd SPEC-CPU2006/config/
# cp linux32-i386-gcc42.cfg alpha.cfg
# vi alpha.cfg
다음을 참고하여 수정
======================================================================================================
ext = alpha // it will add extension alpha to your binaries

CC = [cross compiler installed dir]/alpha-unknown-linux-gnu/bin/alpha-unknown-linux-gnu-gcc
CXX = [cross compiler installed dir]/alpha-unknown-linux-gnu/bin/alpha-unknown-linux-gnu-g++
FC = [cross compiler installed dir]/alpha-unknown-linux-gnu/bin/alpha-unknown-linux-gnu-gfortran

COPTIMIZE     = -O3 -static

CXXOPTIMIZE  = -O3 -static

FOPTIMIZE    = -O3 -static

======================================================================================================
이미 수정된 파일을 원한다면 이것을 받으면 된다. [alpha.cfg]

4. build
# cd SPEC-CPU2006
# . ./shrc
# runspec --config=alpha.cfg --action=build --tune=base bzip2
여기서 파란 부분은 base 혹은 peak으로 하면 되고,
빨간색 부분은 다른 benchmark 이름으로 바꾸어 가면서 하면 된다.
다음은 이것에 대한 간단한 스크립트
=========================================================================================================
#!/bin/bash
. ./shrc
for bench in 400.perlbench 401.bzip2 403.gcc 429.mcf 445.gobmk 456.hmmer 458.sjeng 462.libquantum 464.h264ref 471.omnetpp 473.astar 483.xalancbmk 410.bwaves 416.gamess 433.milc 435.gromacs 436.cactusADM 437.leslie3d 444.namd 447.dealII 450.soplex 453.povray 454.calculix 459.GemsFDTD 465.tonto 470.lbm 481.wrf 482.sphinx3
do
        for tune in base peak
        do
                runspec --config=alpha.cfg --action=build --tune=$tune $bench
        done
done
======================================================================================================

출처: http://holypsycho.egloos.com/3084145#148614


'Linux' 카테고리의 다른 글

웹접속 속도가 느려 졌을때 점검 해보기  (0) 2014.03.30
xterm  (0) 2013.11.19
Install and Run SPEC2006  (0) 2013.10.19

아 빡쳐

Everyday 2013. 10. 12. 16:12

하........ 리눅스는 참 병신같다............

아......... 누가 쫌 도와줘.......

Everyday 2013. 10. 12. 14:22

gem5 이건 어케하는건지 진짜 답답하다..............

'Everyday' 카테고리의 다른 글

다이슨의 굴욕…삼성 특허침해 소송 자진 취하(종합)  (0) 2013.11.20
아 빡쳐  (0) 2013.10.12
이상하네 아무리 봐도..........  (1) 2013.09.30
헛........  (0) 2013.05.19
아놔  (3) 2013.04.02

이상하네 아무리 봐도..........

Everyday 2013. 9. 30. 19:20

이상하네에........


공개 해놓은 글은 1/100도 안되는데......

것도 초창기 글밖에......


근데 어애 꾸준히 방문자 수가 오르는것일까?? ㅡㅡ??

궁금궁금

'Everyday' 카테고리의 다른 글

아 빡쳐  (0) 2013.10.12
아......... 누가 쫌 도와줘.......  (0) 2013.10.12
헛........  (0) 2013.05.19
아놔  (3) 2013.04.02
  (0) 2013.03.15

헛........

Everyday 2013. 5. 19. 20:36

영일아 느므 많이 논거 아니여라?

'Everyday' 카테고리의 다른 글

아......... 누가 쫌 도와줘.......  (0) 2013.10.12
이상하네 아무리 봐도..........  (1) 2013.09.30
아놔  (3) 2013.04.02
  (0) 2013.03.15
아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ  (0) 2012.06.22

WIDE/IO 에서 512bit 접근의 의미

Learning stuff 2013. 4. 19. 21:37

Wide IO 에서 512bit 즉 32byte단위 접근이라는 것은

BANK  단위의 접근이 아니라 RANK 단위의 접근이다.


DDR 시리즈에서 이어서 이야기를 써본다면

DDR은 동시에 BANK 에서 동시에 2배의 데이터를 꺼내어와 버스에서 속도를 가속 시켜 꺼내오는 방식이고

반면에, WIDE IO는... 이그림이 젤 좋겠다.





일단 나중에 설명해야지......

설명은 논문 : Variation-Tolerant Non-Uniform 3D Cache Management in Die Stacked Multicore Processor 참조


여기서 말하고 싶은거는 Each Bank 당 128bit를 꺼내오고 그 데이터 들은 왼쪽 위에 있는 4buffer에 저장되고 1개의 rank에 속해있는 4개의 bank에서 꺼내온 각각의 data들은 가져와서 512bit 즉 64byte를 만들어서 쓴다.


웃긴건 여기에 보면 Private L1이나 L2 둘다 64B의 line size를 가진다는 것이다.

참고로 왼쪽 위에 있는 그림은 1개의 rank의 peri 이고 저기에 있는 한개의 tag bank 와 4buffer 는 위로 stack되어있는 4개의 sub-bank 즉 1개의 bank를 지원해준다.

'Learning stuff' 카테고리의 다른 글

could not find kernel image /casper/vmlinuz 에러 관련  (2) 2014.07.15
git 관련  (0) 2014.07.15
프로세스 식별자(PID)  (0) 2013.04.11
프로세스 정의, 정리(개념 및 종류)  (0) 2013.04.10
JIT  (0) 2013.03.05

프로세스 식별자(PID)

Learning stuff 2013. 4. 11. 12:55

PID는 Process IDentifier로 프로세스 식별자라 하며 유닉스 커널과 같은 운영체계에서 각 프로세스나 서비스를 식별하기 위해 할당하는 고유한 번호이다. PID는 "fork"라는 시스템 호출에 의해 반환되며, 주어진 프로세스에 어떤 행동을 이행하기 위해 wait()나 kill()등이 전달될 수있다.

 

리눅스의 사용자가 하나의 명령어를 사용하기 위해 쉘 프롬프트에서 사용하고자 하는 어떤 명령을 입력하고 Enter를 치면 쉘은 그 이름이 먼저 쉘에서 제공되는 내부 명령인지 확인하고, 내부 명령으로 확인이 된다면 그것을 자체적으로 실행한다. 하지만 내부 명령이 아니라면 먼저 PATH환경 변수에 지정된 디렉토리를 검색해서 그 파일이 있는지 확인을 한 뒤 만약 그것이 있다면 그 파일을 실행하도록 커널에게 지시한다.

 

그러면 커널은 그 파일의 접근 권한과 사용자를 비교해서 실행 권한이 있는지 없는지 확인한 후 없다면 사용할 수 없음을 쉘에 보낸다. 그런데 비교해서 확인한 후 실행할 수 있다면 먼저 그 실행 파일의 내용을 메모리에 불러들이는 동시에 고유의 번호를 붙이는데, 이것을 앞서 언급한 프로세스 식별 번호(PID 번호 - Process IDentity number) 라고 한다.

 

이제 실행되고 있는 하나의 파일은 프로세스라고 한다는 것을 알고 있다. 이 번호는 각 프로세스들의 시작 순서에 따라 차례로 붙여진다. 이번호는 커널 측면에서 본다면 프로세스 관리에, 즉 다중 작업에 관계가 있다. 다시 말하자면 프로세스 식별 번호(PID 번호)는 사용자 측면에서 본다면 프로세스 중지 명령에서 사용된다.


출처 : 

http://blog.naver.com/PostView.nhn?blogId=bestheroz&logNo=67071284&parentCategoryNo=&categoryNo=13&viewDate=&isShowPopularPosts=false&from=postView

'Learning stuff' 카테고리의 다른 글

git 관련  (0) 2014.07.15
WIDE/IO 에서 512bit 접근의 의미  (0) 2013.04.19
프로세스 정의, 정리(개념 및 종류)  (0) 2013.04.10
JIT  (0) 2013.03.05
CPU Bound, I/O Bound, Memory Bound, Cache Bound  (0) 2013.03.05

프로세스 정의, 정리(개념 및 종류)

Learning stuff 2013. 4. 10. 23:02

- 프로세스의 개념 및 종류

프로세스란 실행중인 프로그램을 의미한다고 할 수 있지만 이에 대해서는 여러 가지 다른 사항들에 대한 이해가 필요하며 다른 몇가지 용어들과의 차이도 함께 비교할 필요가 있다.

우선 작업(job)이라는 용어(이 용어는 이미 예전에 사라진 용어라 할 수도 있겠으나 프로세스에 대한 명확한 이해를 돕기 위하여 언급한다)에

대해 살펴보자. 일반적으로 사용자가 컴퓨터에서 실행시키기 위하여 작성한 프로그램과 이 프로그램의 실행에 필요한 입력 데이터를 묶어서 작업이라 한다. 결국 작업이란 프로그램과 이에 필요한 데이터를 의미하는 것으로 이는 컴퓨터에 실행 의뢰되기 전에 상태 또는 실행 의뢰되는 과정에서 사용하는 용어라 할 수 있다. 이러한 작업이 컴퓨터 시스템에 실행 의외되어 운영체제, 즉커널에서 이 사실이 전달되면 이 작업은 커널에 등록되며 이와 같이 커널에 등록된 작업을 이제부터 프로세스라 부른다. 다시 말하면, 프로세스란 커널에 등록되어 커널의 관리하에 들어간 작업을 말하는 것이다.

 

- 프로세스의 정의

커널에 등록되고 커널의 관리하에 있는 작업을 의미하며, 이를 일반적으로 실행중인 프로그램 또는 실행중인 작업이라 정의하고 있는 것이다. 그러나 프로세스의 정확한 정의 내지는 특성을 이해하기 위해서는 보다 세부적인 이해가 필요하다.

 

컴퓨터 시스템에 입력된, 즉 커널에 등록된 프로세스는 자신이 실행해야 할 프로그램을 가지고 있다. 이 프로그램을 실행시키기 위하여 프로세스는 커널에게 각종 자원(Resource)들을 요청하게 된다. 여기서 자원이란 기억 장치, 프로세서, 디스크 등의 각종 하드웨어 장치나 메시지, 파일 등의 소프트웨어 요소들을 의미한다. 다시 말하면, 프로세스는 자신이 실행해야 할 프로그램이나 이와 관련된 데이터를 기억 장치에 적재시키기 위하여 기억 장치를 요구할 것이며, 이를 실행시키기 위하여 프로세서도 요구 할 것이다. 또한 프로그램이 실행되는 동안 필요한 디스크 파일들에 접근하기 위하여 각종 파일들을 요구할 수도 있다. 이와 같은 관점에서 프로세스를 정희할 때 좁게는 프로세서를 할당받을수 있는 개체(Entity)로 , 넓게는 컴퓨터 시스템내의 각종 자원들을 요구하고 할당 받을 수 있는 개체로 정의하기도 한다.

 

커널은 프로세스를 관리하기 위하여 커널 공간(Kernel Space)내에 각 프로세스들에 대한 정보를 저장하고 사용한다. 이와 같이 커널에

등록된 각 프로세스들에 대한 정보를 저장하고 있는 영역을 프로세스 관리 블록(PCB : Process Control Block)이라 하는데, 프로세스를 이와 같이 PCB를 할당받는 개체로 정의하기도 한다.

 

지금까지 언급한 설명들을 종합하면 프로세스는

     실행중인 프로그램(작업)

     커널에 등록되고 커널의 관리하에 있는 작업

     각종 자원들을 요청하고 할당받을 수 있는 작업

     프로세스 관리 블록을 할당받는 개체

 

프로세스 관련 용어

다음 용어들간의 개념상 차이점을 명확히 구분해 보도록 하자.

◎ 프로그램(Program) : 특정 기능을 수행하기 위한 명령어의 조합

◎ 작업(Job) : 프로그램과 프로그램 실행에 필요한 입력 데이터

◎ 프로세스(Process) : 실행중인 프로그램의 인스턴스

◎ 프로세서(Processor) : 연산을 수행하고 처리하기 위한 자원, 보통 CPU를 말함

◎ 프로시저(Procedure) : 프로그램의 일부로 공통적으로 사용되는 특정 루틴

◎ 스레드(Thread) : 프로세스의 일부 특정 데이터만 가지고 있는 가벼운 프로세스

 

- 프로세스 자원의 개념

컴퓨터 시스템내에서 프로세스는 스스로 움직이는(프로그램이 실행되는 것을 이와 같이 표현한다.) 능동적인 개체인 데 비하여, 자원이란 커널에 의해 다른 주체에게 할당되고 이의 사용이 끝날 경우 다시 반납되는 파동적인 개체에 해당한다.

하드웨어자원은 기억 장치나 프로세서, 하드 디스크, 자기 테이프, 단말기, 모니터, 키보드 등의 각종 하드웨어 장치들을 의미하며, 소프트웨어 자원은 메시지, 시그널, 파일, 각종 공유 소프트웨어 등을 의미한다고 할 수 있다.

 

프로세스는 실행중에 각종 자원들을 요구하기도 하고 이를 할당받기도 하며, 사용이 끝났을 때에는 반납하기도 하면서 진행한다. 이에 따라 컴퓨터 시스템의 상태를 각종 프로세스들과 각종 자원들의 상호 작용(Interaction)으로 모델링하기도 한다.

 

- 프로세스 관리 블록

컴퓨터 시스템내의 프로세스들은 모두 커널 공간에 자신의 PCB를 하나씩 갖게 되며 이의 관리는 커널이 하게 된다. 다르게 설명하면 커널은 자신에게 등록된 프로세스들을 관리하기 위하여 프로세스마다 하나씩 PCB를 할당해 주고, 이 영역에 해당 프로세스에 대한 각종 정보들을 저장하여 프로세스를 관리할 때 사용한다.

PCB에 저장되는 프로세스 관련 정보들은 운영체제마다 조금씩 다를 수 있지만 일반적으로는 다음과 같은 정보들을 PCB에 유지하게 된다.

◎ 프로세스 고유 번호(PIN ; Process Identification Number)

◎ 프로세스의 우선 순위(Priority)

◎ 프로세스의 현재 상태(Current State)

◎ 프로세스가 할당받은 자원들의 리스트 또는 이들에 대한 포인터

◎ 문맥 저장 영역(Context Save Area)

여기서 프로세스의 고유 번호는 커널이 시스템내의 프로세스들을 관리하는데 있어서의 편리성을 위하여 프로세스마다 다르게 부여되는 번호이며 이는 프로세스가 생성될 때에 부여된다.

 

프로세스의 우선 순위는 프로세스 스케줄링에서 사용하기 위한 정보이며, 특히 운영체제가 우선 순위 기반 스케줄링(Priority-based Scheduling)을 하는 경우에 필요한 정보이다. 커널은 여러 프로세스들 중 프로세서를 할당할 프로세스를 선정하기 위해 이 우선 순위를 참조할 수 있다.


출처 

http://blog.naver.com/PostView.nhn?blogId=bestheroz&logNo=67017920&redirect=Dlog&widgetTypeCall=true

아놔

Everyday 2013. 4. 2. 15:02

씨발 존나 빠져가지고............


열씨미하자 영일아

정신차리라

'Everyday' 카테고리의 다른 글

이상하네 아무리 봐도..........  (1) 2013.09.30
헛........  (0) 2013.05.19
  (0) 2013.03.15
아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ  (0) 2012.06.22
2012/5/5  (0) 2012.05.05