libgomp: создание потока не удалось: неверный аргумент после отключения / включения процессоров
У меня есть 2-сокетный компьютер, каждый с 14 ядрами и включенной гиперпоточностью - таким образом, всего 14*2*2 = 56 единиц обработки или логических процессоров
Я отключил все процессоры с нечетными номерами (1, 3, 5, 7, ..., 53, 55), выполнив:
for i in {1..55..2}; do echo 0 > /sys/devices/system/cpu/cpu$i/online; done
/sys/devices/system/cpu/online shows 0 2 4 6 ... 52 54
Теперь, когда я пытаюсь создать несколько потоков (=28) с использованием OpenMP, я получаю следующую ошибку:
libgomp: Thread creation failed: Invalid argument
Я возвращаю это назад, делая:
for i in {1..55..2}; do echo 1 > /sys/devices/system/cpu/cpu$i/online; done
/sys/devices/system/cpu/online shows 0-55
Тем не менее, я получаю ту же ошибку.
Какие-нибудь мысли?
Изменить: Код работал нормально для любого количества потоков, прежде чем я сделал вышеупомянутые эксперименты.
1 ответ
Даже после повторного включения процессоров количество потоков OMP было только наполовину (так как я отключил нечетные).
Решение: мне пришлось перезапустить серверы в конце. После этого все работает нормально.