研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

CPU Affinity。

2009-10-25 16:20:07 | Weblog
設定方法に関して。

以下は、OMP_NUM_THREADS の数だけスレッドを起動し、それぞれ「i % NUM_CORES(プロセッサのコア数)」に、割り当てる場合。ひとまず順番ずつ割り当てる。このようにすると、スレッドとコアを対応付けることができる。

# pragma omp parallel for schedule(static) private(i)
for (i = 0; i < num_threads; i++) {
  cpu_set_t mask;
  CPU_ZERO(&mask);
  CPU_SET(i % NUM_CORES, &mask);
  if (sched_setaffinity(0, sizeof(cpu_set_t), &mask) == -1) {
    printf("Failed ot set CPU affinityn");
    exit(1);
  }
  /* なんらかの処理 */
  function();
}