0

ITK (3.20.1) スレッドのプロセッサ アフィニティを設定する方法はありますか。「SetGlobalDefaultNumberOfThreads」を持つ ITK::MultiThreader クラスを調べていました。しかし、私はアフィニティについて何かを言っている関数/メソッドを見つけていません。

任意の助けをいただければ幸いです..

4

1 に答える 1

1

私がインストールしたバージョン (3.18) では、この機能はサポートされていないようです。しかし、MultiThreaderヘッダー ファイルを見ると、実装がネイティブ OS スレッド メカニズムに依存していることに気付きました。これは、Linux では、pthreads が実際に生成され、pthread_tに直接使用されるThreadProcessIdTypeことを意味します。これは、コア アフィニティに Linux 独自の拡張機能を使用できる可能性があることを意味します。

この回答から別の質問への引用:

残念ながら、posix スレッド API には、スレッドの CPU アフィニティを設定する方法がありません。Linux プラットフォームpthread_attr_setaffinity_npで提供される移植性のない拡張cpuset機能を使用して、スレッド アフィニティを構成する関数のファミリを使用できます。

スレッドはすでに実行されているため、アフィニティを設定する前にスレッド属性を取得する必要があります。Linux には、そのための移植性のない関数がもう 1 つありますpthread_getattr_np

また、このcpuset機能はカーネルに組み込む必要がありますが、これはマルチコアをサポートするほとんどのプラットフォームに当てはまります。

参照:

于 2013-05-06T17:02:38.483 に答える