「数値計算」の版間の差分

提供: MacWiki
移動: 案内検索
(NAG)
(LAPACK, C LAPACK: 手直し)
行77: 行77:
 
=== LAPACK, C LAPACK ===
 
=== LAPACK, C LAPACK ===
  
'''L'''inear '''A'''lgebra '''PACK'''age. 線形代数の各種計算を行う定番のライブラリ。詳しくは [[Wikipedia:LAPACK]] などを参照して下さい。MacOSXでは、Developer's kit の一部として lapack やその他のライブラリをインストールしてくれるはず。コンパイルオプションの指定方法は、
+
'''L'''inear '''A'''lgebra '''PACK'''age. 線形代数の各種計算を行う定番のライブラリ。詳しくは [[Wikipedia:LAPACK]] などを参照して下さい。
$ gcc -framework vecLib ___.c  (もしくは gcc -Wl,-framework -Wl,vecLib ___.c)
+
MacOSXでは、Developer's kit の一部として lapack やその他のライブラリをインストールしてくれます。
  
そして下記のヘッダファイルを、前もって /usr/local/include ディレクトリ内へコピーしておくと、ソース内の include 宣言文は、#include <clapack.h> で良いはず。
+
コンパイルオプションの指定方法は、
  /System/Library/Frameworks/vecLib.framework/Versions/Current/Headers/clapack.h
+
$ gcc -framework vecLib ___.c
 +
もしくは
 +
gcc -Wl,-framework -Wl,vecLib ___.c
 +
のようにします。
  
**従って、Linux 等におけると等しい #include 文の書き方となるはずです。
+
ヘッダファイルは
***さもない場合の本来の書き方は、#include <vecLib/vecLib.h>  
+
#include <vecLib/vecLib.h>  
**#include <clapack.h> と書きたいだけでしたら、gcc に -I/System/Library/Frameworks/vecLib.framework/Versions/Current/Headers を渡せば良いのではないでしょうか?
+
とするか、何らかの方法で /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.
  
*(Cではなく)Fortran 流儀の仕様を引きずっているので、多少、面倒な部分もあります。
+
LAPACK のサブルーチンは(Cではなく)Fortran 流儀の仕様を引きずっているので、多少、面倒な部分もあります。
  
 
関連情報:
 
関連情報:
行99: 行105:
 
*Lapack++の使い方 - http://homepage3.nifty.com/~yonishi/Program/Lapack++/index.html
 
*Lapack++の使い方 - http://homepage3.nifty.com/~yonishi/Program/Lapack++/index.html
 
*LapackをC++で使う - http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/LAPACK/
 
*LapackをC++で使う - http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/LAPACK/
*[[Google:lapack+row+column+major]]
 
*[[Google:framework+vecLib+macosx]]
 
  
 
=== liboctave ===
 
=== liboctave ===

2008年3月29日 (土) 12:17時点における版

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

数値計算ライブラリ

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 などの一般的解説もしくは関連情報は、

FFTW

離散フーリエ変換用のCライブラリ。任意の次元・サイズ、複素数に対応しているそうです。


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 のサブルーチンは(Cではなく)Fortran 流儀の仕様を引きずっているので、多少、面倒な部分もあります。

関連情報:

liboctave

NAG

英国Oxford 商用 数値計算ライブラリ

NAG数値計算ライブラリには約1500個のサブルーチンが含まれている。最適化、予測、モデリング、フィッティングなど さまざまな分野の数値計算ルーチンが提供されている。

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)
  • FLMIN21D9L - Apple Intel Mac OS X, NAGWare f95, Double Precision
  • FLMIN21DCL - Apple Intel Mac OS X, Intel Fortran 32-bit

※オプションにMATLABから使うためのconnecterあり。http://www.nag-j.co.jp/ToolBox.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)

※オプションにMaple connecterあり。

NAG parallel library(クラスタ(MPI)並列ライブラリ)

  • FDAMP03DG - Apple Power Mac (Mac OS X)

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

  • DRAMP20DA - Apple Power Mac, Mac OS X


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

NTL

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

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

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 を利用する数値計算

参考リンク

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

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

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


Wiki内の関連ページ