マルチコア解析ツールキットを使う

その他

スポンサーリンク

今回の記事では、Multicore Analysis and Sparse Matrix Toolkitを紹介していきます。

VIパッケージマネージャから入手できるツールキットで、LabVIEW標準の関数よりも効率的に(早く)計算ができるようになる関数が扱えるようになる(可能性がある)、という触れ込みで紹介されています。

実際にインストールして、効果のほどを確かめてみました。

スポンサーリンク

ツールキットのインストール

今回のMulticore Analysis and Sparse Matrix ToolkitはVIパッケージマネージャから入手できます。

これを入手するために使用するVIパッケージマネージャは、よく似た名前のNIパッケージマネージャが「NI製のソフトウェアを管理するためのツール」であるのに対して、「LabVIEWで使用できるツールキットを管理するためのツール」です。

LabVIEWをインストールしたら知らない間にインストールされていた、という方もいるかと思いますが、なかったとしてもNIパッケージマネージャからインストールすることができます。

この、LabVIEWで使用できるツールというのは無償あるいは有償で使えるものがありますが、今回紹介しているMulticore Analysis and Sparse Matrix Toolkitは無償になっているようです(ライセンスの入力など求められていないことから判断しています)。

インストールの手順は単純で、VIパッケージマネージャを開いて、Multicore Analysis and Sparse Matrix Toolkitを検索して指示通りにインストールするだけ・・・なんですが、このパッケージについては、管理者権限が必要になります。

そこで、VIパッケージマネージャ自体、および、使用したいLabVIEW自体(LabVIEW.exe)も管理者権限で開いた状態で、インストール作業を進めていくことになります。

管理者権限で開いたVIパッケージマネージャ上で項目を選択して、使用したいLabVIEWのバージョンを選択し、Installをクリックします。

インストールが始まったら放置していれば終わる、のではなく途中で操作が必要になる場面があるので注意します。

無事インストールが進むと、最後に項目のインストール許可の画面が出たら完了です。

使用できる関数とサンプル

ツールキットをインストールすると関数パレットにHigh Performance Analysisという項目が増えます。

この中に、様々な処理を行う関数がまとまっています。

このツールキットはリファレンスページもしっかりしていて、英語ではありますが、使える関数の一覧がLabVIEWの標準関数(ツールキットなどインストールせずに最初から使える関数)に対するオンラインヘルプと同じような感じで紹介されています。

リファレンスは以下のページにあります。

https://www.ni.com/docs/ja-JP/bundle/labview-multicore-analysis-and-sparse-matrix-toolkit-api-ref/page/lvmasmt/lvmasmt_default.html

また、サンプルファインダにサンプルがあり、関数の使い方を参照することができます。

試しに、ベンチマークと名のついたサンプルがあったので試してみました。

これは、行列の計算を1、2、4スレッド使ってそれぞれ行った時の計算時間を比較するためのサンプルのようで、関数により「使うスレッド数」を指定することができ、そのうえで計算を行うためのプログラムの書き方の例にもなっています。

LabVIEW標準関数との処理速度比較

では、実際にこのツールキットを使うことで、LabVIEWの標準関数と比べてどの程度計算が早くなるかを見てみることにします。

まずは単純な行列計算について、ツールキットの関数と標準関数での処理の早さを比べてみました。

対象とする行列は1000×1000のサイズとしています。

何度か実行してみましたが、総じてツールキットの関数の方が標準関数を使用する場合の半分程度の時間で処理が終わりました。

もちろんこれは対象とする行列のサイズによってさらに差が出たりあるいは差が無かったり、という違う結果になることもあります。

また、サンプルのうちの一つに、FFT処理のベンチマーク用のサンプルがあったので、これを少し改変して、LabVIEW標準のFFTの関数と一緒にしたときに処理速度がどの程度変わるかを試してみました。

結果は以下の通りで、標準関数を使った場合と比べて、このツールキットの関数を使った方が早く、さらに、ツールキットにある、Multi-channel FFTを使用することで、単純なFFTの関数をForループで回すよりも早い、という結果が得られました。

Viを何度か実行しても、実行のたびに早さの値はばらつくとはいえ、傾向は同じでした。

リファレンスページに書いてありますが、このような「早さ」を実感できるのは、処理する対象のデータセットがある程度大きな場合であって、データセットが大きくない場合にはそもそも標準関数でも時間はかからないですし、今回のツールキットの関数を使う恩恵は少なそうです。

今回の記事では、ツールキットとして入手できるMulticore Analysis and Sparse Matrix Toolkitを紹介しました。

あらかじめデータセットのサイズが大きいことがわかっているような処理を扱う場合の処理速度向上に向けて検討してみるといいと思います。

ここまで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました