読者です 読者をやめる 読者になる 読者になる

プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

【uBLAS】 uBLASを使った開発環境構築

プログラム関連

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を使った開発ができるようになりました。

 

(参考)

boost::numeric::ublas 線形代数ライブラリの使い方

Let's Boost boost::numeric::ublas