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

Для gcc (pre-openmp 3.1)

 export GOMP_CPU_AFFINITY=0-63

где 63 - максимальный номер ЦП (если считать от 0)

Более новый стандарт OpenMP версии 3.1 определяет переменную среды OMP_PROC_BIND (см. Раздел 4.4), которая является стандартизированным способом установки соответствия в OpenMP. Использование это:

 export OMP_PROC_BIND=true
Другие вопросы по тегам