トップページ -> コンピュータ実習 -> Octave を用いた画像処理,信号処理 -> Ubuntu, Fedora で Octave バージョン 3.8.0 のビルドとインストールとテスト実行
[サイトマップへ], [サイト内検索へ],

Ubuntu, Fedora で Octave バージョン 3.8.0 のビルドとインストールとテスト実行

サイト構成 連絡先,業績など コンピュータ実習 データの扱い コンピュータ設定 教材(公開) サポートページ

Octave とは,MATLAB に互換の数値解析ソフトウエアです.

◆ この Web ページでは,Octaveソースコードをダウンロードし, Ubuntu や Fedora 上でビルドしてインストールする手順図解などで説明する.

◆ なぜ,ソースコードからビルドするのか

などの場合には,この Web ページの手順が参考になるでしょう.

※ Octave をパッケージ (yum) を使ってインストールしたい(わざわざソースコードからビルドしない) 場合は,別の Web ページを見てください.

Cygwin での Octave のビルドとインストールについては,別のページで説明している.

※ liboctave の使い方については,別のページで説明している.liboctave を使って,Octave の行列関係の機能を呼び出すような C++ のプログラムを簡単に作ることができます.

※ 貴重な情報源: http://www40.atwiki.jp/gnuoctavejp (Octave for Windows メモの著者様による Wiki)

※ 関連Webページ: Octave を用いた画像処理,信号処理

http://software.intel.com/en-us/articles/using-intel-mkl-in-gnu-octave/

【要点】

【この Web ページで行うこと】

Octave のオンラインマニュアル

謝辞

