SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

PCとスパコンの無理矢理な比較

標準ベンチマークであるHPCCを用いてPCとスパコンを比較する


ベンチマークの準備

 スパコン用のベンチマークであるHPCCは、PC上でも動きます。しかし、インストーラをダウンロードして、ダブルクリックでインストールというわけにはいきません。少し準備が必要です。ここでは次のような環境でHPCCを実行します。

  • Windows/Cygwin (32 bit)
    BLASはATLAS(ソースからビルド)、MPIはMPICH(Windows版)のバイナリを利用
  • KNOPPIX/MATH DVD (32 bit)
    BLASはATLASのバイナリ、MPIはMPICHのバイナリを利用
  • Fedora (32 bit)
    BLASはATLAS(バイナリ)とGotoBLAS(ソースからビルド)、MKL(バイナリ)、MPIはOpenMPI(バイナリ)を利用

 HPCCをコンパイルしなければならないのはすべての環境で共通ですが、それ以外はバイナリのパッケージをダウンロードしてインストールするだけでいい環境もあるので、自分の環境で都合のよいもので試すとよいでしょう。

Windows/Cygwin

 WindowsでCygwinを利用している場合、ATLASをコンパイルし、MPICH(Windows版)をインストールすればHPCCを実行できます。CygwinのインストールとATLASのコンパイルには時間と手間がかかるので、面倒な場合はKNOPPIX/MATH上で試すことをお勧めします(ちなみに、Cygwinは遅いイメージがありますが、KNOPPIX/MATHの場合と比較して、結果に大きな差はありませんでした)。

  1. Cygwin Information and Installationからインストーラをダウンロード・実行します。インストールは大体デフォルトのまま進めて構いませんが、DevelとLibsはすべてインストールするようにします。
  2. MPICH(Windows版)をダウンロード・インストールします。
  3. SourceForge.net:ATLASから最新のATLASをダウンロード・ビルドします(atlas3.8.0.tar.bz2)。
  4. HPCCから最新のHPCCをダウンロード・ビルドします(hpcc-1.2.0.tar.gz)。

ATLASのビルド

 ATLASのビルドは次のように行います(ATLASはCPUの性能を測定しながらビルドするので、電源オプションの電源設定を「常にオン」にして、省電力モードにならないようにしておいてください)。

bzip2 -dc atlas3.8.0.tar.bz2 | tar xf -
mkdir ATLAS38
cd ATLAS38
../ATLAS/configure -b 32 -D c -DWALL
make

 ここでは「/cygdrive/d/work/ATLAS38/lib」にライブラリができたとして話を進めます(電源オプションは元通りにしてかまいません)。

HPCCのビルド

 HPCCを展開し、「hpl/setup/Make.Linux_PII_CBLAS」を「hpl/Make.Atlas」にコピーします。この「Make.Atlas」にビルドのための情報を記述します。変更箇所を以下に挙げます(LAdirはATLASをコンパイルした環境に合わせてください。CCFLAGSに「-mtune=athlon-xp」のような最適化オプションを追加しても良いでしょう。GCCのマニュアルを参考にしてください)。

MPICHの場所
MPdir        = /cygdrive/c/Program\ Files/MPICH/SDK.gcc/
MPinc        = -I$(MPdir)/include
MPlib        = $(MPdir)/lib/libmpich.a
ATLASの場所
LAdir        = /cygdrive/d/work/ATLAS38/lib
LAinc        =
LAlib        = -L$(LAdir) -lcblas -latlas

 次のコマンドでコンパイルします(プロセッサが2つあるなら、make -j 2 arch=Atlasなどとすると速くなります)。

make arch=Atlas

 ちなみに、ビルドをやり直す場合は、まず、次のコマンドで初期化してください。

make arch=Atlas clean

HPCCの実行

入力パラメータの設定

 「_hpccinf.txt」を「hpccinf.txt」にコピーします。ベンチマークへの入力ファイルです。このファイルの書き方については後述します。とりあえず、次のように変更しておきましょう。

2            # of process grids (P x Q)
1 2          Ps
2 1          Qs

 PxQは計算プロセスの数なので、プロセッサ(あるいはコア)が一つの場合は次のようにしてください。

1            # of process grids (P x Q)
1            Ps
1            Qs
HPCCの実行

 MPIRunを用いてhpccを実行します(-npの後には利用するプロセス数を書きます)。

/cygdrive/c/Program\ Files/MPICH/mpd/bin/MPIRun -np 2 hpcc

 うまく実行できると「hpccoutf.txt」というファイルができます。ファイルの最後は次のようになっているはずです(hpccを再度実行すると、新しい結果はこのファイルに追記されます)。

########################################################################
End of HPC Challenge tests.
Current time (1195413062) is Mon Nov 19 04:11:02 2007

########################################################################

 結果の見方は後述します。

KNOPPIX/MATH

 KNOPPIX/MATH上でHPCCを実行する方法を紹介しましょう。KNOPPIX/MATHは数学関係のソフトウェアが充実したライブDVDです(本稿では5.1.1 DVD版を使いました)。

SSH Serverの準備

 MPICHがSSHでパスワード無しでコマンドを実行できるようにします。

  1. メニューから[KNOPPIX]-[Services]-[Start SSH Server]
  2. SSH Serverを適当なパスワードで起動
  3. ssh localhostでログインできることを確認
  4. シェルからssh-keygenとして「~/.ssh/id_dsa.pub」を作成
  5. cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

