OpenMP и CPU сходство
Будет sched_setaffinity
или же pthread_attr_setaffinity_np
работать, чтобы установить сходство потоков под OpenMP?
Связанный: CPU Affinity
1 ответ
Да, именованные вызовы будут работать, чтобы установить сходство потоков. Единственная проблема состоит в том, чтобы исправить номер потока и установить правильное сродство в правом потоке (вы можете попробовать использовать статическое планирование for
цикл для известного количества потоков).
Как я знаю, почти каждый openmp позволяет устанавливать сходство через окружение. Имя переменной окружения может быть разным (некоторое время назад оно не стандартизировалось). Я использую http://www.spec.org/omp2001/results/omp2001.html страницу для поиска реализации openMP и поиска конкретного имени переменной среды. Сходство устанавливается в ~ половине результатов specOMP. В результатах также есть некоторые дополнительные настройки производительности OpenMP.
Например, для компилятора intel переменная
export KMP_AFFINITY=compact,0
export SUNW_MP_PROCBIND=TRUE
export GOMP_CPU_AFFINITY=0-63
где 63 - максимальный номер ЦП (если считать от 0)
Более новый стандарт OpenMP версии 3.1 определяет переменную среды OMP_PROC_BIND (см. Раздел 4.4), которая является стандартизированным способом установки соответствия в OpenMP. Использование это:
export OMP_PROC_BIND=true