だいたい1348日前に更新最終更新日時: 2021-06-07 (月) 01:03:05 1348日前
Table of Contents |
概要 †
必要なもの †
- ターゲット環境用のクロスコンパイラ : gcc, g++, gfortran
- SPEC2000のISOイメージ : spec2000-1.10.iso
- teraにあります
注意 †
- SPEC2000のソースは古いgcc向けに作られているので、新しいgccではコンパイルが通りません!
- いくつかのソースに対して2,3行の改変をすればコンパイルが通ります
- バージョン2.x.xの古いgccを使うとよいかもしれません(未テスト)
作業の流れ †
1.SPEC2000のインストール †
1.1 SPEC2000 のisoイメージをマウント †
マウントポイントを dvd とする場合
mkdir dvd su mount -t iso9660 -o loop,ro spec2000-1.10.iso dvd exit
1.2 インストール †
cd dvd ./install.sh
- インストール先のディレクトリを要求されるので入力(←以降${SPEC}とする)
- プラットフォームを選べと言われて選択肢が表示される。表示された選択肢を入力
- deltaでインストールしたらlinux-redhat62-i686しか選択肢がなかった
- libdb.so.3がないと言われてインストールに失敗する場合
- compat-db とgdbm を導入する
yum install compat-db yum install gdbm
1.3 アンマウント †
su umount dvd exit
1.4 入力データの配置 †
2 SPEC2000のコンパイル †
2.1 設定ファイルの作成 †
- 設定ファイルの書き方については詳しくは${SPEC}/docs/config.txtを参照
- 主にコンパイルオプションを指定するための存在
- 通常Makefileの中に書くようなことを書く
- int,fpのスイートレベル、ベンチマークレベルなど異なるレベル毎にオプションを指定できる
- 固有の書式を用いる。config.txt参照
- 設定ファイルは ${SPEC}/config にある
- 同ディレクトリに自分の設定ファイルを作成
- それっぽい設定ファイルをコピーしてベースにする
書き換えの例 †
cd ${SPEC}/config (例えば)cp alpha-linux-gcc-nag.cfg myalpha64.cfg
設定ファイルのヘッダセクションに次の行を追加
# makeの作業の中で並列実行可能なものを並列実行(下の例の場合4つまで) makeflags = -j 4 # 「SPEC のwebサイトにアクセスしてバージョンチェックを行う」を無効にする check_version = no
コンパイラの設定を変更(例)
CC = alpha-unknown-linux-gnu-gcc CXX = alpha-unknown-linux-gnu-g++ FC = alpha-unknown-linux-gnu-gfortran
最適化・共通のフラグの設定を変更(例)
default=base=default=default: COPTIMIZE = -O3 CXXOPTIMIZE = -O3 FOPTIMIZE = -O3 PORTABILITY = -DSPEC_CPU_LP64 -DSPEC_CPU_LINUX
- benchspec/CINT2000/(ベンチマーク名)/docsを参考にして各ベンチマークに必要なフラグを追加
- コピー元の設定ファイルに近い環境ならほとんどそのままで大丈夫かも
2.2 ソースの改変 †
2.3 コンパイル †
- コンパイルにはrunspecというツールを用いる
- makeの働きもするし、ベンチマークを走らせて結果のレポートを作ることもできる
- --actionオプションで機能を選択する
- ベンチマークをonikiriで走らせるつもりなら、とりあえずmakeの代わりだと思っておけばよい
- --configオプションで上で作成したconfigファイルを指定
- 環境変数を設定すると${SPEC}/binにパスが通って使えるようになる
cd ${SPEC} # 環境変数 の設定 (bash) . ./shrc (csh) source ./cshrc # コンパイル runspec --config myalpha64.cfg --action build int fp
- makeの働きもするし、ベンチマークを走らせて結果のレポートを作ることもできる
中間ファイル †
- benchspec/CINT2000/(ベンチマーク名)/run の下にディレクトリが作られ、その中でコンパイルが行われる
- 実行ファイルは、 benchspec/CINT2000/(ベンチマーク名)/exe/ に置かれる
- コンパイルを行うと、コンパイルに用いたconfigファイルにこのようなセクションが追加される
__MD5__ 164.gzip=base=nag-gcc-dec07=default: # Last updated Wed May 14 02:00:58 2008 optmd5=7541206c681781d328ce4345604f87d5 exemd5=fcc9a1be3229af9fe78d449fd68b0fc4 175.vpr=base=nag-gcc-dec07=default: # Last updated Wed May 14 02:00:58 2008 optmd5=0a0eb08f8a55964668c71727d3b7a3ff exemd5=27a35a4e0132d6aead8bf088744294e9 ...
- ここには最後にバイナリがビルドされた時のコンパイルオプションなどの条件が記録されている
- 同時にconfigディレクトリにバックアップが作成される
- なんどもビルドしているとどんどんバックアップが増える
- 特定のベンチマークだけオプションを変えてコンパイルし直すと、条件の変わったベンチマークだけ作り直してくれる
- 同時にconfigディレクトリにバックアップが作成される
実行環境の作成 †
# 実行環境の作成 runspec --config myalpha64 --action setup --size test int fp runspec --config myalpha64 --action setup --size train int fp runspec --config myalpha64 --action setup --size ref int fp
- test,train,refはそれぞれ異なる入力ファイルのセット
- 入力ファイルと実行ファイルが benchspec/CINT2000/(ベンチマーク名)/run/ 以下にコピーされる
- 新しく00000001のような名前のディレクトリが作られ、そこに置かれる
- 新しくバイナリを作り直したりする度にディレクトリが増える
- 同じディレクトリに作られたlistというファイルにそれぞれのディレクトリの内容が書かれている
- 要するに異なる条件で作成されたバイナリのインスタンスごとに作業ディレクトリが作成される
- バイナリの作成、実行、結果報告までをrunspecが一括して管理できるような仕組みになっている
- 新しく00000001のような名前のディレクトリが作られ、そこに置かれる
2.4 clean †
runspec --config myalpha64 --action clobber int fp
↑実行ファイルが全部削除されます
(文責: ほりお,しおや)
ツールボックス
メニュー
最新の20件
最新の20件
2022-12-31
2022-09-24
2022-01-26
2019-09-17
2019-07-11
2018-07-12
2018-05-09
2018-02-07
2017-10-27
2017-10-15
2017-05-01
2017-03-27
2015-12-24