ATLASのインストール

 KNOPPIX/MATHに収録されているATLASは、一般的なIntel系32ビットCPU用のものです。このままでも動作しますが、利用CPUに特化したATLASの方がはるかに高速です。そこで、パッケージ管理ソフトウェア(Synaptic)で「ATLAS」を検索し、「atlas3-3dnow-dev」など、適切なものをインストールします(本稿執筆時点でATLASの最新バージョンは3.8ですが、バイナリのパッケージは3.6のものしかありませんでした。最新版を使いたい場合は、ATLASのサイトからバイナリをダウンロードするか、Cygwinの場合のようにソースをコンパイルしてください)。

HPCCのビルド

 HPCCのビルドはCygwinの場合と同じです。

tar zxf hpcc-1.2.0.tar.gz
cd hpcc-1.2.0
cp hpl/setup/Make.Linux_ATHLON_CBLAS hpl/Make.Atlas

 「Make.Atlas」の修正箇所は次のとおりです(CCFLAGSに「-mtune=athlon-xp」のような最適化オプションを追加しても良いでしょう。GCCのマニュアルを参考にしてください)。

MPdir=/usr/lib/mpich

LAdir=/usr/lib/3dnow
(CPU専用のATLASを導入していない場合は/usr/lib)

 ビルドします。

make -j 2 arch=Atlas

 Cygwinの場合と同じようにHPCCの入力ファイル「hpccinf.txt」を作り、試しに実行してみましょう。

Fedora

 最後にFedora上でHPCCを実行する方法を紹介します。KNOPPIX/MATHと同じGNU/Linuxなので、本質的な違いはありませんが、ライブCDではないので、導入が多少面倒なソフトウェアも利用できます(ライブCDはもっと手軽なもののためにあると筆者は考えています)。

 まず、必要なソフトウェアをインストールします(KNOPPIX/MATHの場合と同様に、本稿執筆時点では、ATLASの最新版(3.8)のバイナリパッケージはありませんでした)。これは32ビット環境の場合です。64ビット環境の場合は、64ビット用のソフトウェアをインストールしてください。

yum install lapack-devel
yum install blas-devel
yum install openmpi
yum install openmpi-devel
yum install atlas-sse2-devel
yum install compat-libstdc++-33
(Intelのコンパイラのために必要)

ATLAS

 ATLASを利用する方法はCygwinやKNOPPIX/MATHの場合と同様です。この環境に合わせるための「Make.Atlas」の変更点を以下に挙げます(ライブラリやインクルードファイルのパスは、環境に合わせて設定してください。筆者のCPUはCore2Duoなのでatlas-sse2を利用しています)。

MPdir        =
MPinc        = -I/usr/include/openmpi/1.2.4-gcc
MPlib        = -L/usr/lib/openmpi/1.2.4-gcc -lmpi

LAdir        = /usr/lib/sse2
LAinc        =
LAlib        = -L$(LAdir) -lcblas -latlas

HPL_OPTS     = -DHPL_CALL_CBLAS

CC           = gcc
CCNOOPT      = $(HPL_DEFS)
CCFLAGS      = $(HPL_DEFS) -mtune=core2 -fomit-frame-pointer -O3 -funroll-loops -W -Wall

LINKER       = gcc
LINKFLAGS    = $(CCFLAGS)

Intel C++ CompilerとMath Kernel Library

 GNU/Linux上で利用するコンパイラと言えばGCCが一般的ですが、Intelもコンパイラを提供しています。常にというわけではありませんが、GCCよりも高速なバイナリを生成する場合があるので、試す価値はあるでしょう。Intelは、コンパイラの他にMath Kernel Libraryという数値計算ライブラリも提供しているので、これも試してみましょう(BLASの実装を含んでいるので、ATLASの代わりに使います)。どちらも評価版あるいは非商用の無料版があります(コンパイラとMKLのインストールおよび環境設定方法はここでは割愛します)。

 「Make.Atlas」を作成したのと同じ要領で、「Make.Intel」を作成します。変更点を以下に挙げます。

MPdir        =
MPinc        = -I/usr/include/openmpi/1.2.4-gcc
MPlib        = -L/usr/lib/openmpi/1.2.4-gcc -lmpi

LAdir        = /opt/intel/mkl/10.0.1.014
LAinc        = -I$(LAdir)/include
LAlib        = -L$(LAdir)/lib/32 -lmkl

HPL_OPTS     =

CC           = icc
CCNOOPT      = $(HPL_DEFS) -O0 -g
CCFLAGS      = $(HPL_DEFS) -O3 -xP -ip -fno-alias -openmp -mp

LINKER       = icc
LINKFLAGS    = $(CCFLAGS)

GotoBLAS

 知名度という点ではATLASとMKLに劣りますが、GotoBLASという高性能なBLASがあります。これも試してみましょう(導入方法は割愛します)。

 「Make.Atlas」や「Make.Icc」を作成したのと同じ要領で、「Make.Goto」を作成します。変更点を以下に挙げます(GotoBLASは/home/yabuki/work/GoroBLASでビルドしています)。

MPdir        =
MPinc        = -I/usr/include/openmpi/1.2.4-gcc
MPlib        = -L/usr/lib/openmpi/1.2.4-gcc -lmpi

LAdir        = /home/yabuki/work/GotoBLAS
LAinc        =
LAlib        = -L$(LAdir) -lgoto

HPL_OPTS     =

CC           = gcc
CCNOOPT      = $(HPL_DEFS)
CCFLAGS      = $(HPL_DEFS) -mtune=core2 -fomit-frame-pointer -O3 -funroll-loops -W -Wall

LINKER       = gcc
LINKFLAGS    = $(CCFLAGS)

次のページ
結果

この記事は参考になりましたか?

特集記事連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 矢吹 太朗(ヤブキ タロウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1910 2008/10/01 14:05

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー