マルチCPUリアルタイムアプリケーションで並列処理を使用する
- 更新日2025-02-20
- 3分で読める
LabVIEWのマルチスレッドグラフィカルプログラミング環境では、マルチCPUシステム (マルチコアシステム、マルチプロセッサ、SMPシステムなど) による並列処理を簡単に活用することができます。LabVIEWで並列アーキテクチャを実装するには、ブロックダイアグラムのオブジェクトを連続的に配線しないように注意します。N個のCPUを持つシステムでVIを実行すると、最大N個のスレッドが並列的に実行されます。コードを並列ループに分割したり、複数の入力チャンネルをそれぞれ別のCPUで実行して並列データ処理を活用することができます。
並列ループ
マルチCPUシステムで実行するリアルタイムアプリケーションに並列ループを含めると、CPUスケジューラによって自動負荷調整が実行され、各CPUに実行スレッドを分配します。タイミングループの割り当てられたCPU入力を使用して、タイミングループを特定のCPUに手動で割り当てることができます。
並列データ処理
複数のデータチャンネルをグループに分割して、それらのグループを個々のCPUで並列処理することができます。たとえば、16個の入力チャンネルをデュアルコアシステムで処理する場合、以下のブロックダイアグラムのように8チャンネルずつ2つのグループに分けることができます。
この例では、Process Data.viは再入可能サブVIに設定されており、サブVIの各インスタンスにそれぞれ専用のメモリスペースが割り当てられるため、2つのインスタンスを同じCPUで実行する必要はありません。Process Data.viの2つのインスタンスは、互いにデータフローの依存性がないため、CPUスケジューラによって自動的に使用可能なCPUに割り当てられます。