情報詳細Q:HALCONを使った処理を複数のスレッドから呼び出して並列処理すると、単独スレッドでの実行に対して処理時間のばらつきが大きく、不安定化します。A:HALCONの多くの関数は内部でマルチスレッド化する仕組み (AOP:Automatic Operator Parallelization) を使用しており、複数の関数を外部から並列実行すると、内部スレッドの競合が発生して処理時間が不安定になる場合があります。対策としては次の3つです。a. HALCON関数内部のスレッド数制限サブスレッド内で set_system('tsp_threads_num', N) を使用し、呼び出されるHALCON関数の内部スレッド数を制限することで外部並列分のCPUコアを確保する。たとえば24コアのCPUで外部スレッドが2つの場合、それぞれのスレッドで set_system('tsp_threads_num', 12) として内部スレッド数を最大12に制限する。b. 外部並列を行わずHALCONの内部並列に任せる並列化した処理を単一スレッドのループ処理として順次実行し、HALCON内部のマルチスレッドに処理を任せる構成とする。c. CPU affinity(スレッドのCPUコア割り当て)の明示的な設定各スレッドをCPUコアに固定することでスケジューリングのばらつきを抑制できる場合がある【確認ポイント】・get_system ('threads_num', N) で現在のスレッド数を確認・各関数を単独で複数回実行した際の速度ばらつきと、並列実行時のばらつきを比較して原因を切り分ける添付ファイルタイトルHALCONで複数のスレッドから関数を同時に呼び出すと処理時間が不安定になるURL 名000012468公開状況公開済み検証状況未検証