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? что это соответствует? Я не видел этот предел нигде.

0 ответов

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