Отображение потоков OpenMP на физические ядра

Так что я некоторое время искал в Интернете безрезультатно. Я новичок в использовании OpenMP и поэтому не уверен в терминологии здесь, но есть ли способ выяснить сопоставление конкретной машины из OMPThread (предоставленное omp_get_thread_num();) и физические ядра, на которых будут работать потоки?

Также меня интересовало, как именно OMP назначает потоки, например, всегда ли поток 0 будет выполняться в одном и том же месте, когда один и тот же код запускается на одной и той же машине? Спасибо.


person WtLgi    schedule 17.01.2011    source источник


Ответы (2)


Обычно ОС берет на себя назначение потоков ядрам, в том числе и с OpenMP. Это сделано по замыслу, и это хорошо - обычно вы хотите, чтобы ОС могла перемещать поток между ядрами (прозрачно для вашего приложения) по мере необходимости, поскольку время от времени это прерывает ваше приложение.

Некоторые API-интерфейсы операционной системы позволяют устанавливать сходство потоков. Например, в Windows можно использовать SetThreadAffinityMask навязать поток на конкретное ядро.

person Reed Copsey    schedule 17.01.2011

В большинстве случаев Рид прав, OpenMP не заботится о назначении потоков ядрам (или процессорам). Однако из-за таких вещей, как повторное использование кэша и локальность данных, мы обнаружили, что во многих случаях назначение потоков ядрам увеличивает производительность OpenMP. Поэтому, если вы посмотрите на большинство реализаций OpenMP, вы обнаружите, что обычно есть некоторая переменная среды, которую можно установить для «привязки» потоков к ядрам. OpenMP ARB еще не определил какой-либо «стандартный» способ сделать это, поэтому в настоящее время решение о том, следует ли это делать и как это сделать, остается за реализацией OpenMP. Было много дискуссий о том, следует ли включать это в спецификацию OpenMP или нет, и если да, то как это лучше всего сделать.

person ejd    schedule 18.01.2011
comment
Да, это на самом деле то, с чем я играю, наблюдая, становится ли все хуже или лучше в зависимости от настроек сходства. - person WtLgi; 18.01.2011