Matlab の高速化
Matlab と Fortran では提供していない高パフォーマンスな可視化機能が必要な場合、 どんな解決策はあるでしょうか?
Matlab と Fortran では提供していない高パフォーマンスな可視化機能が必要な場合、 どんな解決策はあるでしょうか?
最近の傾向として、シュミレーションのパフォーマンスは、
もはや優れた機能というだけでなく、差別化を図る手段となっています。
科学計算が驚くべき勢いで発展しており、科学データは、劇的に質および多様性に関しても増加しており、
並列プログラミングが必要不可欠な傾向となっています。
時流に対応するために、科学者とエンジニアは、高パフォーマンスなデータ解析とシュミレーション
ツールが必要となります。このような来るべき時代を予期して、AnCAD 社は、問題の簡素化、
プログラムの統合、シュミレーションの可視化を一度に包括的に解決するソリューションを
提供します。
Matlab と Fortran の欠点
科学計算の市場では、
Fortran 90/95 と Matlab は、常に市場を支配するようなツールでした。
配列ベースの言語として、Fortran は市場の開拓者として、ベクトル化を使用して、
スカラの操作とベクトルの操作を変更することによって、コードを効果的に拡張してきました。
その高い性能にもかかわらず、可視化ライブラリをあまり多く提供しておらず、
グラフィカルなシュミレーションをコード化および生成するのは困難でした。
一方、Matlab は、反復的なコードのベクトル プログラミングを拡張することによって、
実行時間をできる限り削減してきました。ただし、より多くのグラフィックのサポートを
提供してきましたが、Matlab は、組み込まれたデータ構造が、大幅な速度の改良を妨げる場合には、
プロトタイプ用としてのみ Matlab を実行し、動的なシュミレーションとしては Matlab を実行しません。
これは、Fortran と Matlab 間での互換性の不足によるもので、科学計算の分野では、
高パフォーマンスと強力な可視化機能との間で苦渋の選択を強いられ、そのギャップを埋める
橋渡しが必要となります。
MATFOR、ギャップの橋渡し
今日まで、Matlab のパフォーマンスを改良する方法は一つ
のみではありませんが、Matlab から Fortran への手動による変換が好まれてきました。
Matlab と Fortran 間の手動による変換は、その複雑さによって、多くの時間を浪費します。
明確なことは、Matlab と Fortran は、この問題を解決するようなコミュニケーションが必要ですが、
この問題を解決するために MATFOR (両方の利点を統合する革新的な橋渡し的なツールです) が登場しました。
MATFOR は、数値計算と可視化ライブラリのセットで、科学者とエンジニアは独自の Matlab ライクな
言語を使用して Matlab ライクなコードを記述し、MATFOR in Fortran では、高速 Fortran 環境で、
実際に演算を実行します。更に、MATFOR は Matlab および Fortran プログラマーに高度な可視化機能を
提供します。MATFOR の機能は、固体力学、流体力学、分子シュミレーションおよび電磁気解析などの
さまざまな分野で利用可能です。高精度、高性能、可視化機能など注目すべき点を考慮し、
高パフォーマンスな可視化機能を必要とする Matlab と Fortran ユーザーにとって MATFOR
は必要不可欠なツールと成りえます。
無料体験版ダウンロード提供中 !!
無料体験版ダウンロード提供中 !!
高パフォーマンスなツールキット
Fortran 90/95 および C/C++ ライブラリをベースとして、
MATFOR を開発しました。ベクトル化と並列化技術を使用して、実行時間を最小化します。
強力なコードの統合とデータの可視化に加え、MATFOR はその他にも、ランタイム アニメーション、
ムービー プレゼンテーションおよびスタンド アローンの実行可能ファイルの変換などの高度な機能を提供します。
MATFOR の "Graphic Viewer" は、後処理の必要性を克服し、ランタイム時に瞬時に科学およびエンジニアリング
データを可視化します。"Graphics Export" 機能は、可視化ファイルをスタンド アローンの
実行可能ファイルに変換し、移植性と互換性を増すことによって、シュミレーション結果の
プレゼンテーション機能を強化します。
ケース スタディ
簡単にシュミレーションを最適化するできることは、
すべての科学計算プログラマーの夢です。台湾 中央研究院の Dr. Pei-Kun Wei は、
最も一般的なシュミレーション ツールである Matlab を使用して彼の研究データの解析と
結果を可視化していたプログラマの一人です。Matlab を愛用していたユーザーでしたが、
Matlab のパフォーマンスにしばしば不満を抱いていました。彼は 2002 年に MATFOR と出会い、
新たな科学の探検の旅の始まりとなりました。
Dr. Wei は、数年間、PBG (Phonetic Band Gap - 音声バンド ギャップ) の分野の研究を行っていました。 Matlab が、科学計算を行うための唯一のツールでした。 Matlab の低いパフォーマンスと結果の共有とパブリッシングの難しさを解消するために、 Matlab のプログラムを他の言語に変換していました。さまざまなプログラミング言語に精通する 科学者として、Dr. Wei は、Fortran と Matlab の二つの言語の類似点から、 Matlab を変換する言語して、Fortran を選択するのが良いと分かりました。
数ヶ月の調査の後、彼は遂に MATFOR を見つけました。高パフォーマンスを持つ可視化機能で、 彼が抱えていたすべての問題を MATFOR が瞬時に解決し、彼はこの優れたツールキットに 大いに驚きました。Dr. Wei は、後になって分かったことですが、MATFOR の開発者も 実際に彼と同じ不満を Matlab に抱いており、それがこのツールの誕生の所以となっています。 Dr. Wei の研究は、高性能な可視化パフォーマンスでプログラムを改良するだけではなく、 多くの場合で、彼の研究結果をプレゼンテーションおよび共有するのにも MATFOR を活用してます。 MATFOR は、Dr. Wei の研究人生を変えました。
Dr. Wei は、数年間、PBG (Phonetic Band Gap - 音声バンド ギャップ) の分野の研究を行っていました。 Matlab が、科学計算を行うための唯一のツールでした。 Matlab の低いパフォーマンスと結果の共有とパブリッシングの難しさを解消するために、 Matlab のプログラムを他の言語に変換していました。さまざまなプログラミング言語に精通する 科学者として、Dr. Wei は、Fortran と Matlab の二つの言語の類似点から、 Matlab を変換する言語して、Fortran を選択するのが良いと分かりました。
数ヶ月の調査の後、彼は遂に MATFOR を見つけました。高パフォーマンスを持つ可視化機能で、 彼が抱えていたすべての問題を MATFOR が瞬時に解決し、彼はこの優れたツールキットに 大いに驚きました。Dr. Wei は、後になって分かったことですが、MATFOR の開発者も 実際に彼と同じ不満を Matlab に抱いており、それがこのツールの誕生の所以となっています。 Dr. Wei の研究は、高性能な可視化パフォーマンスでプログラムを改良するだけではなく、 多くの場合で、彼の研究結果をプレゼンテーションおよび共有するのにも MATFOR を活用してます。 MATFOR は、Dr. Wei の研究人生を変えました。
Matlab と Fortran 間の橋渡し
MATFOR の支援では、Matlab を Fortran に変換することは、
決して簡単なことではありません。以下のテーブルのように、Fortran での Matlab と MATFOR (独自の Matlab
ライクな言語) 間での類似したシンタックスを纏めました。熟練したプログラマであれば、Matlab プログラムを
以下に簡単に MATFOR in Fortran に変換できるかを確認できるはずです。
Matlab |
MATFOR in Fortran |
Basic Assignment | |
a=1+2i | a=(1,2) |
a=[1,2,3]' | a=.T. (/ 1, 2, 3 /) |
Operator | |
a=x \ y % solve for x * a = y | a=mfLDiv(y, x) |
a=y / x % solve for a * x = y | a=mfRDiv(y, x) |
a=1:2:99 | a=1:99:2 |
Math Function | |
a=inv(x) | a=mfInv(x) |
e=eig(x) | e=mfEig(x) |
Visual Function | |
surf(x,y,z) | mfSurf(x,y,z) |
h=plot(x,y,':') | h=mfPlot(x,y,':') |
コード例
以下のコードは、Dr. Wei の研究プロジェクトのソース コード
からの抜粋で、ループ プログラムの例です (Waveguide Transmission in a PBG System)。
行単位で、二つの言語間の比較ができます。
|
|
波シュミレーションのランタイム アニメーション
科学計算の分野の多くの主題は、波シュミレーションに関連しています。
以下の Dr. Wei の PBG システムのデモンストレーションを参照してください。図 1 と図 2 では、それぞれ、
Matlab と MATFOR でシュミレートした PBG システムの導波トランスミッションを示しています。
図 3 では、MATFOR を使用して他の方法で同じシュミレーションを表現しています。
MATFOR のコードを数行追加するだけで、Fortran のプログラムを 3 次元モードで可視化でき、
破壊的なインターフェースによって、指数関数的に減少するエネルギーをはっきりと表すことができます。
![]() 図 1。Matlab を使用した、PBG システムの導波トランスミッションのシュミレーション |
![]() 図 2。MATFOR を使用した、PBG システムの導波トランスミッションのシュミレーション |
![]() 図 3。MATFOR を使用した、3 次元モードの PBG システムの導波トランスミッションのシュミレーション |
パフォーマンスの比較
Matlab と MATFOR in Compaq Visual Fortran を使用して生成された PBG シュミレーションの
ベンチマークの比較は、以下のようになります。この結果から、明らかに Matlab よりも MATFOR を
使用した場合の方がパフォーマンスが良いことが分かります。MATFOR のパフォーマンスは、
ほぼ 5 倍近い値を示しています。パフォーマンスの比較に関しては、両方のバージョンのソース コードを
ダウンロード可能ですので、ご検証ください。
OS: Windows XP SP2 CPU: Intel Pentium-M 1.6G RAM: 512MB VGA: NVIDIA GeForce FX Go5200(32 MB RAM) | ||
Benchmark Target | MATLAB 6.0 | Compaq Visual Fortran 6.6B + MATFOR in Fortran 3.2 |
Execution time | 869.36 sec (about 15 minutes) | 181.66 sec (about 3 minutes) |
備考
MATFOR の開発元の AnCAD 社の Web サイトの "Code Converter" を使用して、Matlab のコードと MATFOR のコードの対比を確認することができます。お試しください。