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 было только наполовину (так как я отключил нечетные).

Решение: мне пришлось перезапустить серверы в конце. После этого все работает нормально.

Другие вопросы по тегам