数値計算

提供: MacWiki
移動: 案内検索

数値計算関係のノウハウ/メモ

数値計算ライブラリ[編集]

ATLAS[編集]

Automatically Tuned Linear Algebra Software (ATLAS)

Bayes++[編集]

Bayesian Filtering Classes for C++

Kalman filter や各種の非線型フィルタの数値計算ライブラリ


BLAS[編集]

Basic Linear Algebra Subprograms (BLAS) 。ベクトル・行列などの基礎的な演算機能を提供するライブラリ。MacOSX には、(clapack と同様)Developer's kit の一部として、下記のディレクトリ内にインストールされる。

/System/Library/Frameworks/vecLib.framework/

これは、PowerPC 用もしくは Intel-Core 用に最適化されたBLAS のはずです。(どこかに検証情報はあるでしょうか?)

    • 上記のIntel-Core 用 BLAS と, 下記の Intel Math Kernel Libraryで提供される BLAS との差異はあるでしょうか?
      • Intel Math Kernel Library の BLAS の方はかなり最適化されているのかもしれません. なお Intel C/C++gcc とから使えるようです.

BLAS などの一般的解説もしくは関連情報は、


Exflib[編集]

任意精度ライブラリ C++ Fortran 90/95

FFTSS[編集]

国産の離散フーリエ変換用ライブラリ。 FFTW3とインターフェイス互換で、MPI / OpenMP による並列処理に対応。 配列サイズは2の巾乗。

FFTW[編集]

離散フーリエ変換用のライブラリ。 → FFTWを参照して下さい。

FMLIB[編集]

任意精度ライブラリ Fortran77/90

FORTRAN routines for computation of Special Functions[編集]

FreeFEM++[編集]

有限要素法数値計算パッケージ

GMP[編集]

任意精度の数値計算ライブラリ。

GSL[編集]

GNUな科学計算用数値計算ライブラリ。C/C++用。

Intel Math Kernel Library[編集]

Intel CPU 用の数値計算ライブラリ詰め合わせセット。 Mac OSX 版は有料製品。(Linux 版は non-commercial 用途ではフリー; Intel C++/Fortran Compiler も同様) Intel Mac 付属の Lapack や BLAS よりも、さらに Intel Core 2 Duo 等向けに最適化されているようです。

Intel Integrated Performance Primitives[編集]

LAPACK, C LAPACK[編集]

Linear Algebra PACKage. 線形代数の各種計算を行う定番のライブラリ。詳しくは Wikipedia:LAPACK などを参照して下さい。 MacOSXでは、Developer's kit の一部として lapack やその他のライブラリをインストールしてくれます。

コンパイルオプションの指定方法は、

$ gcc -framework vecLib ___.c

もしくは

$ gcc -Wl,-framework -Wl,vecLib ___.c

のようにします。

ヘッダファイルは

#include <vecLib/vecLib.h> 

とするか、何らかの方法で /System/Library/Frameworks/vecLib.framework/Versions/Current/Headers/clapack.h を include すれば良いでしょう。

  • 上記ファイルを同じディレクトリにコピーする
  • #include <clapack.h> と書いて gcc に -I/System/Library/Frameworks/vecLib.framework/Versions/Current/Headers を渡す
  • /usr/include にシンボリックリンクを貼る etc.

LAPACK のサブルーチンは、そもそも Fortran で書かれている。 従って、配列の定義や引数の渡し方などのプログラミング手法(流儀)が、 通常の C 言語のものとは大きく異なっていることに注意する。

Fortran 言語では、 HPC の gfortran を使う場合は、 コンパイル時に以下のオプションを追加するだけで良い。

$ gfortran -Wl,-framework -Wl,Accelerate ___.f

Intel Fortran では、付属の MKL ライブラリに LAPACK 関数群が含まれている。

関連情報:

liboctave[編集]

Mersenne Twister[編集]

高性能な疑似乱数生成ライブラリ

NAG[編集]

  • 英国Oxford 商用 数値計算ライブラリ
  • NAG数値計算ライブラリにはFFT、最適化、最小二乗法、固有値問題、偏微分方程式、常微分方程式、
  • 曲面・曲線フィッティング等の科学技術計算ルーチン群と、分散分析、時系列予測、主成分分析、
  • クラスタ分析などの統計計算ルーチン群を約1500提供。現在提供されている製品のバージョンはMark21。

同製品の一部にはMKLが含まれる。またプラットフォームごとに最適化されたLapackも含まれる。


☆NAG Fortran Library, Mark 21(Fortran,VBA等から利用可能)

  • FLAMP21D9L - Apple Power Mac (Mac OS X), NAGWare f95, Double Precision
  • FLMI621DCL - Apple Intel Mac OS X (64-bit), Intel Fortran Double Precision (ILP64)
  • FLMIN21DCL - Apple Intel Mac OS X, Intel Fortran 32-bit
  • FLMIN21D9L - Apple Intel Mac OS X, NAGWare f95, Double Precision
  • FLMI621D9L - Apple Intel Mac OS X (64-bit), NAGWare f95, Double Precision

搭載される関数リスト一覧(NAG Fortran Library) http://www.nag-j.co.jp/naglib/fl/funclist.htm


☆NAG C Library, Mark 8(C/C++言語版,Java、VBA等からも利用可能)

  • CLAMP08DAL - Apple Power Mac, Mac OS X I Gnu C (32-bit)
  • CLMIN08DGL - Apple Intel Mac OSX, GNU C (32-bit)
  • CLMI608DGL - Apple Intel Mac OSX GNU C(64-bit)

搭載される関数リスト一覧(NAG C Library) http://www.nag-j.co.jp/naglib/cl/funclist.htm

☆NAG parallel library(クラスタ(MPI)並列ライブラリ) multi-coreCPUにも並列対応

  • FDAMP03DG - Apple Power Mac (Mac OS X)

搭載される関数リスト一覧(NAG parallel library) http://www.nag-j.co.jp/naglib/fd/funclist.htm

☆NAG dataMining component(データマイング関数ルーチンライブラリ) C、C++、VBA、PERL、Java、C#、Python等の言語からの呼び出しが可。 決定木、回帰の木、ニューラルネットワークなどの各種分析機能 各種データクリーニングの機能がライブラリとして提供

  • DRAMP20DA - Apple Power Mac, Mac OS X

アカデミック価格あり。 http://www.nag-j.co.jp/news/intelMacLib/index.htm

NTL[編集]

数論に関係した計算用のライブラリ for C++

  • たとえば暗号解読関係や LLL lattice basis reduction などの計算が含まれています。
  • http://www.shoup.net/ntl/

PETSc[編集]

並列計算や行列演算を行うライブラリ。MPI/GPU対応。

SVMTL[編集]

The Scalar, Vector, Matrix and Tensor Library for C++

TNT[編集]

Template Numerical Toolkit (TNT)

uBLAS[編集]

Basic Linear Algegra for C++

数値計算の話題など[編集]

  • 精度保証付き数値計算付きの処理言語

http://www.oishi.info.waseda.ac.jp/~oishi/slab/slab.htm

    • ちなみに Mathematica も任意高精度数値演算を元々備えています。
  • MATLAB を利用する数値計算


Hyper-Thread technology[編集]

Mac OSX におけるHyper-Thread technology をoffにする方法は,root権限を取得し, terminalで,

nvram SMT=0

とする.


参考リンク[編集]

アルゴリズムデータベース

GNU/Linux ユーザのための数値計算のTips

数値計算ツール(早稲田大・大石さん)

Fortran入門

Fortran2003入門

Lapackサンプルプログラム集(日本語)

Wiki内の関連ページ[編集]