本 Web ページは,Linux での Octave のビルドとインストール法に焦点をあてていますが, 本 Web ページの作成にあたっては, まず, 「octave for windowsメモの筆者」様http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html)に, 2ちゃんねる (http://2ch.net/) の「データ解析ツールoctaveを語ろう」掲示板での議論を通して,数々の貴重なご教示,コメント頂きました. ありがとうございました.

などなど.

敬意を込めて, 「octave for windowsメモの筆者」様の URL を記しておきます. http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html

⇒ この Web ページは,分かりやすく,また,Octave に関係する種々の有益な情報が載ったページです. 情報の宝庫,オンリーワンの Web ページと言ってよいでしょう.


Ubuntu で Octave のソースコードのダウンロードとビルドとインストールを行うシェルスクリプト

楽をしたいのでシェルスクリプトを作りました。 1つ1つコマンドを入力したい(シェルスクリプトにしたくない)場合については、この Web ページの下で説明している. Octave バージョン 3.8.0 のダウンロードとビルドとインストールが行われます.前提ソフトウエアとして用いる graphicsmagick, curl, gsl, fftw3, glpk, qrupdate, suitesparce, lapack, atlas のインストールも行う. Ubuntu 12.04 を用いて動作確認済みです.

前準備

Intel のコンパイラIntel Math Kernel Library を使う場合には、.bashrc などで 「export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/ia32:/opt/intel/lib/ia32」 あるいは 「export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/intel64:/opt/intel/lib/intel64」 のように設定しておくこと。

シェルスクリプト

#!/bin/bash
 
sudo apt-get -yV install build-essential

# GNU gcc, g++, gfortran を使う場合: gcc, g++, gfortran
# Intel Compiler を使う場合: CC=icc, icpc, ifort 
if [ -x /opt/intel/bin/icc ]; then 
  if [ -x /opt/intel/bin/ifort ]; then 
    echo USE Intel Compiler 
    export USEINTEL=YES
  fi
fi
if [ -x /opt/intel/bin/compilervars.sh ]; then 
    echo USE Intel MKL 
    export USEMKL=YES
fi

if [ "$USEMKL" = "YES" ]; then
  if [ `arch` = 'i686' ]; then
    source /opt/intel/bin/compilervars.sh ia32
  fi
  if [ `arch` = 'x86_64' ]; then
    source /opt/intel/bin/compilervars.sh intel64
  fi
fi

# octave 前提ソフトウエア (Octave build dependency softwares)
cd /tmp; sudo apt-get source octave3.2
cd /tmp; sudo apt-get build-dep octave3.2

# /etc/ld.so.conf
sudo cp /etc/ld.so.conf /etc/ld.so.conf.$$
echo "/usr/local/lib" | sudo tee -a >> /etc/ld.so.conf
echo "/usr/local/lib/octave/3.8.0" | sudo tee -a >> /etc/ld.so.conf
sudo /sbin/ldconfig

# graphicsmagick 
  sudo apt-get -yV --force-yes install graphicsmagick-dbg
  sudo apt-get -yV --force-yes install graphicsmagick
  sudo apt-get -yV --force-yes install graphicsmagick-imagemagick-compat
  sudo apt-get -yV --force-yes install graphicsmagick-libmagick-dev-compat
  sudo apt-get -yV --force-yes install libgraphics-magick-perl
  sudo apt-get -yV --force-yes install libgraphicsmagick++1-dev
  sudo apt-get -yV --force-yes install libgraphicsmagick++3
  sudo apt-get -yV --force-yes install libgraphicsmagick1-dev
  sudo apt-get -yV --force-yes install libgraphicsmagick3

# curl
  sudo apt-get -yV install curl
  sudo apt-get -yV install libcurl3-dbg
  sudo apt-get -yV install libcurl3-gnutls
  sudo apt-get -yV install libcurl3
  sudo apt-get -yV install libcurl4-gnutls-dev

# gsl
if [ "$USEINTEL" = "YES" ]; then
# Intel Compiler
  mkdir /tmp/gsl
  cd  /tmp/gsl
  apt-get source gsl
  sudo apt-get -yV build-dep gsl
  cd gsl-*
  CC=icc CXX=icpc F77=ifort dpkg-buildpackage -rfakeroot
  cd ..
  sudo dpkg -i *.deb
else
# package install
  sudo apt-get -yV install gsl-bin
  sudo apt-get -yV install libgsl0-dbg
  sudo apt-get -yV install libgsl0-dev
  sudo apt-get -yV install libgsl0ldbl
fi

# fftw3
if [ "$USEINTEL" = "YES" ]; then
# Intel Compiler
  mkdir /tmp/fftw3
  cd  /tmp/fftw3
  apt-get source fftw3
  sudo apt-get -yV build-dep fftw3
  cd fftw3-*
  CC=icc CXX=icpc F77=ifort dpkg-buildpackage -rfakeroot
  cd ..
  sudo dpkg -i *.deb
else
# package install
  sudo apt-get -yV install libfftw3-3
  sudo apt-get -yV install libfftw3-dev
  sudo apt-get -yV install libfftw3-doc
fi

# glpk
if [ "$USEINTEL" = "YES" ]; then
# Intel Compiler
  mkdir /tmp/glpk
  cd  /tmp/glpk
  apt-get source glpk
  sudo apt-get -yV install libiodbc2-dev 
  sudo apt-get -yV build-dep glpk
  cd glpk-*
  CC=icc CXX=icpc F77=ifort dpkg-buildpackage -rfakeroot
  cd ..
  sudo dpkg -i *.deb
else
# package install
  sudo apt-get -yV install glpk-doc
  sudo apt-get -yV install glpk-utils
  sudo apt-get -yV install libglpk-dev
  sudo apt-get -yV install libglpk0-dbg
  sudo apt-get -yV install libglpk0
  sudo apt-get -yV install glpk
fi

# qrupdte 
if [ "$USEINTEL" = "YES" ]; then
# Intel Compiler
  mkdir /tmp/qrupdate
  cd  /tmp/qrupdate
  apt-get source qrupdate
  sudo apt-get -yV build-dep qrupdate
  cd qrupdate-*
  CC=icc CXX=icpc F77=ifort dpkg-buildpackage -rfakeroot
  cd ..
  sudo dpkg -i *.deb
else
# package install
  sudo apt-get -yV --force-yes install libqrupdate-dev
  sudo apt-get -yV --force-yes install libqrupdate1
fi

# arpack
if [ "$USEINTEL" = "YES" ]; then
# Intel Compiler
  mkdir /tmp/arpack
  cd /tmp/arpack
  apt-get source arpack
  sudo apt-get -yV build-dep arpack
  cd arpack-*
  CC=icc CXX=icpc F77=ifort dpkg-buildpackage -rfakeroot
  cd ..
  sudo dpkg -i *.deb
else
# package install
  sudo apt-get -yV --force-yes install libarpack2-dbg
  sudo apt-get -yV --force-yes install libarpack2-dev
  sudo apt-get -yV --force-yes install libarpack2
fi

# suitesparse-metis 
if [ "$USEINTEL" = "YES" ]; then
# Intel Compiler
  mkdir /tmp/suitesparse-metis
  cd  /tmp/suitesparse-metis
  apt-get source suitesparse-metis
  sudo apt-get -yV build-dep suitesparse-metis
  cd suitesparse-metis-*
  CC=icc CXX=icpc F77=ifort dpkg-buildpackage -rfakeroot
  cd ..
  sudo dpkg -i *.deb
else
# package install
  sudo apt-get -yV --force-yes install libsuitesparse-metis-3.1.0
  sudo apt-get -yV --force-yes install libsuitesparse-metis-dbg
  sudo apt-get -yV --force-yes install libsuitesparse-metis-dev
fi

# LAPACK をパッケージを用いてインストール (install the LAPACK softwares using package)
sudo apt-get -yV --force-yes install liblapack-dev
sudo apt-get -yV --force-yes install liblapack-test
sudo apt-get -yV --force-yes install liblapack-doc
sudo apt-get -yV --force-yes install liblapack3gf
sudo apt-get -yV --force-yes install liblapack-pic

# BLAS 参照実装のダウンロードとビルド (Download BLAS reference implementarion and build it and install it) 
cd /tmp
if [ ! -f blas.tgz ]; then 
    wget http://netlib.org/blas/blas.tgz 
fi 
rm -rf BLAS
tar -xvzof blas.tgz
cd /tmp/BLAS
if [ "$USEINTEL" = "YES" ]; then
# Intel Compiler
  if [ `arch` = 'i686' ]; then
    make LOADER="ifort -fPIC" FORTRAN="ifort -m32 -fPIC" 
  elif [ `arch` = 'x86_64' ]; then
    make LOADER="ifort -fPIC" FORTRAN="ifort -m64 -fPIC" 
  fi
else
# GNU Compiler
  if [ `arch` = 'i686' ]; then
    make LOADER="gfortran -fPIC" FORTRAN="gfortran -m32 -fPIC" 
  elif [ `arch` = 'x86_64' ]; then
    make LOADER="gfortran -fPIC" FORTRAN="gfortran -m64 -fPIC" 
  fi
fi
cp /tmp/BLAS/blas_LINUX.a /usr/local/lib/libblas_LINUX.a

# Octave のダウンロードとビルドとインストール
cd /tmp
if [ ! -f octave-3.8.0.tar.gz ]; then 
    wget ftp://ftp.gnu.org/gnu/octave/octave-3.8.0.tar.gz
fi

sudo rm -rf octave-3.8.0
tar -xvzof octave-3.8.0.tar.gz
cd octave-3.8.0


if [ "$USEINTEL" = "YES" ]; then
# Intel Compiler (インテル C++ Composer XE Linux 版, インテル Fortran Composer XE Linux 版を使う場合) 
  if [ `arch` = 'i686' ]; then
    echo "source /opt/intel/bin/compilervars.sh ia32" >> ~/.bashrc
  elif [ `arch` = 'x86_64' ]; then
    echo "source /opt/intel/bin/compilervars.sh intel64" >> ~/.bashrc
  fi
#
  if [ `arch` = 'i686' ]; then
  # Ubuntu 32 bit version (かきかけ. このままでは動かない)
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/ia32:/opt/intel/lib/ia32
      export B1="-lmkl_gf -lmkl_intel -lmkl_intel_thread -lmkl_core -limf -lintlc -liomp5 -lpthread -lquadmath -lm"
      CC=icc CXX=icpc F77=gfortran F1="-fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/ia32 -I/opt/intel/include/ia32 -I/opt/intel/mkl/include/fftw -I/usr/local/include" LDFLAGS="-L/opt/intel/lib/ia32 -L/opt/intel/mkl/lib/ia32" LIBS="-lmetis -lquadmath" CFLAGS="-ipo- -std=c99 $F1" CPPFLAGS="$F1" FFLAGS="$F1" ./configure --enable-static --enable-shared --enable-dl --with-blas="${B1}" --with-lapack="${B1}" --with-fftw3="${B1}" --with-fftw3f="${B1}" PTHREAD_LIBS="-lpthread"
  elif [ `arch` = 'x86_64' ]; then
  # Ubuntu 64 bit version (かきかけ. このままでは動かない)
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/intel64:/opt/intel/lib/intel64
      export B1="-lmkl_gf_lp64 -lmkl_intel_lp64 -lmkl_intel_thread  -lmkl_core -limf -lintlc -liomp5 -lpthread -lquadmath -lm" 
      CC=icc CXX=icpc F77=gfortran F1="-m64 -DMKL_LP64 -fPIC -DPIC -fomit-frame-pointer -O2 -I/usr/include -I/opt/intel/mkl/include/intel64 -I/opt/intel/include/intel64 -I/opt/intel/mkl/include/fftw -I/usr/local/include" LDFLAGS="-L/opt/intel/lib/intel64 -L/opt/intel/mkl/lib/intel64" LIBS="-lmetis -lquadmath" CFLAGS="-ipo- -std=c99 $F1" CPPFLAGS="$F1" FFLAGS="$F1" ./configure --enable-static --enable-shared --enable-dl --with-blas="${B1}" --with-lapack="${B1}" --with-fftw3="${B1}" --with-fftw3f="${B1}" PTHREAD_LIBS="-lpthread"
  fi
else
# GNU Compiler (GNU のコンパイラを使う場合) 
  if [ `arch` = 'i686' ]; then
    # 32 ビット Ubuntu
    if [-d /opt/intel/mkl/lib/ia32 ]; then  
      # try to use Intel MKL 32bit  (GNU のコンパイラ + インテル マス・カーネル・ライブラリー Linux 版) 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/ia32:/opt/intel/lib/ia32
CC=gcc CXX=g++ F77=gfortran \
CXXFLAGS="-m32 -fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/ia32 -I/opt/intel/include/ia32 -I/opt/intel/mkl/include/fftw -I/usr/local/include" 
FFLAGS="-m32 -fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/ia32 -I/opt/intel/include/ia32 -I/opt/intel/mkl/include/fftw -I/usr/local/include" \
export B1="-L/opt/intel/lib/ia32 -L/opt/intel/mkl/lib/ia32 -lmkl_gf -lmkl_intel -lmkl_intel_thread  -lmkl_core -limf -lintlc -liomp5 -lmetis -lpthread -lquadmath -lm" 
./configure --enable-static --enable-shared --enable-dl \
--with-blas="${B1}" \
--with-lapack="${B1}" \
--with-fftw3="${B1}" \
--with-fftw3f="${B1}" \
PTHREAD_LIBS="-lpthread"
    fi
  elif [ `arch` = 'x86_64' && ]; then
    # 64 ビット Ubuntu
    if [ -d /opt/intel/mkl/lib/intel64 ]; then  
      # try to use Intel MKL 64bit  (GNU のコンパイラ + インテル マス・カーネル・ライブラリー Linux 版) 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/intel64:/opt/intel/lib/intel64
CC=gcc CXX=g++ F77=gfortran \
CXXFLAGS="-m64 -DMKL_LP64 -fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/intel64 -I/opt/intel/include/intel64 -I/opt/intel/mkl/include/fftw -I/usr/local/include" \
FFLAGS="-m64 -DMKL_LP64 -fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/intel64 -I/opt/intel/include/intel64 -I/opt/intel/mkl/include/fftw -I/usr/local/include" \
export B1="-L/opt/intel/lib/intel64 -L/opt/intel/mkl/lib/intel64 -lmkl_gf_lp64 -lmkl_intel_lp64 -lmkl_intel_thread  -lmkl_core -limf -lintlc -liomp5 -lmetis -lpthread -lquadmath -lm" 
./configure --enable-static --enable-shared --enable-dl \
--with-blas="${B1}" \
--with-lapack="${B1}" \
--with-fftw3="${B1}" \
--with-fftw3f="${B1}" \
PTHREAD_LIBS="-lpthread"
    fi
  elif [ -d /usr/lib/openblas-base ]; then
    # openBLAS
CXXFLAGS="-fomit-frame-pointer  -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3  -fexceptions -O2" \
FFLAGS="-fomit-frame-pointer  -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3  -fexceptions -O2" \
./configure --enable-shared --enable-dl \
--with-blas="-L/usr/lib/openblas-base -lcblas -lopenblas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" \
--with-lapack="-L/usr/lib/lapack -llapack -L/usr/lib/openblas-base -lopenblas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" 
  elif [ -f /usr/lib/atlas-base/libptf77blas.a ]; then
    # Ubuntu package LAPACK and ATLAS (GNU のコンパイラ + Ubuntu のパッケージでインストールされた ATLAS と LAPACK) 
CXXFLAGS="-fomit-frame-pointer  -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3  -fexceptions -O2" \
FFLAGS="-fomit-frame-pointer  -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3  -fexceptions -O2" \
./configure --enable-shared --enable-dl \
--with-blas="-L/usr/lib/atlas-base -lptf77blas -latlas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" \
--with-lapack="-L/usr/lib/atlas-base -llapack_atlas -llapack -lptf77blas -latlas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" 
  else
    # 「-llapack -lblas 」でコンパイル
    F1="-fPIC -DPIC -fomit-frame-pointer -O2 -I/usr/local/include" LDFLAGS="-L/usr/local/lib" LIBS="-lmetis -lgfortran -lgomp -lpthread -ldl -lquadmath" CFLAGS="$F1" CPPFLAGS="$F1" FFLAGS="$F1" ./configure --enable-static --enable-shared --enable-dl --with-blas="-lblas -lgfortran -lgomp -lpthread -ldl -lquadmath" --with-lapack="-llapack -lblas -lgfortran -lgomp -lpthread -ldl -lquadmath" PTHREAD_LIBS="-lpthread"
  fi
fi

# memo
# LIBS="-lmetis" CFLAGS="-I/usr/local/include -I/usr/local/atlas/include -mieee-fp -DH5_USE_16_API -fomit-frame-pointer -mfpmath=sse -msse3 -fno-schedule-insns2 -fopenmp -fno-tree-loop-optimize -fno-tree-vectorize -fexceptions -march=native -O3 -fopenmp" CPPFLAGS="-I/usr/local/include -I/usr/local/atlas/include -mieee-fp -DH5_USE_16_API -fomit-frame-pointer -mfpmath=sse -msse3 -fno-schedule-insns2 -fopenmp -fno-tree-loop-optimize -fno-tree-vectorize -fexceptions -march=native -O3 -fopenmp" FFLAGS="-DH5_USE_16_API -fomit-frame-pointer -mfpmath=sse -msse3 -fno-schedule-insns2 -fopenmp -fno-tree-loop-optimize -fno-tree-vectorize -fexceptions -march=native -O3 -fopenmp" ./configure --enable-static --enable-shared --enable-dl --with-blas="-L/usr/local/atlas/lib -lptf77blas /usr/local/atlas/lib/libatlas.a -lgfortran -lpthread -lgomp" --with-lapack="-llapack_LINUX -ltmglib_LINUX -L/usr/local/atlas/lib -lptf77blas /usr/local/atlas/lib/libatlas.a -lgfortran -lpthread -lgomp"  

make -j4
make check
sudo make install

Ubuntu で, コマンドを手入力して,Octave のソースコードのダウンロードとビルドとインストールを行う

前もって決めておく事項

1. 前提となるソフトウエアのインストール

◆ Ubuntu バージョン 12.04 の場合の操作手順例

Ubuntu の他のバージョンでも同様の手順になります

  1. アップデート操作

    sudo apt-get -yV update
    sudo apt-get -yV upgrade
    sudo reboot
    

  2. Octaveのビルドで用いる前提ソフトウエアのインストール
    # 前提ソフトウエア
    cd /tmp; sudo apt-get source octave3.2
    cd /tmp; sudo apt-get build-dep octave3.2
    # 開発環境等
    sudo apt-get -yV install make
    sudo apt-get -yV install patch
    sudo apt-get -yV install build-essential
    sudo apt-get -yV install autoconf
    sudo apt-get -yV install automake
    sudo apt-get -yV install autogen
    sudo apt-get -yV install flex
    sudo apt-get -yV install bison
    sudo apt-get -yV install gawk
    sudo apt-get -yV install libtool
    sudo apt-get -yV install ccache
    sudo apt-get -yV install binutils
    sudo apt-get -yV install openssl
    sudo apt-get -yV install libgmp3-devel
    sudo apt-get -yV install libmpfr-dev
    sudo apt-get -yV install libppl-dev
    sudo apt-get -yV install libmpc-dev
    sudo apt-get -yV install cpp
    sudo apt-get -yV install gcc
    sudo apt-get -yV install g++
    sudo apt-get -yV install gfortran
    sudo apt-get -yV install libreadline-dev
    sudo apt-get -yV install gperf
    sudo apt-get -yV install libftgl-dev
    sudo apt-get -yV install libgomp1
    # gsl
    sudo apt-get -yV install gsl-bin
    sudo apt-get -yV install libgsl0-dev
    sudo apt-get -yV install libgsl0-dbg
    sudo apt-get -yV install libgsl0ldbl
    # atlas
    sudo apt-get -yV install libatlas-base-dev
    sudo apt-get -yV install libatlas-dev
    sudo apt-get -yV install libatlas-doc
    sudo apt-get -yV install libatlas-test
    sudo apt-get -yV install libatlas3gf-base
    # lapack
    sudo apt-get -yV install liblapack-dev
    sudo apt-get -yV install liblapack-doc
    sudo apt-get -yV install liblapack-pic
    sudo apt-get -yV install liblapack-test
    sudo apt-get -yV install liblapack3gf
    # pcre
    sudo apt-get -yV install libpcre3-dev
    # readline
    sudo apt-get -yV install libreadline-dev
    # arpack
    sudo apt-get -yV install libarpack2-dbg
    sudo apt-get -yV install libarpack2-dev
    sudo apt-get -yV install libarpack2
    # cURL
    sudo apt-get -yV install curl
    sudo apt-get -yV install libcurl3-dbg
    sudo apt-get -yV install libcurl3-gnutls
    sudo apt-get -yV install libcurl3
    sudo apt-get -yV install libcurl4-gnutls-dev
    # fftw3
    sudo apt-get -yV install libfftw3-3
    sudo apt-get -yV install libfftw3-dev
    sudo apt-get -yV install libfftw3-doc
    # FLTK  
    sudo apt-get -yV install libfltk1.3-dev
    # fontconfig
    sudo apt-get -yV install fontconfig
    sudo apt-get -yV install libfontconfig1-dev
    # freetype
    sudo apt-get -yV install libfreetype6-dev
    # glpk
    sudo apt-get -yV install glpk
    sudo apt-get -yV install libglpk-dev
    # gl2ps
    sudo apt-get -yV install libgl2ps-dev
    # gnuplot
    sudo apt-get -yV install gnuplot
    # graphicsmagick
    sudo apt-get -yV install graphicsmagick-dbg
    sudo apt-get -yV install graphicsmagick
    sudo apt-get -yV install libgraphics-magick-perl
    sudo apt-get -yV install libgraphicsmagick++1-dev
    sudo apt-get -yV install libgraphicsmagick++3
    sudo apt-get -yV install libgraphicsmagick1-dev
    sudo apt-get -yV install libgraphicsmagick3
    # Qhull
    sudo apt-get -yV install libqhull-dev
    # qrupdate
    sudo apt-get -yV install libqrupdate-dev
    sudo apt-get -yV install libqrupdate1
    # qscintilla
    sudo apt-get -yV install libqscintilla2-dev 
    # qt
    sudo apt-get -yV install libqt4-dev 
    # SuiteSparse
    sudo apt-get -yV install libamd2
    sudo apt-get -yV install libbtf1
    sudo apt-get -yV install libcamd2
    sudo apt-get -yV install libccolamd2
    sudo apt-get -yV install libcholmod1
    sudo apt-get -yV install libcolamd2
    sudo apt-get -yV install libcsparse2
    sudo apt-get -yV install libcxsparse2
    sudo apt-get -yV install libklu1
    sudo apt-get -yV install libldl2
    sudo apt-get -yV install libsuitesparse-dbg
    sudo apt-get -yV install libsuitesparse-dev
    sudo apt-get -yV install libsuitesparse-doc
    sudo apt-get -yV install libumfpack5
    sudo apt-get -yV install libsuitesparse-metis
    sudo apt-get -yV install libsuitesparse-metis-dev
    # zlib
    sudo apt-get -yV install zlib1g-dev 
    

◆ Fedora の場合の実行例

  1. パッケージの更新

    インストール前に「yum check-update; sudo yum update」を実行しておくとトラブルが減るでしょう. これは更新可能な全パッケージを更新するという操作です.

    yum check-update
    sudo yum update
    

  2. 必須ソフトウエアのインストール

    Octave のビルドとインストールに必要になる次のソフトウエアをインストール済みであること.

    参考 Web ページ: http://www.rpmfind.net//linux/RPM/fedora/devel/src/octave-3.2.2-5.fc12.src.html

    ※ 下記のように「yum install <パッケージ名>」で簡単にインストールできます.

  3. metis のインストール

    cd /tmp
    wget http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-5.1.0.tar.gz
    tar -xvzof metis-5.1.0.tar.gz
    cd metis-5.1.0
    make config
    make
    sudo make install
    

2. (オプション)ATLAS をソースパッケージを用いてインストール

Ubuntu では、ATLAS のインストールはパッケージを用いて簡単に行うことができます。 もし、ATLASのパッケージを用いて何かの問題が出たときは、 次の手順で、ATLASのソースパッケージを試すことができます.

インストールに数時間以上かかります.

ATLASのパッケージを用いて問題がなかったときは、この手順を試す必要はありません。

sudo cpufreq-selector -g performance
mkdir /tmp/atlas
cd /tmp/atlas
apt-get source libatlas-dev
sudo apt-get -yV build-dep libatlas-dev
cd atlas-3.8.4
LANG=C sudo dpkg-buildpackage -uc -us -rfakeroot 
cd ..
sudo dpkg -i *.deb

※ /usr/bin/cpufreq-selector が無いときは「sudo apt-get install gnome-applets」

※ 「sudo dpkg -i *.deb」でエラーが出るときは、BIOS メニューで、CPU の電源管理に関する機能を OFF にすると改善する場合がある

3. (オプション)前提ソフトウエアをソースコードからビルドしてインストール

あとで Octave のビルド時に configure を実行しますが,configure でエラーが出る場合,あるいは、octave のテスト時にエラーが出る場合など、 ソースコードからビルドし,インストールすることでエラーが回避できる可能性があります.

※ かなり手間と時間がかかりますので、エラーが出たときのみに試すのがいいと考えます.

<それぞれのインストール手順の Web ページへのリンク>

4. Octave のソースコードのダウンロード

ここで行うことは, Octave ソースコードをダウンロードすること.

  1. http://www.gnu.org/software/octave/ を開く

  2. Download」をクリック

  3. ftp://ftp.gnu.org/gnu/octave」をクリック

  4. octave-3.8.0.tar.gz」をクリック

    ダウンロードが始まる.

  5. ダウンロードしたファイルを /tmp に移す

5. Octave-Forge のソースコードのダウンロード

  1. 今度は, http://octave.sourceforge.net/ を開く

  2. Links」をクリック

  3. http://sourceforge.net/projects/octave/」をクリック

  4. Files」をクリック

  5. Octave Forge」をクリック

  6. 最新版をクリック

  7. ファイルをクリック

  8. ダウンロードしたファイル (octave-forge-bundle-20090607.tar.gz ) を /tmp に移す

    あとで役に立つことが多いので、ダウンロードしておく.(インストール手順は、この Web ページ中に示します)

6. Octave のビルドとインストールの手順

  1. 先ほどダウンロードした octave-3.8.0.tar.gz解凍
    cd /tmp
    sudo rm -rf octave-3.8.0
    tar -xvzof octave-3.8.0.tar.gz
    

    結果の確認(実行結果の例をここに示す).

  2. /etc/ld.so.conf の調整

    設定例は次の通り

    ■ Octave バージョン 3.8.0 の場合

    /usr/local/lib
    /usr/local/lib/octave/3.8.0
    

    ◆ Ubuntu 12.04 での設定例

  3. sudo /sbin/ldconfig の実行
    sudo /sbin/ldconfig
    

  4. cd /tmp/octave-3.8.0 の実行
    cd /tmp/octave-3.8.0
    

  5. configure の実行

    configure の実行については,いくつかの場合を説明する.

    ■   Ubuntu の場合

    64 ビットUbuntu + GNU のコンパイラ + Intel Math Kernel Library(インテル マス・カーネル・ライブラリー)

    .bashrc で 「export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/intel64:/opt/intel/lib/intel64」 のように設定しておくこと。

    ◆ configure の操作例

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/intel64:/opt/intel/lib/intel64
    CC=gcc CXX=g++ F77=gfortran \
    CXXFLAGS="-m64 -DMKL_LP64 -fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/intel64 -I/opt/intel/include/intel64 -I/opt/intel/mkl/include/fftw -I/usr/local/include" \
    FFLAGS="-m64 -DMKL_LP64 -fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/intel64 -I/opt/intel/include/intel64 -I/opt/intel/mkl/include/fftw -I/usr/local/include" \
    export B1="-L/opt/intel/lib/intel64 -L/opt/intel/mkl/lib/intel64 -lmkl_gf_lp64 -lmkl_intel_lp64 -lmkl_intel_thread  -lmkl_core -limf -lintlc -liomp5 -lmetis -lpthread -lquadmath -lm" 
    ./configure --enable-static --enable-shared --enable-dl \
    --with-blas="${B1}" \
    --with-lapack="${B1}" \
    --with-fftw3="${B1}" \
    --with-fftw3f="${B1}" \
    PTHREAD_LIBS="-lpthread"
    

    32 ビットUbuntu + GNU のコンパイラ + Intel Math Kernel Library(インテル マス・カーネル・ライブラリー)

    .bashrc で 「export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/ia32:/opt/intel/lib/ia32」 のように設定しておくこと。

    ◆ configure の操作例

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/lib/ia32:/opt/intel/lib/ia32
    CC=gcc CXX=g++ F77=gfortran \
    CXXFLAGS="-m32 -fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/ia32 -I/opt/intel/include/ia32 -I/opt/intel/mkl/include/fftw -I/usr/local/include" 
    FFLAGS="-m32 -fPIC -DPIC -fomit-frame-pointer -O2 -march=native -I/usr/include -I/opt/intel/mkl/include/ia32 -I/opt/intel/include/ia32 -I/opt/intel/mkl/include/fftw -I/usr/local/include" \
    export B1="-L/opt/intel/lib/ia32 -L/opt/intel/mkl/lib/ia32 -lmkl_gf -lmkl_intel -lmkl_intel_thread  -lmkl_core -limf -lintlc -liomp5 -lmetis -lpthread -lquadmath -lm" 
    ./configure --enable-static --enable-shared --enable-dl \
    --with-blas="${B1}" \
    --with-lapack="${B1}" \
    --with-fftw3="${B1}" \
    --with-fftw3f="${B1}" \
    PTHREAD_LIBS="-lpthread"
    

    Ubuntu + GNU のコンパイラ + Ubuntu のパッケージでインストールされた OpenBLAS
    • Octave 3.8.0
    • OpenBLAS
    • GNU コンパイラ
    • Ubuntu 12.04

    「sudo apt-get install libopenblas-base libatlas3gf-base」で OpenBLAS のインストールの後, コンソールで次の操作を行う.

    ◆ configure の操作例

    sudo update-alternatives --config libblas.so.3gf
    sudo update-alternatives --config liblapack.so.3gf
    CXXFLAGS="-fomit-frame-pointer  -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3  -fexceptions -O2" \
    FFLAGS="-fomit-frame-pointer  -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3  -fexceptions -O2" \
    ./configure --enable-shared --enable-dl \
    --with-blas="-L/usr/lib/openblas-base -lcblas -lopenblas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" \
    --with-lapack="-L/usr/lib/lapack -llapack -L/usr/lib/openblas-base -lopenblas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" 
    

    Ubuntu + GNU のコンパイラ + Ubuntu のパッケージでインストールされた ATLAS と LAPACK
    • Octave 3.8.0
    • ATLAS (Ubuntu のパッケージ)
    • GNU コンパイラ
    • Ubuntu 12.04

    ATLAS をパッケージを用いてインストールの後, コンソールで次の操作を行う.

    ◆ configure の操作例

    sudo update-alternatives --config libblas.so.3gf
    sudo update-alternatives --config liblapack.so.3gf
    CXXFLAGS="-fomit-frame-pointer  -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3  -fexceptions -O2" \
    FFLAGS="-fomit-frame-pointer  -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3  -fexceptions -O2" \
    ./configure --enable-shared --enable-dl \
    --with-blas="-L/usr/lib/atlas-base -lptf77blas -latlas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" \
    --with-lapack="-L/usr/lib/atlas-base -llapack_atlas -llapack -lptf77blas -latlas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" 
    

    Ubuntu + GNU のコンパイラ + ソースコードからビルドされた ATLAS と LAPACK
    • Octave 3.8.0
    • ATLAS 3.10.1 (ソースコードからビルドしてインストール)
    • GNU コンパイラ
    • Ubuntu 12.04, 64 ビット版

    ATLAS のインストールの後, コンソールで次の操作を行う.

    ◆ configure の操作例

    CXXFLAGS="-fomit-frame-pointer  -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3  -fexceptions -O2 -I/usr/local/include -I/usr/local/atlas/include" \
    FFLAGS="-fomit-frame-pointer  -fno-schedule-insns2 -fopenmp -mfpmath=sse -msse3  -fexceptions -O2" \
    ./configure --enable-shared --enable-dl \
    --with-blas="-L/usr/local/lib -L/usr/local/atlas/lib -lptcblas -lptf77blas -latlas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" \
    --with-lapack="-L/usr/local/lib -L/usr/local/atlas/lib -ltmglib -llapack -lptcblas -lptf77blas -latlas -lmetis -lquadmath -lgfortran -lgomp -lpthread -ldl" 
    

    ■   Fedora の場合 ■  

    Fedora + GNU のコンパイラ + パッケージでインストールされた ATLAS と LAPACK
    • ATLAS (パッケージ)
    • GNU コンパイラ
    • Fedora

    ◆ configure の操作例

    CC=gcc CXX=g++ F77=gfortran LIBS="-lquadmath -lm" CFLAGS="-O3 -fexceptions" CPPFLAGS="-O3 -fexceptions" FFLAGS="-O3 -fexceptions" ./configure --prefix=/usr/local --enable-static --enable-shared --enable-dl --disable-static --with-blas="-L/usr/lib64/atlas -lptf77blas -latlas -lgfortran -lpthread -lquadmath" --with-lapack="-L/usr/lib64/atlas -llapack -lquadmath" --with-qrupdate-libdir=/usr/local/lib PTHREAD_LIBS="-lpthread"
    

    ※ なお,metis をリンクしたい場合には「LIBS="-lmetis -lm"」を付ける.

    ※ OpenMP も使いたい場合は,CFLAGS と CPPFLAGS に「-fopenmp」を付ける

    Core2 プロセッサであり,かつ,64 ビット Linux を使っている場合.

    • 64 ビット Linux なので「-m64」を付ける.
    • Core2 プロセッサなので「-mfpmath=sse -msse4.2 -march=native」を付ける.(gcc 等のバージョンによっては,「-mfpmath=sse -mssse3 -march=core2」に変えることもある)

      ※ -mnative は Pentium 系のマシンにおいて「そのマシンの CPU に特化したコードを生成する」という意味.詳しくは「gcc -E -v -march=native -」

    つまり,以下の通り

    CC=gcc CXX=g++ F77=gfortran LIBS="-lquadmath -lm" CFLAGS="-O3 -fexceptions -m64 -march=native -mfpmath=sse -msse4.2" CPPFLAGS="-O3 -fexceptions -m64 -march=native -mfpmath=sse -msse4.2" FFLAGS="-O3 -fexceptions -m64 -march=native -mfpmath=sse -msse4.2" ./configure --prefix=/usr/local --enable-static --enable-shared --enable-dl --disable-static --with-blas="-L/usr/lib64/atlas -lptf77blas -latlas -lgfortran -lpthread -lquadmath" --with-lapack="-L/usr/lib64/atlas -llapack -lquadmath" --with-qrupdate-libdir=/usr/local/lib PTHREAD_LIBS="-lpthread"
    

    Fedora + GNU のコンパイラ + ソースコードからビルドされた ATLAS と LAPACK

    ATLAS を自前でビルドした場合で,それを使いたい場合は,コンソールで次の操作を行う.

    ATLAS を自前でビルドした場合には「-L/usr/lib64/atlas」の部分は「-L/usr/local/atlas/lib」のように変える.例えば,次のようになる.

    Fedora + GNU のコンパイラ + GotoBLAS

    GotoBLAS のビルドとインストールの後, コンソールで次の操作を行う.

    ◆ configure の操作例

    CC=gcc CXX=g++ F77=gfortran LIBS="-lquadmath -lm" CFLAGS="-O3 -fexceptions" CPPFLAGS="-fexceptions" FFLAGS="-O3 -fexceptions" ./configure --prefix=/usr/local --enable-static --enable-shared --enable-dl --disable-static --with-blas="-lgoto -lgfortran -lpthread -lquadmath" --with-lapack="-llapack_LINUX -ltmglib_LINUX -lquadmath" --with-qrupdate-libdir=/usr/local/lib PTHREAD_LIBS="-lpthread"
    

    ※ なお,metis をリンクしたい場合には「LIBS="-lmetis -lm"」を付ける.

  6. configure の結果の確認

    ※ エラーメッセージが出ていないこと を確認してください

    ■   Ubuntu の場合 ■  

    ■   Fedora の場合 ■  

    Fedora 17 での configure の実行結果例

  7. make の実行

    make -j4
    

  8. make の結果の確認

    ■   Ubuntu の場合 ■  

    ■   Fedora の場合 ■  

    Fedora 17 での make の実行結果例

    (octave バージョン 3.6.2 の場合)

  9. make check の実行
    make check
    

  10. make check の結果の確認

    ■   Ubuntu の場合

    ※ Octave バージョン 3.2.4 の場合, 次のようなエラーが出る場合がある.

    scripts/image/imread.m ... octave: magick/semaphore.c:525: LockSemaphoreInfo: Assertion `semaphore_info != (SemaphoreInfo *) ((void *)0)' failed.
    panic: Aborted -- stopping myself...
    

    これは,GraphicsMagick の新しいバージョンに,Octave バージョン 3.2.4 が対応していないことに起因するエラーである. GraphicsMagick の古いバージョンをインストールすることで解決する場合がある.

    1. GraphicsMagick-1.2.7.tar.gzのダウンロード→解凍
    2. .configure または .configure --without-perl
    3. make
    4. make install

    ■   Fedora の場合 ■  

    Fedora 17 での make check の実行結果例

    Octave バージョン 3.6.2 の場合

  11. sudo make install の実行
    sudo make install
    

  12. make install の結果の確認

    Ubuntu での実行結果例

  13. 試しに実行してみる
      X = rand(2000,2000); Y = rand(2000,2000); tic(); Z = X * Y; toc()
      X = rand(2000,2000); tic(); [L, U, P] = lu(X); toc()
      X = rand(2000,2000); tic(); [Z, RCOND] = inv(X); toc()
      X = rand(2000,2000); tic(); [D, RCOND] = det(X); toc()
      X = rand(2000,2000); tic(); [U, S, V] = svd(X); toc()
      X = rand(2000,2000); tic(); [Q, R, P] = qr(X); toc()
      X = rand(2000,2000); Y = rand(2000,2000); tic(); Z = cov(X, Y); toc()
      X = rand(2000,2000); tic(); [v, L] = eig( cov(X) ); toc()
      X = rand(2000,2000); B = rand(21); tic(); Z = conv2(X, B, 'full'); toc()
      X = rand(2000,2000); tic(); Z = fft2(X, 2000, 2000); toc()
      x = rand(1000000,1); y = rand(1000000,1); tic(); H = convhull(x, y); toc()
    

Octave-forge のインストール

  1. Octave-forge ソースコードの入手を済ませておくこと

    http://sourceforge.net/projects/octave

    詳しい手順は,この Web ページの上の方に記述している.

  2. Octave-forge ソースコード octave-forge-bundle-200900607.tar.gz を /tmp に解凍
    cd /tmp
    tar -xvzof octave-forge-bundle-200900607.tar.gz
    

  3. .octaverc の設定

    ホームディレクトリに,ファイル「.octaverc」を作成しておく. 下記の「pkg install ...」の実行時に 「UINT_64_C was not declared in this scope」のようなエラーが出ることを防ぐために、下記の設定を行う.

    setenv("CFLAGS", "-D__STDC_CONSTANT_MACROS");
    setenv("CXXFLAGS", "-D__STDC_CONSTANT_MACROS");
    

  4. インストール

    (方針)

    参考 Web ページ http://www.gnu.org/software/octave/doc/interpreter/Installing-and-Removing-Packages.html

    cd /tmp
    ldconfig 
    tar -xvzof /tmp/octave-forge-bundle-20090607.tar.gz
    # 不要なパッケージの削除
    for i in time-2.0.0 financial-0.4.0 communications-1.1.1 ncArray-1.0.0 splines-1.1.0 issa-0.1.2 mechanics-1.2.1 data-smoothing-1.3.0 strings-1.1.0 quaternion-2.0.0 specfun-1.1.0 dicom-0.1.1 geometry-1.5.0 queueing-1.1.0 NaN-2.5.5 actuarial-1.1.0 bim-1.0.1 control-2.3.53 dataframe-0.9.1 econometrics-1.0.8 es-0.0.4 fenv-0.1.0 fits-1.0.2 fl-core-1.0.0 fpl-1.3.1 ga-0.10.0 general-1.3.2 generate_html-0.1.3 gnuplot-1.0.1 gpc-0.1.7 image-1.0.14 io-1.0.19 java-1.2.9 linear-algebra-2.2.0 miscellaneous-1.1.0 msh-1.0.2 nan-2.4.1 nlwing2-1.2.0 nnet-0.1.13 nurbs-1.3.3 ocs-0.1.3 octcdf-1.1.5 octgpr-1.2.0 octproj-1.1.0 ode-1.0.1 odepkg-0.6.12 openmpi_ext-1.1.0 optim-1.2.0 optiminterp-0.3.3 parallel-2.0.6 plot-1.0.8 pt_br-1.0.9 signal-1.1.3 sockets-1.0.8 specfun-1.0.9 statistics-1.1.3 struct-1.0.10 tsa-4.2.4 vrml-1.0.13 fuzzy-logic-toolkit-0.4.1; do A=${i/-*}; rm -f /tmp/octave-forge-bundle-20090607/main/${A}*; rm -f /tmp/octave-forge-bundle-20090607/extra/${A}* ; done
    # repeat 3 times
    # 1 回目だけは「-nodeps 」付き
    for i in /tmp/octave-forge-bundle-20090607/main/*.tar.gz; do echo $i; echo "pkg install -nodeps -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" |  octave; done
    # octave forge bundle-20090607 が古いので、
    # 必要なものを拾う作業が残っている
    for i in time-2.0.0 financial-0.4.0 communications-1.1.1 ncArray-1.0.0 splines-1.1.0 issa-0.1.2 mechanics-1.2.1 data-smoothing-1.3.0 strings-1.1.0 quaternion-2.0.0 specfun-1.1.0 dicom-0.1.1 geometry-1.5.0 queueing-1.1.0 NaN-2.5.5 actuarial-1.1.0 bim-1.0.1 control-2.3.53 dataframe-0.9.1 econometrics-1.0.8 es-0.0.4 fenv-0.1.0 fits-1.0.2 fl-core-1.0.0 fpl-1.3.1 ga-0.10.0 general-1.3.2 generate_html-0.1.3 gnuplot-1.0.1 gpc-0.1.7 image-1.0.14 io-1.0.19 java-1.2.9 linear-algebra-2.2.0 miscellaneous-1.1.0 msh-1.0.2 nan-2.4.1 nlwing2-1.2.0 nnet-0.1.13 nurbs-1.3.3 ocs-0.1.3 octcdf-1.1.5 octgpr-1.2.0 octproj-1.1.0 ode-1.0.1 odepkg-0.6.12 openmpi_ext-1.1.0 optim-1.2.0 optiminterp-0.3.3 parallel-2.0.6 plot-1.0.8 pt_br-1.0.9 signal-1.1.3 sockets-1.0.8 specfun-1.0.9 statistics-1.1.3 struct-1.0.10 tsa-4.2.4 vrml-1.0.13 fuzzy-logic-toolkit-0.4.1; do echo $i; echo "pkg install -nodeps -global -forge `echo $i | sed 's/\-[0-9\.]*//g'`" |  octave; done
    for i in /tmp/octave-forge-bundle-20090607/extra/*.tar.gz; do echo $i; echo "pkg install -nodeps -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" |  octave; done
    # 2
    for i in /tmp/octave-forge-bundle-20090607/main/*.tar.gz; do echo $i; echo "pkg install -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" |  octave; done
    for i in time-2.0.0 financial-0.4.0 communications-1.1.1 ncArray-1.0.0 splines-1.1.0 issa-0.1.2 mechanics-1.2.1 data-smoothing-1.3.0 strings-1.1.0 quaternion-2.0.0 specfun-1.1.0 dicom-0.1.1 geometry-1.5.0 queueing-1.1.0 NaN-2.5.5 actuarial-1.1.0 bim-1.0.1 control-2.3.53 dataframe-0.9.1 econometrics-1.0.8 es-0.0.4 fenv-0.1.0 fits-1.0.2 fl-core-1.0.0 fpl-1.3.1 ga-0.10.0 general-1.3.2 generate_html-0.1.3 gnuplot-1.0.1 gpc-0.1.7 image-1.0.14 io-1.0.19 java-1.2.9 linear-algebra-2.2.0 miscellaneous-1.1.0 msh-1.0.2 nan-2.4.1 nlwing2-1.2.0 nnet-0.1.13 nurbs-1.3.3 ocs-0.1.3 octcdf-1.1.5 octgpr-1.2.0 octproj-1.1.0 ode-1.0.1 odepkg-0.6.12 openmpi_ext-1.1.0 optim-1.2.0 optiminterp-0.3.3 parallel-2.0.6 plot-1.0.8 pt_br-1.0.9 signal-1.1.3 sockets-1.0.8 specfun-1.0.9 statistics-1.1.3 struct-1.0.10 tsa-4.2.4 vrml-1.0.13 fuzzy-logic-toolkit-0.4.1; do echo $i; echo "pkg install -global -forge `echo $i | sed 's/\-[0-9\.]*//g'`" |  octave; done
    for i in /tmp/octave-forge-bundle-20090607/extra/*.tar.gz; do echo $i; echo "pkg install -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" |  octave; done
    # 3
    for i in /tmp/octave-forge-bundle-20090607/main/*.tar.gz; do echo $i; echo "pkg install -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" |  octave; done
    for i in time-2.0.0 financial-0.4.0 communications-1.1.1 ncArray-1.0.0 splines-1.1.0 issa-0.1.2 mechanics-1.2.1 data-smoothing-1.3.0 strings-1.1.0 quaternion-2.0.0 specfun-1.1.0 dicom-0.1.1 geometry-1.5.0 queueing-1.1.0 NaN-2.5.5 actuarial-1.1.0 bim-1.0.1 control-2.3.53 dataframe-0.9.1 econometrics-1.0.8 es-0.0.4 fenv-0.1.0 fits-1.0.2 fl-core-1.0.0 fpl-1.3.1 ga-0.10.0 general-1.3.2 generate_html-0.1.3 gnuplot-1.0.1 gpc-0.1.7 image-1.0.14 io-1.0.19 java-1.2.9 linear-algebra-2.2.0 miscellaneous-1.1.0 msh-1.0.2 nan-2.4.1 nlwing2-1.2.0 nnet-0.1.13 nurbs-1.3.3 ocs-0.1.3 octcdf-1.1.5 octgpr-1.2.0 octproj-1.1.0 ode-1.0.1 odepkg-0.6.12 openmpi_ext-1.1.0 optim-1.2.0 optiminterp-0.3.3 parallel-2.0.6 plot-1.0.8 pt_br-1.0.9 signal-1.1.3 sockets-1.0.8 specfun-1.0.9 statistics-1.1.3 struct-1.0.10 tsa-4.2.4 vrml-1.0.13 fuzzy-logic-toolkit-0.4.1; do echo $i; echo "pkg install -global -forge `echo $i | sed 's/\-[0-9\.]*//g'`" |  octave; done
    for i in /tmp/octave-forge-bundle-20090607/extra/*.tar.gz; do echo $i; echo "pkg install -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" |  octave; done
    # update
    echo "pkg update -global" | octave
    

  5. (オプション) パッケージの追加

    「pkg install -global -forge ...」を使って簡単に追加できる.

    for i in NaN-2.0.4 actuarial-1.1.0 bim-1.0.1 control-2.1.53 dataframe-0.8.2 econometrics-1.0.8 es-0.0.4 fenv-0.1.0 fits-1.0.1 fl-core-1.0.0 fpl-1.2.0 ga-0.9.8 general-1.2.2 generate_html-0.1.3 gnuplot-1.0.1 gpc-0.1.7 image-1.0.14 io-1.0.14 java-1.2.7 linear-algebra-2.0.0 miscellaneous-1.0.11 msh-1.0.2 nan-2.4.1 nlwing2-1.2.0 nnet-0.1.13 nurbs-1.3.3 ocs-0.1.1 octcdf-1.1.2 octgpr-1.2.0 octproj-1.0.2 ode-1.0.1 odepkg-0.6.12 openmpi_ext-1.0.2 optim-1.0.16 optiminterp-0.3.3 parallel-2.0.5 plot-1.0.8 pt_br-1.0.9 signal-1.0.11 sockets-1.0.7 specfun-1.0.9 statistics-1.0.10 struct-1.0.9 tsa-4.1.0 vrml-1.0.11 fuzzy-logic-toolkit-0.2.3; do echo $i; echo "pkg install -global -forge `echo $i | sed 's/\-[0-9\.]*//g'`" | sudo octave; done
    

  6. (オプション) 最新版に更新

    「pkg install -global -forge ...」を使って簡単に更新できる.

    for i in /tmp/octave-forge-bundle-20090607/main/*.tar.gz; do echo $i; echo "pkg install -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" | sudo octave; done
    for i in /tmp/octave-forge-bundle-20090607/extra/*.tar.gz; do echo $i; echo "pkg install -global -forge `basename $i .tar.gz | sed 's/\-[0-9\.]*//g'`" | sudo octave; done
    

  7. インストールされたパッケージの確認

  8. テスト実行

    ためしに、video パッケージの機能を使って,avi 形式のビデオファイルの読み込みと、フレーム100番の表示を行ってみる. (OpenCV に付属の avi ファイルを使っています)

    pkg load video
    img = aviread("/usr/local/share/opencv/samples/c/tree.avi", 100);
    imshow(img);
    

※ (参考情報)個別のパッケージのインストール方法

なお,octave の「pkg install」だとエラーメッセージが分かりにくいので, エラーが出るけど原因が分からないという場合, 下記のようなコマンドを実行して,エラーの有無を確認するという方法もあります.

cd main
tar -xvzof image-1.0.10.tar.gz
cd image-1.0.10
cd src
sh autogen.sh
CFLAGS="-I/usr/local/include/octave-3.6.2 -I/usr/local/include" LDFLAGS="-L/usr/local/lib/octave-3.6.2 -L/usr/local/lib" LIBS="-lavcodec -lavdevice -lavutil -lavformat -lswscale -lpng12 -lm" ./configure
make LIBS="-lavcodec -lavdevice -lavutil -lavformat -lswscale -lpng12 -lm"
make install

性能測定の例

  1. Octave をパッケージを用いてインストール: Octave 3.2.4 をパッケージを用いてインストール
  2. ATLAS 3.8.4 のパッケージ: ATLAS 3.8.4 をパッケージを用いてインストール. Octave 3.6.2 をビルド(本ページの手順)
  3. ATLAS 3.9.81 をビルド: ATLAS 3.9.81 をソースコードからビルドしてインストール. Octave 3.6.2 をビルド(本ページの手順)
  4. Intel MKL: Intel MKL をインストール. Octave 3.6.2 をビルド・インストール(本ページの手順)

      1. Octave をパッケージを用いてインストール 2. ATLAS 3.8.4 のパッケージ 3. ATLAS 3.9.81 をビルド 4. Intel MKL
(a) 行列と行列の積 X = rand(2000,2000); Y = rand(2000,2000); Z = X * Y 1.25 sec 1.23 sec 0.30 sec 0.188 sec
(b) LU 分解 (LU decomposition) X = rand(2000,2000); [L, U, P] = lu(X) 0.67 sec 0.70 sec 0.31 sec 0.181 sec
(c) 正方行列の逆行列 X = rand(2000,2000); [Z, RCOND] = inv(X) 1.72 sec 1.75 sec 0.58 sec 0.30 sec
(d) 行列式 (determinant) X = rand(2000,2000); [D, RCOND] = det(X) 0.63 sec 0.65 sec 0.25 sec 0.118 sec
(e) Singular Value Decomposition (SVD), X = U*S*V X = rand(2000,2000); [U, S, V] = svd(X) 72 sec 72 sec 70 sec 5.7 sec
(f) QR factorization X = rand(2000,2000); [Q, R, P] = qr(X) 4.2 sec 4.2 sec 1.80 sec 1.52 sec
(g) 分散共分散行列 X = rand(2000,2000), Y = rand(2000,2000); Z = cov(X, Y) 1.34 sec 1.27 sec 0.32 sec 0.23 sec
(h) 分散共分散行列の固有値と固有ベクトル(主成分分析) X = rand(2000,2000); [v, L] = eig( cov(X) ) 13.3 sec 13.2 sec 13.7 sec 2.1 sec
(i) 2次元の畳み込み(コンボリューション) X = rand(2000,2000); B = rand(21); Z = conv2(X, B, 'full') 4.1 sec 1.26 sec 0.73 sec 0.42 sec
(j) 2次元の高速フーリエ変換 (FFT) X = rand(2000,2000); Z = fft2(X, 2000, 2000) 0.105 sec 0.090 sec 0.098 sec 0.092 sec
(k) convex hull x = rand(1000000,1); y = rand(1000000,1); H = convhull(x, y) 0.51 sec 0.115 sec 0.126 sec 0.114 sec

【お断り】プログラムのテストを行っていない.他のプロセスを止めるなどしていない(従って,比較ではなく,傾向を見るための参考値だと思ってください).※ 単位は秒で,3桁目を四捨五入.

「2. ATLAS 3.8.4 のパッケージ」の実測値の例

ATLAS 3.8.4 をパッケージを用いてインストール. Octave 3.6.2 をビルド(本ページの手順)


(a) 行列と行列の積: X = rand(2000,2000); Y = rand(2000,2000); Z = X * Y


(b) LU 分解 (LU decomposition): X = rand(2000,2000); [L, U, P] = lu(X)


(c) 正方行列の逆行列: X = rand(2000,2000); [Z, RCOND] = inv(X)


(d) 行列式 (determinant): X = rand(2000,2000); [D, RCOND] = det(X)


(e) Singular Value Decomposition (SVD), X = U*S*V: X = rand(2000,2000); [U, S, V] = svd(X)


(f) QR factorization (QR decomposition ともいう): X = rand(2000,2000); [Q, R, P] = qr(X)


(g) 分散共分散行列: X = rand(2000,2000); Y = rand(2000,2000); Z = cov(X, Y)


(h) 分散共分散行列の固有値と固有ベクトル(主成分分析): X = rand(2000,2000); [v, L] = eig( cov(X) )


(i) 2次元の畳み込み(コンボリューション): X = rand(2000,2000); B = rand(21); Z = conv2(X, B, 'full')


(j) 2次元の高速フーリエ変換 (FFT): X = rand(2000,2000); Z = fft2(X, 2000, 2000)


(k) convex hull: x = rand(1000000,1); y = rand(1000000,1); H = convhull(x, y)

「3. ATLAS 3.9.81 をビルド」の実測値の例

ATLAS 3.9.81 をソースコードからビルドしてインストール. Octave 3.6.2 をビルド(本ページの手順)


(a) 行列と行列の積: X = rand(2000,2000); Y = rand(2000,2000); Z = X * Y


(b) LU 分解 (LU decomposition): X = rand(2000,2000); [L, U, P] = lu(X)


(c) 正方行列の逆行列: X = rand(2000,2000); [Z, RCOND] = inv(X)


(d) 行列式 (determinant): X = rand(2000,2000); [D, RCOND] = det(X)


(e) Singular Value Decomposition (SVD), X = U*S*V: X = rand(2000,2000); [U, S, V] = svd(X)


(f) QR factorization (QR decomposition ともいう): X = rand(2000,2000); [Q, R, P] = qr(X)


(g) 分散共分散行列: X = rand(2000,2000); Y = rand(2000,2000); Z = cov(X, Y)


(h) 分散共分散行列の固有値と固有ベクトル(主成分分析): X = rand(2000,2000); [v, L] = eig( cov(X) )


(i) 2次元の畳み込み(コンボリューション): X = rand(2000,2000); B = rand(21); Z = conv2(X, B, 'full')


(j) 2次元の高速フーリエ変換 (FFT): X = rand(2000,2000); Z = fft2(X, 2000, 2000)


(k) convex hull: x = rand(1000000,1); y = rand(1000000,1); H = convhull(x, y)

「4. Intel MKL」での実測値の例

Intel MKL をインストール. Octave 3.6.2 をビルド・インストール(本ページの手順)

【実測値の例】


(a) 行列と行列の積: X = rand(2000,2000); Y = rand(2000,2000); Z = X * Y


(b) LU 分解 (LU decomposition): X = rand(2000,2000); [L, U, P] = lu(X)


(c) 正方行列の逆行列: X = rand(2000,2000); [Z, RCOND] = inv(X)


(d) 行列式 (determinant): X = rand(2000,2000); [D, RCOND] = det(X)


(e) Singular Value Decomposition (SVD), X = U*S*V: X = rand(2000,2000); [U, S, V] = svd(X)


(f) QR factorization (QR decomposition ともいう): X = rand(2000,2000); [Q, R, P] = qr(X)


(g) 分散共分散行列: X = rand(2000,2000); Y = rand(2000,2000); Z = cov(X, Y)


(h) 分散共分散行列の固有値と固有ベクトル(主成分分析): X = rand(2000,2000); [v, L] = eig( cov(X) )


(i) 2次元の畳み込み(コンボリューション): X = rand(2000,2000); B = rand(21); Z = conv2(X, B, 'full')


(j) 2次元の高速フーリエ変換 (FFT): X = rand(2000,2000); Z = fft2(X, 2000, 2000)


(k) convex hull: x = rand(1000000,1); y = rand(1000000,1); H = convhull(x, y)




以下、書きかけ
  • Ubuntu で インテル C++ Composer XE Linux 版, インテル Fortran Composer XE Linux 版をインストール済みで,それらを使いたい場合
    CC=icc CXX=icpc F77=ifort F1="-D_GL_HAVE_STATIC_ASSERT=0 -fPIC -DPIC -O2 -I/opt/intel/mkl/include/intel64 -I/opt/intel/mkl/include -I/opt/intel/include/intel64 -I/opt/intel/include -I/usr/local/include" LDFLAGS="-L/opt/intel/lib/intel64 -L/opt/intel/mkl/lib/intel64" LIBS="-lmetis -lquadmath -lm" CFLAGS="$F1" CPPFLAGS="$F1" FFLAGS="$F1" ./configure --enable-static --enable-shared --enable-dl --with-blas="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -limf -lintlc -liomp5 -lpthread -lquadmath -lm" --with-lapack="-lmkl_lapack95_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -limf -lintlc -liomp5 -lpthread -lquadmath -lm" PTHREAD_LIBS="-lpthread"
    

    ◆ configure の操作例

  • Ubuntu で インテル C++ Composer XE Linux 版, インテル Fortran Composer XE Linux 版をインストール済みで,それらを使いたい場合

    ◆ configure の実行結果例

  • Ubuntu で インテル C++ Composer XE Linux 版, インテル Fortran Composer XE Linux 版をインストール済みで,それらを使いたい場合

    ◆ make の実行結果例

    Intel MKL 1125 to 1135 tobe filled
      if [ ! -f /usr/lib/libgcc_s.so ]; then
          if [ -f /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s.so ]; then 
              cd /usr/lib
              ln -s /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s.so .
          fi
          if [ -f /usr/lib/gcc/i386-linux-gnu/4.6/libgcc_s.so ]; then 
              cd /usr/lib
              ln -s /usr/lib/gcc/i386-linux-gnu/4.6/libgcc_s.so .
          fi
      fi
    
    see atlaslinux.html
    
    
    # sudo apt-get -yV install libatlas-base-dev
    # sudo apt-get -yV install libatlas-dev
    # sudo apt-get -yV install libatlas-doc
    # sudo apt-get -yV install libatlas-test
    # sudo apt-get -yV install libatlas3gf-base
    
    l libatlas-doc
    # sudo apt-get -yV install libatlas-test
    # sudo apt-get -yV install libatlas3gf-base
    
    F1="-fPIC -DPIC -fomit-frame-pointer -O2 -I/usr/include/atlas -I/usr/local/include" LDFLAGS="-L/usr/lib/atlas-base -L/usr/local/lib" LIBS="-lmetis -lgfortran -lgomp -lpthread -ldl -lquadmath" CFLAGS="$F1" CPPFLAGS="$F1" FFLAGS="$F1" ./configure --enable-static --enable-shared --enable-dl --with-blas="-lptcblas -lptf77blas -latlas -lgfortran -lgomp -lpthread -ldl -lquadmath" --with-lapack="-llapack_atlas -lptcblas -lptf77blas -latlas -lgfortran -lgomp -lpthread -ldl -lquadmath" PTHREAD_LIBS="-lpthread"
    
      # コンパイル時のエラー回避のため
      rm -f /tmp/malloca.c.$$
      cat libgnu/malloca.c | fgrep -v verify > /tmp/malloca.c.$$
      cp /tmp/malloca.c.$$ libgnu/malloca.c
    #  cat libcruft/arpack/util/second.f | sed 's/INTRINSIC/EXTERNAL/g' > /tmp/second.f.$$
    #  cp /tmp/second.f.$$ libcruft/arpack/util/second.f
      rm -f /tmp/stdio.h.$$
      cat libgnu/stdio.h | sed "s/_GL_CXXALIAS_SYS (getchar, int, (void));/\/\/_GL_CXXALIAS_SYS (getchar, int, (void));/g" | sed "s/_GL_CXXALIAS_SYS (putchar, int, (int c));/\/\/_GL_CXXALIAS_SYS (putchar, int, (int c));/g" | sed "s/_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char/\/\/_GL_CXXALIAS_SYS_CAST (vprintf, int, (const char/g" > /tmp/stdio.h.$$
      cp /tmp/stdio.h.$$ libgnu/stdio.h
      #
      rm -f /tmp/nanosleep.c.$$
      cat libgnu/nanosleep.c | sed "s/verify (TYPE/\/\/ verify (TYPE/g" > /tmp/nanosleep.c.$$
      cp /tmp/nanosleep.c.$$ libgnu/nanosleep.c
    # 
    
    

  • (インテルのコンパイラを使うときに限る)インテルのコンパイラを使ってビルドしたいときは,ソースコードの調整を行う

    libgnu/stdio.h を次のように変更

    libgnu/verify.h の 「#define _GL_HAVE_STATIC_ASSERT 1」の行をコメントアウト