MATLABのコードを MATLAB Compiler で実行可能にしてAmazonEC2上で動かす

画像処理は,重い.
しかもメモリを食う.
普段はメモリもCPUも要らんから,必要な時だけスパコン借りて処理したりできないものか.


・・・と,いうわけで,普段使っているMATLABの重い処理をEC2に投げられたら幸せになれる(かもしれない)と思ってやってみました.
コスパはまだよくわからないけど,金とちょっとの手間さえかければ時間単位で大量のメモリ・CPUを借りる選択肢があるってのはいいかもしれませんね.
たとえば論文の提出直前にデータが取れてないときとか.


1.AmazonWebServicesのアカウントを取ってWindowsを立ち上げる

http://www.slideshare.net/kentamagawa/3aws
http://www.slideshare.net/kentamagawa/ec2windows

非常にわかりやすい解説がありました.

2.MATLAB Compiler Runtimeをインストール
EC2のサーバーにはMATLABが入ってない(そりゃそうだ)ので,MATLAB Compilerが必要です.
これを使ってやると,MATLABのコードを実行形式のファイルにできます.

ただ,MATLABそのものはないにしても,MALTAB Compiler Runtime (MCR)ってのをインストールしてあげないとやっぱり動きません.

http://www.mathworks.co.jp/support/solutions/ja/data/1-C233QN/index.html?product=MJ&solution=1-C233QN

ソリューション:

特定のプラットフォームで使用するための MATLAB Compiler Runtime(MCR) を取得するには、その特定のプラットフォーム上にて、MATLAB Compiler をインストールしてください。インストール後、以下の場所より取得可能です。

※$MATLABROOT は、MATLAB インストールディレクトリを示します。
は、OSを示します。(例:Windows 32bit OS の場合-> win32)

  • Windows の場合(MCRInstaller.exe)

$MATLABROOT\toolbox\compiler\deploy\

とのことなので,このMCRInstaller.exeをEC2のインスタンスになんかの方法で送り込んでインストールしましょう.
これで,今後同じ環境でMATLAB Compilerでコンパイルした実行ファイルが動かせるようになります.

3.適当なサンプルプログラムを作成して実行してみる
とりあえず,動作検証にこんなのを作りました.

(note120216_magic.m)

magic(5)
pause(3)

コンパイルするには,

mcc -mv note120216_magic.m

これを同様にEC2のインスタンスに送り込んで実行します.
今回は無料枠で使える,メモリもCPUも一番小さいやつで動かしたので動き始めるまで時間がかかりましたが,
しばらく経って5x5の魔方陣が表示されて,数秒後に勝手に終了すると思います.


つまり,これでMATLAB実行ファイルがAmazonEC2上で動かせたわけですね!


======================

ついでなので,ベンチマークをとってみた.
そのうち,ハイメモリインスタンスのクアドラプル エクストララージと,ハイ CPU オンデマンドインスタンスのエクストララージも試してみたいところですな.

  • =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

CrystalMark 2004R3 [0.9.126.451] (C) 2001-2008 hiyohiyo
Crystal Dew World http://crystalmark.info/

  • =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                                                                                                                                                          • -

CrystalMark Result

                                                                                                                                                          • -

Display Mode : 1920 x 1080 16bit (None)

CrystalMark : 23861

[ ALU ] 5661
Fibonacci : 3779
Napierian : 196
Eratosthenes : 95
QuickSort : 1569
[ FPU ] 2965
MikoFPU : 949
RandMeanSS : 391
FFT : 129
Mandelbrot : 1474
[ MEM ] 3000
Read : 314.45 MB/s ( 314)
Write : 321.99 MB/s ( 321)
Read/Write : 206.77 MB/s ( 206)
Cache : 21379.06 MB/s ( 2137)
[ HDD ] 11328
Read : 89.62 MB/s ( 3584)
Write : 14.52 MB/s ( 580)
RandomRead512K : 96.37 MB/s ( 3854)
RandomWrite512K : 9.18 MB/s ( 367)
RandomRead 64K : 58.68 MB/s ( 2347)
RandomWrite 64K : 14.90 MB/s ( 596)
[ GDI ] 725
Text : 22
Square : 119
Circle : 213
BitBlt : 371
[ D2D ] 0
Sprite 10 : 0.00 FPS ( 0)
Sprite 100 : 0.00 FPS ( 0)
Sprite 500 : 0.00 FPS ( 0)
Sprite 1000 : 0.00 FPS ( 0)
Sprite 5000 : 0.00 FPS ( 0)
Sprite 10000 : 0.00 FPS ( 0)
[ OGL ] 182
Scene 1 Score : 181
Lines (x1000) : ( 12018)
Scene 1 CPUs : ( 4)
Scene 2 Score : 1
Polygons(x1000) : ( 15)
Scene 2 CPUs : ( 1)

                                                                                                                                                          • -

System Information

                                                                                                                                                          • -

OS : Windows NT6.1 Datacenter Edition (Full installation) Service Pack 1 [6.1 Build 7601]
Display Mode : 1920 x 1080 16bit
Memory : 615 MB
DirectX : 10.0

                                                                                                                                                          • -

CPU

                                                                                                                                                          • -

CPU Name : Intel
Vendor String : GenuineIntel
Name String : Intel(R) Xeon(R) CPU E5645 @ 2.40GHz
CPU Type : Original OEM processor
Number(Logical) : 1
Family : 6
Model : C
Stepping : 2
Feature : MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 XD Intel 64
Clock : 2000.09 MHz
Data Rate : QDR

                                                                                                                                                          • -

Device

                                                                                                                                                          • -

ChipSet : Intel 440FX (Natoma)
North : Intel 82441FX
South : Intel 82371SB (PIIX3)
Video : Cirrus Logic GD 5446
IDE Controller :

                                                                                                                                                          • -

HDD

                                                                                                                                                          • -

Type Size Model ( Buffer Mode )