設定方法に関して。
以下は、OMP_NUM_THREADS の数だけスレッドを起動し、それぞれ「i % NUM_CORES(プロセッサのコア数)」に、割り当てる場合。ひとまず順番ずつ割り当てる。このようにすると、スレッドとコアを対応付けることができる。
以下は、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(); }