投稿

2月, 2015の投稿を表示しています

KUINS-III環境でselfupdateを可能にするMacPortsの設定

イメージ
皆の役に立つわけではないが,KUNIS-III環境でのMacPortsの設定について書き留めておく。
1 ネットワーク環境設定 念のためシステムの設定を確認。
「システム環境設定」>「ネットワーク」で接続しているインターフェースを左から選択し,「詳細...」ボタンをクリック。「プロキシ」タブ上の「構成するプロトコロルを選択」中「自動プロキシ構成」をチェックし「プロキシ構成ファイル」URLにhttp://wpad.kuins.net/proxy.pac と入力し「OK」ボタンをクリックして設定。
「適用」ボタンをクリックして有効化。 2 rsync rsyncのプロキシを設定する。${prefix}/etc/macports/macports.confを編集。${prefix}の既定値は/opt/local。
proxy_rsync proxy.kuins.net:8080 環境変数RSYNC_PROXYでもよいはずだがうまくいかない。port treeをrsyncで取得している場合は,これでselfupdateができるようになる。rsync接続が禁止されている場合は,ソースはSubversionを使って手動で取得する。
追記 環境変数でうまくいかなかったのは,sudoコマンドが環境変数を引き継がなかったため。
$ export RSYNC_PROXY=proxy.kuins.net:8080 $ sudo -E port selfupdate とするとうまくいった。
3 Subversion ${prefix}/etc/macports/sources.confを次のように設定すると,port treeをSubversionで取得するようになる。lognameはユーザ名。
#rsync://rsync.macports.org/release/tarballs/ports.tar [default] file:///Users/logname/Macports/ports [default] /Users/logname/Macports/portsはport treeを次のsvnコマンドを使って手動で取得した場所。
$ mkdir -p /Users/logname/Macports/ $ cd /Users/logname/Macports/ $ svn co…

科学計算におけるオブジェクト指向プログラミング

オブジェクト指向プログラミング(Object Oriented Programming, OOP)では,共通するクラスを作ってそれを継承し異なる部分だけ変更したり,付け加えたりできる。
Arabas et al. (2013)は,C++, Fortran, Pythonで移流コードMPDATAを実装し,必要なメモリ量,計算性能や使い勝手を比較している。Fortranは,一番速いものの,コードの行数が一番長く,C++のテンプレートに対応する機能多相性がない。Fortran 2003は継承が可能でgfortranにも実装されている。しかし,OOPは使う人が少なく,ライブラリの設計に生かされていない。C++は,Fortranに次いで速いが多次元配列のライブラリが様々あることが問題。Pythonは(欧米の)科学技術の世界で普及しているが,遅い。CPythonをPypyに置き換えると,かなり速くなるそうであるが,共有メモリ並列は考慮されていない。気候モデルに関しコードが資産でなく負債となるかもしれないという懸念はもっともだ。
論文ではBlitz++が用いられているが,Armadilloが速くて分かりやすいようである。科学計算用の並列ライブラリPETscにも,C++用の多次元配列が含まれているようである。