マトリックスレザレクションズ 感想

マトリックスレザレクションズを観たのでメモ書き。

映像コンテンツを観る際は以下4項目について常に意識してるので、今回もこの4項目を切り口に感想を書いてみる。

  1. 脚本
  2. 登場人物、出演者
  3. カメラワーク、VFX
  4. 色彩設計

脚本

マトリックスレザレクションズは、間違いなくマトリックスの続編だと思わせる脚本だったと感じた。特にキアヌから引き出される台詞やその間なんかは、マトリックスのネオそのものだし、ちょっと恥ずかしい事言うキャラが出てくるあたりもマトリックスそのものだと思った。そもそもマトリックスシリーズのストーリーや出てくる台詞って結構ダサかったり恥ずかしかったりするんだけど、その暴れ馬のような脚本をクールな撮影の暴力で押し付けてた作品なんだと思ってる。

登場人物、出演者

ネオとトリニティを引き続き演じたキアヌ・リーブスとキャリー・アン・モスは、過去のマトリックスシリーズのネオとトリニティのイメージを壊さず演じてくれたと思う。ネオを精神的にいじめ尽くしたらどうなるかのイメージを完璧に演じきったキアヌ・リーブスには拍手したいし、おそらくキアヌ・リーブスもあの精神的に追い詰められて半泣きのネオを演じてるときは、面白がって演じてたんじゃないかなとさえ思った。

ただ、マトリックスの面白さ、「ローレンス・フィッシュバーンが演じる」モーフィアスの存在が不可欠だったんだなと強く考えるようになった。これまでのマトリックスシリーズの登場人物って割とすぐ死ぬし、キャラが薄くても問題ない事が多かったんだけど、マトリックスレザレクションズの登場人物って全然死なないので、キャラの薄さが後半になるにつれて致命的に目につくようになった。マトリックスシリーズで唯一と言ってもいいほど内面やこれまでの人生に意味付けが会えられたキャラって、旧作の「モーフィアス」だけと言っても過言じゃなくて、共感できたキャラも旧作の「モーフィアス」だけだったんじゃないかなと思う。この旧作の「モーフィアス」に共感し、彼を通してマトリックスを観ることで、我々はマトリックスと精神的に繋がれてたんだと思う。今作のサブキャラ薄い薄い薄すぎる。。。。旧作のモーフィアス出さないなら、もっと強強エージェントたくさん出せ!!

カメラワーク、VFX

マトリックスって「子供が真似したくなるシーン」を随所に交えることで、ダサい脚本でも超クールな作品に仕上げてた作品シリーズだと思ってる。 このマトリックスレザレクションズで「子供が真似したくなるシーン」があったか????いやない。これが最大の失望だった。トム・ハンクス出演の「天使と悪魔」がクソカメラワークの代表だけど、別のベクトルでアレだった。ごちゃごちゃした感じだったし、そんな狭い画角でごちゃごちゃ戦闘させてもクールじゃねぇ!!と観てる間ずっと思わされてしまった。エフェクトも致命的にクソダサだった。なんかNetflix的というか、テレビやPCのモニタで観る前提のような作りをしてて、映画館で観ることを意識して取られてないように感じた。Netflixが喜ぶような映画撮るなら、映画館じゃなくてはじめからNetflix作品にして出してくれ。「撮影、VFX is 戦犯」。同じ脚本で旧作スタッフで撮り直してくれ…

色彩設計

脚本は間違いなくマトリックスの続編なのに、脳がマトリックスの続編だと認めたくない原因の30%が色彩設計だと感じてる。マトリックスって現実と非現実を「グリーン」の色使いで切り分けてたんだけど、それが一切なく、これって機械側と人間側の垣根がなくなった揶揄なんだとは思うけどね。。。それでも望んだマトリックスの色彩は旧作のそれだったんだ!!!!

まとめ

Netflix is evil. Netflixは映画を糞にした。(風評被害)

Reference BLAS → OpenBLAS

 

Screenshot from 2016-04-09 17-24-55

Lapackをインストールする際に勝手に入るBLASは,Netlibのリファレンス実装で,こいつは速度が遅い.そのためLapack が依存している BLASを,Reference BLAS から OpenBLASに切り替えたときのメモ.(OSは,fedora 23)

そこでまず,LapackがどこからBLASをひっぱてきているのか調べる.

最初に適当にLapackを使ってコンパイルし,実行ファイルが何に依存しているか以下の通り調べる.

