情報詳細Q:32コア64スレッドのPCでHALCONがすべてのコアを利用していないようです。原因は何でしょうか。A:いくつか要因が考えられます。Windows のNUMAアーキテクチャーに対応した環境ですと1プロセスあたり、1ノードのみしか使われません。また、32コアのCPUが2つのノードに分かれている環境ですと、半分の16コアを優先的に利用するため、残りの16コアが利用されていないように見えてしまいます。詳細:本現象はNUMA(Non-Uniform Memory Access)アーキテクチャーの問題であるとの見解が開発元から返ってきました。NUMAとは、マザーボード上の2つのCPUソケット(下記よりノードと表現します)に対して、それぞれ別のメインメモリを割り当てて高速化する技術です。近年のCPUの高速化によりメインメモリとの情報のやり取りにボトルネックが生じ、それを解消するためにノード(CPUソケット)ごとに対してメインメモリを割り当てることで高速化できるようにしました。https://qiita.com/bokotomo/items/5352b8ceb6ccb70390c8逆に、別々の領域にあるメモリにアクセス(リモートアクセス)するためには、むしろ時間がかかってしまいます。1つのプロセス(アプリケーション)がリモートアクセスするよりも、片方のノードにて処理をした方が全体の処理時間が速くなることもあるようです。下記は海外の事例になりますが、1つのプロセスはどのような工夫をしても2つのノードで動かすことは出来ないと言われています。(ここではCPUソケットのことをnodeと呼んでいます。)https://superuser.com/questions/1152236/running-an-application-across-two-nodes-with-windows-server-with-numaこれはアプリケーションよりもさらに上位の層で決定されてしまっている事例なので、メインメモリへのアクセスが頻繁に行われるような処理については、プロセスレベルで処理を分ける等の対策を打つ他なさそうです。一応、CPUメーカーによってはNUMAを無効化しUMA(Uniform Memory Access)にする設定もあるようです。しかしながら、メインメモリへのアクセスは1つのバスに限られてしまい、 NUMAの優位性が得られなくなり、今度はメモリへのアクセスにて物理的なボトルネックが生じる可能性があります。参考までにURLを下記に記します。https://pc.watch.impress.co.jp/docs/column/kaigai/1075501.html 添付ファイルタイトル32コア64スレッドのPCでHALCONがすべてのコアを利用して実行していないURL 名000004817公開状況公開済み検証状況公開済み