закрепление и соответствие ядра с openblas на процессоре AMD Epyc

Я использую openblas на процессоре AMD Epyc 'zen'. Чтобы установить его, я просто сделал TARGET=ZEN

У меня есть система с 2x 7601 (т.е. 2 ядра x32), и я могу запустить все ядра и получить нормальное число GFLOPS от DGEMM, используя экспорт OMP_NUM_THREADS=64.

Но сейчас я пытаюсь подключить его к меньшему набору ядер, всего 2 ядра, с 1 ядром на 1 сокете и вторым ядром на другом сокете. Поэтому я установил

1) export OMP_NUM_THREADS=2 export GOMP_CPU_AFFINITY="0 32", но он всегда выгружает 2 потока на первые 2 ядра.

2) Я вышел из системы, снова вошел в систему и попытался экспортировать OMP_NUM_THREADS=2 numactl -C 0,31 ./mt-dgemm, но снова сбрасывает их на ядра 0 и 1.

3) Я вышел из системы, снова вошел в систему и попытался экспортировать OMP_NUM_THREADS=2 taskset-c 0,31 ./mt-dgemm, но снова сбрасывает их на ядра 0 и 1.

Но если я попробую только одно ядро, OMP_NUM_THREADS=1, а затем выполню набор задач или numactl и изменю идентификатор ядра на 4, 8, 52 или что-то еще, тогда он успешно прикрепит этот единственный поток к ядру, к которому я его запросил.

Кто-нибудь знает, что я делаю неправильно, когда пытаюсь привязать 2 или более ядер к определенным идентификаторам процессора?

Большое спасибо!

(Я использую CentOS 7.4 с GCC 7.2)


person Morph    schedule 01.03.2018    source источник


Ответы (3)


Чтобы ответить на мой собственный вопрос, при сборке openblas используйте флаг NO_AFFINITY=1, чтобы отключить автоматическую близость, засвидетельствованную выше. Таким образом;

make TARGET=zen NO_AFFINITY=1
person Morph    schedule 15.11.2018

Я использую следующие команды, они работают для вас? экспорт OMP_NUM_THREADS=2 numactl --physcpubind=0,31 ./mt-dgemm

person Nisanth M P    schedule 05.03.2018
comment
Нет, боюсь, что просто залипает их на CPUid 0 и 1 - person Morph; 05.03.2018

Размещением потоков можно управлять с помощью переменных среды openMP: OMP_PLACES и OMP_PROC_BIND. Например:

OMP_PLACES="{0}" OMP_PROC_BIND=spread OMP_NUM_THREADS=64 ./mt-dgemm Это запланирует все 64 потока на ядро ​​0.

Вы можете получить дополнительную информацию по ссылке ниже: http://pages.tacc.utexas.edu/~eijkhout/pcse/html/omp-affinity.html

person Kiran V    schedule 05.03.2018