■mkl(Intel(R) Math Kernel Library)をBCC(BorlandC++Builder6.0)で使用する方法についての備忘録■
MKL
ライブラリが評判らしいです.アカデミックユースだと,30日 free だかなんかで,Lapack,Blas が full で, .net
上で簡単に利用できるとあれば,Fortran 仕様のアドレス渡しの関数だろうがなんだろうが,Intel
系のプロセッサを利用してれば尚の事,一度は試してみたくなる. ところが,MKL のマニュアルを読む限り,BCC のライブラリ形式である
OMF
はサポートしていないとこと! ただし! そもそもOMFはサポート外なのだから,せっかくの精度保証やCPUに対する最適化が出来ているかは確証がないので注意が必要である. さて,経緯はこれくらいとして・・・・・もしやとは思うが,.net が順調に伸びているさなか,消え行く可能性の高いBorlandC++Builder6.0上でmklを使いたいという,極めて稀少な要求でお悩みの同志の方のヒントになればと備忘録として公開することにした. 私のプログラミング技術&知識は充分ではないので,間違った記述,稚拙なサンプルコードは悪しからず....
ご意見,ご感想は,manabu@bme.t.u-tokyo.ac.jp までご連絡ください ■2004/9
追記 |
@ mklのインストール intelの本家から,インストールプログラムをダウンロードする.
ちなみに,正規品を購入すると,パッケージも何もなく,ライセンスキーを印字したシート1枚. インストール先は,特に指定しないと "C:\Program Files\Intel" になる.特に難しい事はないはず. あと,もう一点,後ほどlib.exeというMSVCのプログラムが必要となるので,どこからか手に入れておいてください.
|
A mklの導入概要 mkl の提供する様々な関数を使用するためには,mkl.h をインクルードし,dll
をプログラム直下において,lib
をプロジェクトに追加すれば良い 32bit系 なら lib,dll,h ファイルのうち,とりあえず "C:\Program
Files\Intel\MKL61\ia32" にある以下のライブラリのうち必要なものをインポートしておけば良い. libguide.lib またdll は,"C:\Program
Files\Intel\MKL61\ia32\bin" にある以下のファイルを使用する. libguide40.dll
|
B BCCからmklを利用する場合の問題点 ところが,BCC からこれらのライブラリを利用しようとすると,BCC は lib の形式が OMF
という形式を採用しているので,MKL の提供する COFF 形式( MSVC または MS.net などが採用) とは異なり,BCC
での利用には少し工夫が必要である.( くどいようだが,MKL の manual ではそもそも COFFのサポートはしていないとのこと)
ということで・・・・与えられているDLL 形式のファイルから,ふるいCOFF 形式の lib を作り,これをOMF形式に変換する方針に決定!!
|
C dllからふるいCOFF形式のlibを作成する 先にあげたdll から lib を生成するのは,例えば,MSVC7.0 の提供する lib.exe というプログラムを使用する.これは,"C:\Program Files\Microsoft Visual Studio .NET\Vc7\bin" にあるが,.NET環境がない場合は,netからdownloadする必要がある. ところが,このコードの入力形式は def 形式のファイルであるため,これを作ってやらなければならない. def ファイルは,こんな感じ(拡張子.def)のファイルなので,適当に真似して作ればよい. がしかし! 肝心の dll の中身の関数が何かについてはわからない!! これには dumpbin.exe というプログラムが利用できる. コマンド例は,こんな感じである (ここでは libguide40.dll をターゲット) > dumpbin /exports libguide40.dll >libguide40.temp 出来たファイルはこんな感じなので,このような形に加工し拡張子も
.def にする.頭の部分は,適当につけてある. 次に,lib.exe で古い形式の COFF ファイルを作成する. > lib /DEF:libguide40.def とすると,libguide40.exp というファイルと同時に,def ファイル中で指定した名前の lib
ファイルができる. これが,古い形式の COFF ファイルである.
|
D ふるいCOFFからOMF形式のLIBを作成 "C:\Program Files\Borland\CBuilder6\Bin" 中にある.coff2omf.exe を利用して COFF 形式を書き換える. 例えば以下のようにコマンドする. > coff2omf ___libguide40.lib libguide40.lib で,出来た lib を BCC サイドからプロジェクトに追加してやり,さらにdllを直下においてやれば使用できる. (mkl.h のインクルードは必要) 以上の方法で以下のコードがとおります.
|
|