2010年9月13日月曜日

Matlab の mex と GLIBCXX

Fedora 13 で Matlab の mex をコンパイルして実行しようとすると、
GLIBCXX_3.4.11 not found
のようなエラーが出ることがある。
これは、Fedora が持っている libstdc++ のバージョンが Matlab の libstdc++ よりも上であることが原因である。(Matlab はインストール時に libstdc++ をインストールしている。)
これを回避するには、コマンドラインからであれば

$ LD_PRELOAD=/lib64/libgcc_s.so.1:/usr/lib64/libstdc++.so.6:/usr/lib64/libgfortran.so.3:$LD_PRELOAD matlab

のようにして matlab を実行する。ここでは 64bit 版なので、32bit 版のときにはすこしファイル名が異なる可能性がある。
なお、GUI でも実行させたいのであれば、
/usr/local/matlab/MatlabR2010a/bin/.matlab7rc.sh
の最初に
export LD_PRELOAD=/lib64/libgcc_s.so.1:/usr/lib64/libstdc++.so.6:/usr/lib64/libgfortran.so.3:$LD_PRELOAD
と書き込む。


今日は、他に SDPARA 7.3.1 のソースコードを準備した。
おそらく明日のうちに SDPARA 7.3.1 を公開できるのではないかと考えている。

あと、論文として
A structured exploiting preprocessor for semidefinite programs derived from the Kalman-Yakubovich-Popov lemma
をチェック。
KYP-Lemma から生成される特殊な形の SDP を高速に解いてる。
特に Schur complment matrix を計算するところでは、入力行列が low-rank であることを利用して高速化している。ここでは、SDPT3 の SCM 計算のルーチンを入れ換えているようだ。
SDPA の場合には、SCM の高速化をしているため、ここのルーチンを入れ換えるのは、相当に難しいと考えられる。


あと、量子化学で少し気がついたのでメモだが、
ある状態の Hamiltonian は電子密度行列の Legendre 変換で結ばれている。
このことはそれなりに重要そうだ。

今日の作業内容:SDPARA ソース準備 1h + KYP-Lemma 2h
今日のBGM: EVA OST [1-3]
今日のランチ:いろは 豚汁定食
明日の予測作業時間: 5h

2 件のコメント:

  1. > ある状態の Hamiltonian は電子密度行列の Legendre 変換で結ばれている。

    よくわかりませんでした。またメールなりで教えてください。

    返信削除
  2. あんまり良く覚えてないのですが、簡単にいうと、
    「SDP の主問題の変数行列と双対問題の変数行列は Legendre 変換で結ばれている」
    ということが知られているので、

    主問題の変数行列を電子密度行列にすると、双対問題の変数行列がある状態の Hamiltonian のはず、と考えたところ

    だったかと思います。

    返信削除