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 インストールディレクトリを示します。

※<Arch> は、OSを示します。(例:Windows 32bit OS の場合-> win32)

  • Windows の場合(MCRInstaller.exe)

$MATLABROOT\toolbox\compiler\deploy\<Arch>

とのことなので,このMCRInstaller.exeをEC2のインスタンスになんかの方法で送り込んでインストールしましょう.

これで,今後同じ環境でMATLAB Compilerでコンパイルした実行ファイルが動かせるようになります.

3.適当なサンプルプログラムを作成して実行してみる

とりあえず,動作検証にこんなのを作りました.

(note120216_magic.m)

magic(5)

pause(3)

コンパイルするには,

mcc -mv note120216_magic.m

これを同様にEC2のインスタンスに送り込んで実行します.

今回は無料枠で使える,メモリもCPUも一番小さいやつで動かしたので動き始めるまで時間がかかりましたが,

しばらく経って5×5の魔方陣が表示されて,数秒後に勝手に終了すると思います.

つまり,これで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 )