MacOS - Запуск кода MPI с 256 процессами - сообщение "[warn] select: Неверный аргумент"
Следуя руководству по этой ссылке, я пытаюсь запустить код MPI под MacOS 10.9.5 (Mavericks) с числом процессов, равным 256: код MPI выделяет для каждого процесса 512x512
2D массив, поэтому он требует 256*256kB = 64MB of total used memory
,
Мой MacOS имеет 16GB RAM
а также 8 cores
так что это кажется странным.
Для ряда процессов ниже 256 (я пробовал: np=2,4,8,16,32,64,128) проблем нет, исполнение хорошее, и я получаю ожидаемые результаты.
Но для np = 256
Я получаю следующее сообщение, которое повторяется:
$ mpirun -np 256 ./a.out
[warn] select: Invalid argument
[warn] select: Invalid argument
[warn] select: Invalid argument
...
Я пытался также использовать -mca
вариант, выполнив:
$ mpirun -mca opal_set_max_sys_limits 1 -np 256 ./a.out
Но я получаю то же предупреждение.
По приведенной выше ссылке я сделал:
$ launchctl limit maxfiles
maxfiles 65536 200000
Затем в пользователь root я создал /etc/launchd.conf
файл и положить в:
limit maxfiles 65536 200000
Я перезапустил систему, чтобы новые ограничения вступили в силу и набрали как обычный пользователь:
$ launchctl limit maxfiles
maxfiles 65536 200000
Но, к сожалению, эти модификации не влияют на функцию MPI "mpirun" с 256 процессами и не заставляют исчезнуть предупреждение выше.
На платформе Linux я могу запустить свой код MPI с np = 256
Без проблем, проблема происходит только на MacOS 10.9.5.
Любая идея? Спасибо
PS: если я не на правильном форуме, пожалуйста, дайте мне знать
ОБНОВЛЕНИЕ 1: Я также пытался использовать "--oversubscribe
вариант как:
mpirun -np 256 --oversubscribe ./a.out
но получите все то же сообщение: [warn] select: Invalid argument
ОБНОВЛЕНИЕ 2: я обновился до OS X 10.13.3 High Sierra
но все же не повезло с моей проблемой.
Чтобы увеличить лимит открытых файлов, по этой ссылке я сделал:
1) sudo vim /Library/LaunchDaemons/limit.maxfiles.plist
2) положить в этот файл:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>limit.maxfiles</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>maxfiles</string>
<string>64000</string>
<string>524288</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
3) sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
4) Проверка по:
$ sysctl kern.maxfiles
kern.maxfiles: 524288
а также
$ launchctl limit maxfiles
maxfiles 64000 524288
Когда я запускаю ring_c.c (пример из Open-MPI) исполняемый файл с:
mpirun --oversubscribe -np $NB_PROCESS ./a.out
Для ряда процессов ниже или равных 142
работает нормально
Для ряда процессов больше 142
Я получаю оригинальное предупреждающее сообщение:
[warn] select: Invalid argument
[warn] select: Invalid argument
[warn] select: Invalid argument
[warn] select: Invalid argument
[warn] select: Invalid argument
[warn] select: Invalid argument
[warn] select: Invalid argument
...
Почему предел достигнут в NB_PROCESS > 142
? что это соответствует? Я не видел этот предел нигде.