dynamicsoar's log

主に研究関係のメモ

fortran でよく使うコンパイラオプションのメモ

自分用。あとで書き足す

gfortran

牛島先生本で紹介されていたのがキッカケで使い始めた g95 がわりと好きだったんだけど、だいぶ前から開発が止まってる(というか終わってる?)ので、最近は gfortran を使うことが多い(本気の計算だけ ifort)。

$ gfortran foo.f90 -Wall -O1 -fbounds-check -fbacktrace -fcheck=all -ffpe-trap=invalid,zero,overflow,underflow

あたりから適当に選んで。

  • -Wall に含まれる -Wuninitialized はデフォルトの -O0*1では作動しないので、-O1 が無難か。
  • -finit-local-zero が便利だけど多用は危険か。というか基本的には使わないでちゃんと自分で初期化したほうが良さげ。

ifort (version 2021.5.0)

$ ifort foo.f90 -xHost -ipo -mcmodel=medium -shared-intel -qopenmp
  • no-prec-div や -fp-model=fast=2 は本番計算で自ら付けるべきものではないような気が今はする。

*1:たぶん。ifortでは-O2がデフォルトだが。

FieldView(可視化ソフト)のライセンスマネージャ (flexlm) が落ちた時の対応 (Linux)

前のブログにも書いたんだけど、さっきまた遭遇したので、再掲しとく。

環境

x86_64 (64 bit) の CentOS. 他の場合は変わるかも。FV のバージョンはライセンスサーバごとに複数ある。

やること

コマンドを2つ叩くだけ。セキュリティの設定次第かもしれないが、自分の場合は root になる必要はなかった。

  1. LM_LICENSE_FILE という環境変数にライセンスファイルの位置を教える(どこかにある license.dat を探す)
  2. どこかにある lmgrd というやつを実行する

例 (FV14)

具体的には、自分の version 14 のサーバの場合は以下のとおりだった:

$ export LM_LICENSE_FILE=/usr/fieldview/V14/fv/data/license.dat
$ /usr/fieldview/V14/fv/flexlm/linux_amd64/lmgrd

他のバージョン

他の計算機を見たところ、バージョンが違う場合は /fieldview/V14 の部分*1が変わる模様。具体的には、FV12 だと /usr/FV/FV12.2.1 となっていた。

*1:と、もちろん 32 bit システムなら linux_amd64 のところもだろうが。

TeXstudio メモ

随時追加予定

internal PDF viewer を分離した時 (Windowed Viewer にしたとき)、cmd+tab でエディタかビューアのどっちかにしかいけない

原因

cmd+tab は「アプリごと」の移動しかできないため。

解決策

Witch を使う。WindowFlow だと認識されない (Mavericksでは。ほかは知らない)。



internal PDF viewer を分離した時 (Windowed Viewer にしたとき)、タッチパッドでのスクロールがおかしい

原因

何かの拍子に Continuous が OFF になったようだ。

解決策

Windowed Viewer が active な状態で、メニューバーの View > Continuous にチェックをいれる。

pandas, matplotlib, seaborn でハマったところメモ

随時追加予定

ix するとき x 軸用のデータを忘れるな

df から ix してそのまま .plot して ax に代入、としたいわけだが、このとき ix で選ぶ columns には x 軸となるものを含めないといけない!自分の場合は主に時間。

具体的には、

ax = df.ix[:,["data_column1","data_column2"]].plot( x="t" )

としていて何回も何回も「KeyError: 't'」って怒られてた。KeyError ってなんだろう…?ってずーっと思ってたけどこれ単に「ないよ」ってことだよね…

つまり、

ax = df.ix[:,["t","data_column1","data_column2"]].plot( x="t" )

が正しい。そりゃそうだ。ないものを軸にはできねーよ。

いやまぁ、上の例だと自明なんだけど、本当は最初はこうやって数字で columns 指定してたんですよ…

ax = df.ix[:,2:].plot( x="t" )

で、正しくは 1: にしないと t が含まれなかったというオチ(t の場所が2列目だった)。

Jupyter notebook (IPython notebook 4.x) で Notebook Extensions を使う(Anaconda利用)

まえがき

Jupyter notebook で、各セル内のコードがだらーっと縦長になってしまった。 include のやりかたがよくわからんので(できるのかも含め)、とりあえず folding でごまかせないかな?と思ってググったところ、 Notebook Extensions というのを導入すればできそうだった。本当はセルごと hide (fold) して欲しいんだけど、これはそうではなく code 内の一部ということのようだ。まぁとりあえず試そうかなと。

