C++で行列計算をする必要がでてきました。
今回は、新規にUbuntuに開発環境をインストールして、uBLASを使えるようにしたので、手順をメモしておきます。
Ubuntuのインストール
仮想マシンにUbuntuのインストールを行います。
ESXi 4.1 U3 のホストに仮想マシンを作成し、Ubuntu Desktop 版 12.04.1 (64bit)をインストールしました。
このへんの手順は省きます。
Ubuntuインストール後、VMware Tools のインストール、日本語環境の設定、パッケージのアップデート(apt-get update; apt-get upgrade)を行っておきます。
開発環境のインストール
uBLASはBoostに含まれているので、それを利用します。また、IDEとしては、eclipse(CDT)を使う予定です。ソース管理はSubversionを使います。
このため今回は下記のパッケージをインストールしました。
sudo apt-get install g++ sudo apt-get install libboost-all-dev sudo apt-get install subversion sudo apt-get install vim
また、eclipse(CDT)インストールに必要となるので、次のパッケージもいれておきます。
sudo apt-get install default-jre sudo apt-get install git
gitは使わないのですが、eclipse(CDT), Junoだとgitがないと警告ダイアログが出るので、入れておきました。
最後にeclipseをインストールします。
Ubuntuのパッケージ(eclipseまたはpleiades)にもあるのでこれを使っても良いのですが、Indigo(3.7)です。最新版を使いたかったので、自分でダウンロードしたものを使いました。
インストールは簡単でダウンロードしたファイルを、~/bin/eclipse に展開すれば終わりです。
あと、pleiadesもインストールして日本語化しておきます。
また、eclipseのSubversionプラグインのSubversiveもインストールしておきます。手順等はこちらの記事などを参考にしてください。
uBLASのサンプル
eclipseを起動して、『ファイル』→『新規』→『C++プロジェクト』→『Makefileプロジェクト』を作成します。メインでuBLASを使う次のようなサンプルを作ってみます。
#include <iostream> #include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/io.hpp> int main(void) { using namespace boost::numeric::ublas; matrix<double> mat1(2,2); mat1(0,0) = 0; mat1(0,1) = 1; mat1(1,0) = 2; mat1(1,1) = 3; std::cout << "matrix: " << mat1 << std::endl; vector<double> v(2); v(0) = 1; v[1] = 2; std::cout << "vector: " << v << std::endl; std::cout << "mat1*v: " << prod(mat1, v); std::cout << std::endl; return EXIT_SUCCESS; }
eclipseでビルド後、実行すると、
matrix: [2,2]((0,1),(2,3)) vector: [2](1,2) mat1*v: [2](2,8)
のように出力が得られます。
これで、uBLASを使った開発ができるようになりました。
(参考)