$ gfortran -llapack test.f
$ ldd a.out
linux-vdso.so.1 (0x00007ffdc4659000)
liblapack.so.3 => /lib64/liblapack.so.3 (0x00007f6e0ea6d000)
libgfortran.so.3 => /lib64/libgfortran.so.3 (0x00007f6e0e741000)
libm.so.6 => /lib64/libm.so.6 (0x00007f6e0e43e000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f6e0e227000)
libquadmath.so.0 => /lib64/libquadmath.so.0 (0x00007f6e0dfe8000)
libc.so.6 => /lib64/libc.so.6 (0x00007f6e0dc26000)
libblas.so.3 => /lib64/libblas.so.3 (0x00007f6e0b905000)
/lib64/ld-linux-x86-64.so.2 (0x000055bfaf841000)

以上にて,/lib64/libblas.so.3 からBLASをひっぱてきてることがわかった.
次に/lib64/libblas.so.3はシンボリックリンクなので,どこを参照しているか調べる.

$file /lib64/libblas.so.3
/lib64/libblas.so.3: symbolic link to libblas.so.3.5.0

以上より, Lapack → libblas.so.3 → libblas.so.3.5.0 のようにReference BLASを参照していることがわかった.

そこで,Lapack → libblas.so.3 → OpenBLAS のように参照するようにしてあげれば,OpenBLASに切り替えることができる.

まずOpenBLASをインストールする.

#dnf install openblas