前提(環境)

  • Jupyter notebook
  • Anaconda 3

を利用。Mac OS X Mavericks だけど別に Win でも関係ないかも。わからん。

手順

github のページの wiki にあるとおりやるだけ*1

リポジトリのクローン

まず適当なディレクトリ(でいいと思うが…)にて、github のリポジトリをクローン。具体的には、HTTPSの右の方にあるボタンを押してURLをクリップボードにコピーして、SourceTree を立ち上げて、+New Repository > Clone from URL で Source URL のとこに貼り付ける。そしたらなんかガーッとDLされるので、BRANCHES で master 選んだ状態で、メイン画面のツールバー右上にある Show in Finder を押すと実際にどこに保存されたかわかる。

インストール

次にターミナルを立ち上げてそこのひとつ上のディレクトリに移動し($ ls したときに IPython-notebook-extensions ていうディレクトリが見える状態で)、さっきのページにあるとおり

$ conda build IPython-notebook-extensions

する。終わったら、これも書いてあるとおりに下から四行目の .tar.bz2 を使う。(ここ訂正。Mac OS なのでこんな感じのはず)

$ conda install ~/anaconda/conda-bld/osx-64/nbextensions-master-py34_0.tar.bz2

設定

まずいつものように $ jupyter notebook で起動する。それから別のタブを開いて
http://localhost:8888/nbextensions へ行くと設定画面が起動するはず。あとはうまいことやってください。

その他

ショートカットで fold/unfold が作動しない…

…で、僕の場合 Codefolding というやつを Activate したら確かに folding 自体はでてきて、クリックでの開閉はできるようになった。だけど、デフォルトで設定されてるショートカットの option+F で fold/unfold されない。適当なものに変えてみてもダメ。ちょっとこれは困るな…。ブラウザのキャッシュをクリアしろとかあるしやってみるか。

マニュアルインストール?

config extension · ipython-contrib/IPython-notebook-extensions Wiki · GitHub ←このページも結局 githubwiki の一部なんだけど、下の方にゴチャゴチャと「設定ファイルがあるディレクトリを確認して…」とか書いてあるが、その前に

You only need the instructions below to perform a manual installation.

とあるとおりで、自分の場合は一切やる必要なかった。場合によっては必要なのだろうけれど。

他の extension

Keyboard shortcut editor がある!どうやらこれを activate するとヘルプのショートカット一覧 (h で起動) から編集できるようになるようだ。が…実際に active するとなぜかショートカット一覧が開かなくなった…なんでだ…。キャッシュなどクリアしても駄目。普段使いの chrome だけでなく、デフォルトから設定を全くいじってない safari でもだめだった。

UPDATE 2016-06-12

久々に extension 使ってみたのでメモ。

まず何はともあれ NbExtensions menu item を enable するのをオススメ。これで今度からはアドレスバーにコマンド打ち込まなくても、notebook 画面で Edit メニューの一番下にコンフィグ画面を開くためのリンクが追加される。

それから上でうまく作動しないと書いていた keyboard shortcut editor が問題なく作動していた。今回はショートカットで「セルを上に移動」「セルを下に移動」がしたかった。実は extension のエントリに Move selected cells というのがあるのだが、自分の環境 (Chrome on Mac OS X Mavericks) ではこれを enable してもうまく動かなかった。そもそも複数セルを一度選択してから移動、というのが意図された動作のようだが、もっと単純に単にセルを移動したかった。で、これは結局新しくショートカットを追加してアッサリできた。手順は以下:

  1. extension で keyboard shortcut editor を enable する
  2. 適当な notebook を開く。おそらくこの時に自動的にショートカットの一覧が開くはず(開かなかった場合は、メニューバーの Help > Keyboard Shortcuts から開く)
  3. セル移動は Command Mode での作業なので、Command Mode の一番下あたりにある「+ : Add a new command-mode shortcut」をクリック
  4. 上の行に Bind [select action] to: とあるので、[select action] の部分のドロップダウンリストをクリックして、下に行ったところにある jupyter-notebook:move-cell-down を選択する。
  5. 下の行にある というところの右をカーソルでクリックし、好みのショートカットを入力する。自分は Ctrl + J にしてみた。OK で確定。
  6. 同じことを jupyter-notebook:move-cell-up についても行う(Ctrl + K にしてみた)。

以上。

