2009年12月21日月曜日

SDPA-Python Interface on Mac OS X

今日は、Linux で確認してあった SDPA-Python Interface がきちんと Mac OS X 上でも動くかどうかを確認。
Mac OS X の場合、shared library が Linux とは少し違うので、コンパイラオプションなどを変更する必要がある。

まず、コンパイルするときに、gcc に
Linux なら -shared をつけるが、Mac OS X の場合には -dynamic が基本。
ただし、Python が絡むと、これではうまくいかず、-undefined dynamic_lookup -bundle をつけることになる。(参考にしたのは、このページ
面倒なので、Makefile に以下のような記述を追加。

SHARED_OPTION = -shared
ifeq ($(OS),Darwin)
SHARED_OPTION = -undefined dynamic_lookup -bundle
endif
これで、gcc $(SHARED_OPTION) とすれば、大丈夫。

あと、Matlab の mex で気がついたが、mex で CXX=g++-4 を渡すと、libgfortran.a の場所を自動的には発見できない。-L/sw/lib/gcc4.3/lib などで明示的に渡す必要がある。

ほかに、Linux でどの shared library を使っているかは、
$ ldd ???.so
であるが、Mac OS X では、ldd がないので、
$ otool -L ???.so
で対応する。なお、Mac OS X の shared library の拡張子は本来 dylib であるが、python の場合は so でも正常に動作する。(というか、dylib の方を試していない。)


とりあえず、Mac OS X でも Python Interface で問題を解くことに成功。

あと、投稿用の文章は、一通り英語の校正が終了。数値実験は、残りは PCSDP のみ。おそらく、PCSDP の実験は SDPARA の実行時間から予測すると、年をまたぎそうだ。

明日はすこし時間ができそうなので、久しぶりに DONLP2 の方をチェックしよう。

今日の作業内容: 投稿用文章 1h + Python 4h
今日のBGM: FF12 OST [1,2,4]
今日のランチ: らく 焼魚定食
明日の予測作業時間: 5h

0 件のコメント:

コメントを投稿