次にalternativesコマンドで,OpenBLASに切り替える.使用するOSによっては,すでに登録されている場合があるが(#update-alternatives –list で確認できる),fedoraは登録されていないので,登録作業から始める必要がある.登録の際は,以下のコマンドにて行う.

#alternatives –install リンク名 総称名 選択候補 優先度

alternativesコマンドの詳細は,ココ(https://vinelinux.org/)で確認のこと.

以下コマンドにて,登録を行った.

#alternatives –install /lib64/libblas.so.3 libblas.so.3 /lib64/libblas.so.3.5.0 10

#alternatives –install /lib64/libblas.so.3 libblas.so.3 /lib64/libopenblas.so 20

次に,以下コマンドで設定の状態を確認する.

#update-alternatives –config libblas.so.3

There are 2 programs which provide ‘libblas.so.3’.
Selection Command
———————————————–
1 /lib64/libblas.so.3.5.0
*+ 2 /lib64/libopenblas.so
Enter to keep the current selection[+], or type selection number:

/lib64/libopenblas.so のところに[+]がついていれば,libblas.so.3 は,libblas.so.3.5.0 から libopenblas.soを参照するようになる.( /lib64/libblas.so.3.5.0 のところに[+]がつくように設定を変更すれば,以前と同じReference BLAS を使用することになる.)

最後にOpenBLASに切り替えた効果を確認する.確認用のプログラム(lapack_test.f)を書いてみた.中身は連立一次方程式 Ax=B(A:1000×1000の密行列)をdgesvを使って解くプログラム.

$gfortran -llapack lapack_test.f

Reference BLASの場合

$ ./a.out
DGESV works fine
0.55200000000000005 ←実行時間

OpenBLASの場合

$ ./a.out
DGESV works fine
0.14699999999999999 ←実行時間

確認の結果,上記の例では4倍ほど高速化できていることがわかる.

なお,SuperLUは標準でATLASを使用しており,ATLASとOpenBLASを切り替えて比較してみたが,計算時間はほとんど同じだった.

参考

https://vinelinux.org/docs/vine6/cui-guide/update-alternatives.html
http://www.nag-j.co.jp/fortran/tips/tips_PortableWayToTime.html

intel fortran + PARDISO → gfortran + SuperLU

Screenshot from 2015-11-30 00-49-08

疎行列連立一次方程式(Ax=B)の計算には,MKLに収録されている”PARDISO”を使っていたが,環境をintel fortran + MKL からgfortran + Lapack95 に移行したのに合わせて,”SuperLU”に移行したのでメモ.(OSは,fedora 22)

まず,SuperLUをインストール.

#dnf install SuperLU

次に,正常にインストールできていることを確認する.

サンプルコードを入手するため,まずSuperLU本体をココ(http://crd-legacy.lbl.gov/~xiaoye/SuperLU/)からダウンロードする.

次に/SuperLU_*/EXAMPLE (*はSuperLUのver.)の中に入っている,”superlu.c”を以下コマンドでコンパイル/実行する.(ここで,superlu.cの冒頭を”int main(int argc, char *argv[]”と書き換えないとコンパイルは通らないので注意.)

$gcc -lsuperlu -I/usr/include/SuperLU superlu.c

$./a.out

正常なら上記コンパイル及び実行ができるはず.

 

C言語からはSuperLUを直接利用できる.しかし,FortranからSuperLUを使用する場合,ラッパーを書いてあげる必要がある.(/SuperLU_*/FORTRAN 内のファイルを参考にすると良い)

そこで,ラッパーとなるCプログラム(dgssv.c)と,SuperLUを呼び出すFortranプログラム(test.f90)を書いてみた.

なお,test.f90では例として,

A =
1 2 3 0
0 0 0 1
2 0 0 2
0 1 0 1

B =
2
3
1
2

の疎行列連立方程式を解くこととしている.

SuperLUでは,CRS形式またはCCS形式(疎行列の格納方法はココを参照)等の疎行列格納方法を使用できる.今回はCRS形式を使用することとしている.

もし,CCSなど別の形式を使用したい場合は,dgssv.cの中身を書き換える必要がある.(superlu.cはCCS形式で計算しているので,比較すればどのあたりを変えればいいかわかるはず.)

また,FortranからC言語で書いたプログラムを呼ぶ場合は,配列の処理等々注意する必要がある.(ココを参考)

dgssv.c と test.f90をコンパイルするには,以下コマンドを叩く.

$gcc -c -I/usr/include/SuperLU dgssv.c

$gfortran -lsuperlu -lblas dgssv.o test.f90

うまくコンパイルできていれば,”a.out”ができているので,実行すれば以下が表示されるはず.

$./a.out

Success dgssv
-2.5000000000000000
-1.0000000000000000
2.1666666666666665
3.0000000000000000

 

参考だがSuperLUでは,様々な設定ができる.具体的にはdgssv.cの中の以下で設定している.

set_default_options(&options);
options.ColPerm = NATURAL;

上記では,まずすべての設定をデフォルトとし,そのうち”ColPerm”の内容だけ,”NATURAL”に変更している.

なお設定項目の詳細は,/SuperLU_*/DOC 内のSuperLUのマニュアルに記載してあるので参照のこと.

 

参考

http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html

http://netlib.org/linalg/html_templates/node91.html

intel fortran + MKL → gfortran + Lapack95

Screenshot from 2015-09-07 01-50-18

intel fortran + MKL から,gfortran + Lapack95 に移行したのでメモ.(OSは,fedora 22)

まず,gfortran と LAPACK をインストール.(BLASも依存関係にあるので,同時に入るはず)

#dnf install gcc-gfortran lapack lapack-devel

問題なくインストールできていれば,DGESVのサンプルコード(software.intel.com)を “test.f” に保存して

$gfortran test.f -lblas -llapack

でコンパイルできるはず.

 

次に,LAPACK95のソースをNetlib(http://www.netlib.org/lapack95/)からダウンロードし,”lapack95.tgz”を適当なところに解凍する.

“LAPACK95″というディレクトリができているはずなので,その中で以下を実行.

$ mv SRC/makefile SRC/Makefile
$ mkdir lapack95_modules

“make.inc” を以下の通り編集.

FC = gfortran
FC1 = gfortran

OPTS0 = -O3
MODLIB = -I./../lapack95_modules
OPTS1 = -c $(OPTS0)
OPTS3 = $(OPTS1) $(MODLIB)
OPTL = -o
OPTLIB =

LAPACK_PATH = -L/usr/lib64

LAPACK95 = -llpack95
LAPACK77 = -llapack
TMG77 = -ltmglib
BLAS = -lblas

最後に,以下を実行してLAPCK95をコンパイル.

$ cd SRC
$ make single_double_complex_dcomplex

これで”lapack95.a” と “lapack95_modules” 内に,モジュール中間ファイルが作成されているはず.

後は,適当なディレクトリ(例えば”/usr/lib64/lapack95″, “/usr/include/lapack95″)を作ってその中にlapack95.aとlapack95_modulesをコピー.

# mkdir /usr/lib64/lapack95
# mkdir /usr/include/lapack95

# cp lapack95.a /usr/lib64/lapack95/liblapack95.a
# cp lapack95_modules/*.mod /usr/include/lapack95

そんでもって “liblapack95.a”に対し,pathの通っている”/usr/lib64″へシンボリックリンクを貼る.

# ln -s /usr/lib64/lapack95/liblapack95.a /usr/lib64/liblapack95.a

これでLAPACK95を使う準備完了のはず.ココ(http://nagappi.hatenablog.com)のサンプルコードを,”inv.f90″に保存して以下が実行できていればOKな「はず」.

$ gfortran inv.f90 -llapack95 -llapack -lblas -I/usr/include/lapack95/

参考

http://www.rcs.arch.t.u-tokyo.ac.jp/kusuhara/tips/linux/fortran.html

http://nagappi.hatenablog.com/entry/20121227/1356582470

FUJIFILM Darkless

フィルムカメラの購入にあたり,フィルムの現像に挑戦・・・

と言っても,暗室いらずの簡易キット「ダークレス」による現像で

現像液,定着液の2液のみで現像する品物.(来年製造中止の模様・・・・)

現像液がまんべんなく浸透しなかったりすると
シミ状のものが現像後に残ったりと,ややシビア.

加えて今回は,推奨フィルムの「ネオポン SS」ではなく
Kodak T-MAX」を使用.

洗浄時にフィルムを傷つけたようで,白い線のようなものがいくつかついてしまった・・・・

(ネガスキャン時のホコリも・・・)

いずれは,キットに頼らず・・・・ 練習あるのみ・・・・

(以下キットで現像)

Leica購入記念

Leica に手を出してしましました.レンズ沼だけでなく,Leica沼にまで・・・

 

購入したのはLeica M6 TTLどす.

レンジファインダーのカメラに興味を持ってしまったのが運の尽き・・・・

フィルムのISO感度をウラ面のダイヤルにて設定します.

レンズは,低価格帯のSUMMARIT-M 1:2.5 / 35mm

 

 

その前には,コンデジが必要なシーンが増えたので? FUJIFILM X10 を購入.

ズームにファインダが連動する面白い機構を備えてる.

レンジファインダ・カメラを意識したデザインといい,ガジェットとしてもかなり面白い.

ファインダーは被写体まで距離がある場合はいいが,近いと途端に破綻するところを注意すれば

(これはファインダ式カメラなら共通だけど)さっとカメラを出し,ファインダー越しに切り取るという

普通のコンデジにはない喜びのようなものを感じられるのである.

X201s購入

コペン納車から4ヶ月ちょいで,1万3000キロ走る暴挙に出てしまいながらも,修士論文書き上げた・・・


自分へのご褒美として,

ThinkPad X201s を買ってしまいました.価格は,DVDドライブ付きドッグが付いてきて14万円代.

とりあえず,fedora14インストールして,無線から指紋認証まで問題なく使えている.

ただし,Compizまわりがやや難あり.

液晶が1440×900という高解像度液晶なので,ワイド液晶でもそんなに気にならないかな.

初めて,sを末尾に冠するモデルを使ってみたが,4セルということもあり,かなり軽く感じる.電池のもちはそんなに良くないが,20万出して某パナ製ノートPC買うより断然満足考えられるのではないか・・・

英語のUSBキーボードも購入.X201sより打鍵感はいい.

研究室メンバーで上海行ってきた,深セン行きたい気持ちもあったけど,自分以外は興味ないみたいで却下された.

第1回モバイルコンピューティング研究会

本日,@shoinoueさん主催の「勝手にThinkPad祭り in TDU」改め,「第1回モバイルコンピューティング研究会」に参加しました.(Twitterハッシュタグ #mobile_computer_meeting

@e_fuさんによる東京電機大学の紹介の後,初っ端から@kamiken1968さんの,ThinkPadコレクションの1割が陳列.

中には,貴重なThinkPad 700cや,ThinkPad 701c などThinkPadを代表する機種の数々.


参加者全員のボルテージが上がったところで,各々のThinkPadをはじめとするガジェットへの熱い思いのこもったプレゼンへ.

プレゼンの内容は@shoinoueさんのUstreamの録画をご覧頂くのが早道だろう.

自分の発表内容は以下のPDFファイルをご覧頂きたい.主にガジェット遍歴,ThinkPadと親和性の高いソフトウェアについて述べた.

オー マイ ガジェット!! (1MB PDFファイル)

また途中,@noricmagicさんの「多摩ガラスコートセンター」や,@ragemaxさんの「関東ノートセンター」など,趣味が趣味を越える場面もあり,会場は熱気につつまれた.

今回の催しは,ThinkPad を中心としたガジェットを語るという曖昧なテーマだったこともあり,時間がややかかりすぎてしまった感は拭いきれない.
発表テーマを明確にしまた,プログラムを事前に設定するという改善がなされることになった.

最後になりますが,主催の@shoinoueさん,会場設定等行った@e_fuさん,また参加された他の皆様,本日はお疲れ様でした!