トップページ

最新記事

LAPACKEのlatmsを使う

何の話か

LAPACKにはlatmsと呼ばれる特異値や条件数を指定して乱数行列を生成するための関数が用意されています。
しかし、これをLAPACKEから使うにはliblapacke.aのビルド時にやることがあるよという話。

latmsが使えるliblapacke.aのビルド

latmsの実体はそもそもtmglib(LAPACKのテスト用行列を生成したりするためのライブラリ)に含まれるもので、lapacklibのものではありません。
デフォルトではlapackelibはlapacklibのCインターフェイスとなっているため、tmglibの関数を当然含みません。
そこで、make.incを編集してlapackelibにtmglibのCインターフェイスを含ませるよう設定してからビルドします。

  1. LAPACK — Linear Algebra PACKageから欲しいバージョンのLAPACKをダウンロードして展開
  2. 展開したディレクトリ内で以下のコマンドを実行
    cp make.inc.example make.inc
    
  3. make.inc内の
    #LAPACKE_WITH_TMG = Yes
    
    のコメントアウトを外す。
  4. lapackelibをビルド。必要に応じてその他のライブラリもビルド。
    make lapackelib
    

このmain.incの書き換えを行わないと、当然ですが

undefined reference to `LAPACKE_slatms'
というエラーが出ます。

おわりに

LAPACKは数値計算の根幹となるライブラリな気がするのですが、ドキュメントの整備状況やネットに転がっている質問・回答が少なくて使うのに苦労する気がします。
気のせいですかね。

記事作成日:2021-05-26