![]() |
| サイトマップ | |
|
Igor Pro 7 では、正式に 64bit 版がリリースされました。64 bit の Windows OS では、64bit 版の Igor Pro と32bit 版の Igor Pro をそれぞれ選んで起動することができます。
一方、Macintosh でも、64bit 版と 32bit 版をそれぞれ選んで起動することができます。
64 bit 対応のアプリケーションの最大のメリットは、32 bit 版に比べて大きなメモリを利用できるため、たくさんのデータ (ウェーブ) を扱えるようになることです。32 bit 版の Igor Pro で扱うことができるデータポイント数は、倍精度浮動小数点 (8 byte/ポイント) ウェーブの場合、1ウェーブあたりおおよそ 2500万ポイントでした。
2GB/8byte/ポイント= 2×109byte/8byte/ポイント = 2.5×108ポイント
64 bit 版ではこの上限はぐっと拡張されていますが、一方で Make操作関数を使えば、簡単に搭載メモリを超えるサイズのウェーブの宣言が可能であるため、内部的に、21billion (21×109) ポイントが上限として設定されています。これを倍精度浮動小数点で確保するには、168GB もの物理メモリが必要ですので、十分現実的な上限設定になっていると言えます。
なお、開発元 WaveMetrics社が提供している XOP は 64 bit 対応していますが、サードパーティが提供している XOP をお使いの場合は、XOP が 64 bit 対応していない可能性があります。その場合には、32 bit 版の Igor Pro を利用する必要がありますので、ご注意ください。
大きな実装メモリを利用して、たくさんのデータを扱うことができることは、必ずしも、処理が高速になることを意味するわけではありませんが、Igor Pro 7 では多くの関数/操作関数がマルチスレッド対応になり、実行するだけで、自動的に並列処理される関数も画像処理を中心に増えています。バージョン7.05 では、下記のように 21個の操作関数が自動で並列になっています。
![]() |
以下では、ImageInterpolate 操作関数を例に挙げて、自動マルチスレッド対応の効果を確認してみます。テストした環境は下記の通りです。
テスト環境
項目 | 内容 |
---|---|
OS | Windows 10 Pro |
Igor Pro | 6.36 J および 7.05 J |
CPU | Intel Core i7-4810MQ 2.80GHz |
RAM | 16GB |
ImageInterpolate操作関数は画像データ (2次元ウェーブ) を補間処理する関数で、様々な手法に対応しています。ここではトリプレットデータ (XYZ 3列のマトリクスウェーブ) を Voronoi法を使って補間します。
Igor Pro 6 と Igor Pro 7 とでは、処理に要する時間の短縮が期待されますので、所要時間を計測するために次のような関数を定義します。
Function ImageInterpolateTest() Variable timerRefNum Variable microSeconds Variable n timerRefNum = StartMSTimer if (timerRefNum == -1) Abort "All timers are in use" endif Wave triplet ImageInterpolate/RESL={1000,1000}/I=2 Voronoi, triplet microSeconds = StopMSTimer(timerRefNum) Print microSeconds/1000000, "seconds for interpolation" End
Igor Pro にはミリ秒単位で稼働するタイマー (StarMSTimer関数と StopMSTimer関数) がありますのでこれを使って、ImageInterpolate操作関数の所要時間を履歴エリアに出力するようになっています。ImageInterpolate操作関数では、triplet という入力データを 1000×1000 のマトリクスに補間しますので、あらかじめ、triplet という名称のトリプレットウェーブを用意する必要があります。
上記の関数をプロシージャウィンドウに貼り付けてコンパイルして、triplet という名称のトリプレットウェーブを用意出来たら、コマンドラインで
ImageInterpolateTest()
と入力して実行します。粗い画像が滑らかになっていることが確認できます。
![]() |
![]() |
前述の環境の Igor Pro 7 では、20秒程度で処理されますが、Igor Pro 6 では 77秒程度を要し、このケースでは、3.5倍程度の速度の向上が確認されました。
![]() |
![]() |
CurveFit操作関数も,同様に自動マルチスレッド対応になりましたので、組み込みの関数を使ってフィッティングする場合には、速度の改善が期待できます。1000×1000 の 2次元マトリクスウェーブを、組み込みの Gauss2D関数を使ってフィッティングする例を用意しましたので、ご興味のある方はエクスペリメントファイルをダウンロードして、
CurveFitTest()
をコマンドラインで実行してみてください。ImageInterpolate の例と同じように、タイマーを使って処理時間が履歴エリアに出力されます。上記の環境では 9倍近く、高速化されています。
※ 注:利用した操作関数、関数の詳細は付属のヘルプ、マニュアルをご参照ください。