2006.12.01

Programming

C++で主成分分析(PCA)を行うための行列演算ライブラリ「MIST」

名古屋大の「MIST」というライブラリを使ってみた。とりあえずライブラリが使えるようになったというレベルだけど。

MOCK関係者はそのうち使うかもなので、その時に参考になればということで、以下環境構築メモ。
(基本はMISTサイトの通りでうまく行ったのだが、一カ所ひっかかったとこがあった)

LAPACKライブラリ構築

MISTを利用するにはLAPACKが必要らしいので、まずはLAPACKライブラリを構築する。
(参考記事:HowToUseLapack - MIST Project - Trac

ちなみに僕の環境はMacOSX10.4(Intel Core Duo)+ GCC4.0.1。GCC3.3だと、「cc1が無い」とか言うエラーがでてコンパイルできなかった。(cc1って何だ?)

MIST環境設定

次にMISTの環境設定を行う。こちらは特にコンパイルの必要は無いのでらくちん。
ここではMISTを/usr/local/include、CLAPACKライブラリを/usr/local/libに入れた。
(参考記事:HowToSetEnvironment - MIST Project - Trac

サンプルプログラムの実行

MISTプロジェクトのサイトにある主成分分析のサンプルプログラムをコンパイル&実行してみる。
(参考記事:Tutorial/Tutorial4 - MIST Project - Trac

ここで以下のようなコンパイルオプションを用いると、libF77.aとlibI77.aが古すぎる(out of date)とかいうエラーが出る。GCC4が新しすぎる。。

g++ sample.cpp -o sample -Wall -DNDEBUG -O2 \
    -I/usr/local/include -L/usr/local/lib \
    -lm -llapack -lblas -lF77 -lI77 -lpthread

でも何のことは無い、「-lF77 -lI77」を外せば普通にコンパイルが通って、なんか動いた。
以下が実際のコンパイルオプション。

g++ sample.cpp -o sample -Wall -DNDEBUG -O2 \
    -I/usr/local/include -L/usr/local/lib \
    -lm -llapack -lblas  -lpthread

こいつの使い方と出力の意味がまだ把握できていないので、そのあたりについては後日書く(かも)

ps.
High Performance Computing for Mac OS Xからgcc4とg77をダウンロードして来てから、CLAPACKを再度コンパイルし直すと、「-lF77 -lI77」が使えるようになった。