Сконфигурируйте опции для связи MPI
mpiSettings('DeadlockDetection','on')
mpiSettings('MessageLogging','on')
mpiSettings('MessageLoggingDestination','CommandWindow')
mpiSettings('MessageLoggingDestination','stdout')
mpiSettings('MessageLoggingDestination','File','filename')
mpiSettings('DeadlockDetection','on')
включает обнаружение взаимоблокировки во время вызовов labSend
и labReceive
. Если обнаружена взаимоблокировка, вызов функции labReceive
может вызвать ошибку. Хотя нет необходимости включать обнаружение тупика у всех работников, это самая полезная опция. Значение по умолчанию 'off'
для связи с рабочими местами и 'on'
внутри spmd
операторы. После изменения настройки в spmd
оператор, установка остается в эффекте до тех пор, пока параллельный пул не закроется.
Если вы используете большое количество рабочих мест, вы можете столкнуться с увеличением эффективности, отключив обнаружение взаимоблокировок.
Если некоторые работники не звонят labSend
или labReceive
в течение длительных периодов времени обнаружение взаимоблокировки может вызвать ошибки связи. Если вы столкнулись с ошибками, попробуйте отключить обнаружение взаимоблокировки.
mpiSettings('MessageLogging','on')
включает логгирование сообщений MPI. Значение по умолчанию является 'off'
. Адресатом по умолчанию является MATLAB® Командное окно.
mpiSettings('MessageLoggingDestination','CommandWindow')
отправляет данные регистрации MPI в Командное окно MATLAB. Если задача в задании связи настроена на захват окна Command Window, информация регистрации MPI будет присутствовать в CommandWindowOutput
задачи свойство.
mpiSettings('MessageLoggingDestination','stdout')
отправляет информацию регистрации MPI в стандартный выход для процесса MATLAB. Если вы используете MATLAB Job Scheduler, это файл журнала службы mjs.
mpiSettings('MessageLoggingDestination','File','filename')
отправляет данные регистрации MPI в указанный файл.
Установите обнаружение взаимоблокировки для задания связи внутри jobStartup.m
файл для этого задания:
% Inside jobStartup.m for the communicating job mpiSettings('DeadlockDetection','on'); myLogFname = sprintf('%s_%d.log',tempname,labindex); mpiSettings('MessageLoggingDestination','File',myLogFname); mpiSettings('MessageLogging','on');
Отключите обнаружение взаимоблокировки для всех последующих spmd
операторы, которые используют тот же параллельный пул:
spmd;mpiSettings('DeadlockDetection','off');end
Установка MessageLoggingDestination
не включает автоматически логгирование сообщений. Для активизации логгирования сообщений требуется отдельный вызов.
mpiSettings
должен вызываться не клиент, а рабочий. То есть его следует вызывать внутри функции задачи, внутри jobStartup.m
, или в пределах taskStartup.m
.