Я использую 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)