初心者がマルチコアソフト開発に初挑戦(4)

改良後のプログラム動作結果を並列化前の結果と比べると、検出件数は同じですが検出順序は異なります。

EMC組み込みマルチコアサミット2020、セミナー資料より

 

逐次処理では、乗算両辺の値による二重ループ内で処理していたので、検出結果も小さな値から順に並びました。

 

データ分割並列化では、外側のループを複数の区間に分けて同時に行うので(本環境の場合は8分割)、必ずしも左辺の小さい順に検出するとは限りません。

本例題では全ての該当データを見るけることになりましたが、1件だけ見つけたい時であれば、逐次処理と並列処理では異なるデータを見つける可能性があります。

データの並び順に検索したいのであれば、データ並列化処理は向きませんが、全体からバランスよく検索したい場合はデータ並列化処理の方が良さそうです。

 

 

高速化のためにプログラムを並列化する時にも、従来の高速化手法を使うことができます。

 

例えば本例であれば、1行だけで書かれた関数がありますが、これらの関数をマクロに書き換えることで高速化が期待できます。

 

EMC組み込みマルチコアサミット2020、セミナー資料より

 

 

 

次回から、ジョブ(タスク)による並列化をはじめます