なお、ググってるときに知ったけど、どうやら昔はこの Ctrl + K, Ctrl + J がセル移動に割り当てられていたらしいが、特定のブラウザ自体のショートカットとコンフリクトするというのであるときに無効化されたらしい。そこでの議論では「は?使いたかったら custom.js をいじれや」みたいになってたけど、こうして extension を使って javascript わからない素人でも設定できるのはありがたいことです…

*1:Anaconda 使わない場合も、このページの周辺や同じ wiki 内にある情報でなんとかなるはず($python setup.py install とかするっぽい?)。

TeXstudioで toggle comment/uncomment したい→マクロを使う

イントロ

TeXstudio は、デフォルトではコメントアウトは cmd+T, アンコメントは cmd+U になっている*1。しかし多くのプログラミング用エディタでは1つのショートカット*2コメントアウト・アンコメントを実現する。このようなものは toggle(トグル)と呼ばれ*3、たとえば Notepad++ では ctrl+Q*4 だし、mac のアプリでは一般的に cmd+/ がそれのようだ。というわけで TeXstudio でもこのような toggle comment/uncoment をしたい。

具体的な手順

Macro の登録

Macro を使う。User Manual の section 4.5 に詳しく書いてあるが、いまはどうせコピペするだけなので読まなくても良い。

メニューバーの右の方にある Macros > Edit Macros... を選択。ダイアログが開いたら左下の Add でエントリを追加し、Down を押して一番下に持っていく(後でショートカットを自分で設定するため)。右上の Name に適当な名前(toggle comment とか)を入れる。右下の空欄にスクリプトを書くのだが、偉大なる先人が既に書いてくれている ↓

http://sourceforge.net/p/texstudio/wiki/Scripts/#advanced-comment-toggle

User Manual によると Javascript らしい。これをコピペする。すると自動的に Type は Script になるはず(おそらく %SCRIPT で判別してる?)。Abbreviation と Trigger のところは空欄のままで良い(ショートカットはここではなく別に設定する。後述する)。OKを押して閉じる。

Shortcut の設定

cmd+, で*5 Preferences を開き、Shortcuts > Menus > Macros を見ると、いま登録したマクロが表示されている。そのエントリの Current Shortcut のところをダブルクリックして、自分の好きなキーコンビネーションを登録する。自分は cmd+Q にした。もし既存のショートカットとかぶっていると、ちゃんと警告してくれる。cmd+Q の場合、もちろん quit(このアプリでは Exit と言ってるが)なので、警告が出る。それから、その右の列に Additional Shortcut というところがあり、たとえばここに cmd+/ を追加で登録することもできる。残念ながら追加できるのは1パタンだけのようだ。

UPDATE 2016-01-01: 問題点

いま使ってて気づいたけど、これ

  1. カーソルが置いてあるブロックに対して実行
  2. 複数の文(ブロック)を選択して実行

の両方できるんだけど、1. の方は文中に \% あったら uncomment はできるが comment out ができない。ダメじゃん… Javascript 解読するしかないか。2. の方は問題ない。

さらに UPDATE

正規表現よくわからんので、自分専用の応急処置だが、

hasComment = line.match(/\s*%/)

の部分を

hasComment = line.match(/^%/)

に変えたところ、「カーソルが置いてあるブロックに対して実行」については望みの挙動になった。しかし「複数の文(ブロック)を選択して実行」については変な挙動に…まぁ自分はこっち使わないからいいか…。あとで正規表現勉強したらちゃんと直そう。あるいは分かる人がいれば教えて下さい(or 直接 wiki 編集しちゃって下さい)。

*1:Preferences > Shortcuts > Menus > Idefix から確認可能。ただ、今見たら Default は ctrl+T, ctrl+U になっていて、Current に cmd+T, cmd+U が書かれている。もしかしたら自分で変えたのかもしれない。いずれにせよ今の主題は toggle したいということなので、まぁどっちでもいい。

*2:ホットキー、キーバインド、キーコンビネーション…厳密には何かが違うのだろうがよくわからないので検索用に全部書いとく。

*3:ピンとこなければ toggle switch で google image 検索せよ。toggle という英単語はこのイメージ。ただアプリ的には「おなじコマンドで」コメントアウト・アンコメントをするので、メカニカルレバーの切替よりは押しボタンの方がより近い気はする(でももう toggle って言葉があまりにもよく使われてるし英語の意味的にもそういうのを包含してるんだろう、たぶん)。

*4:Notepad++ ではさらに ctrl+K で「コメントアウトあろうがなかろうがさらにコメント記号を左からかぶせる」ができて超便利。…というか TeXstudio の comment out はまさにこの動作だな。

*5:あるいはメニューのTeXstudio>Preferences...でもいいが。