Почему мои результаты становятся невоспроизводимыми при запуске из qsub?

Я запускаю Matlab на кластере. когда я запускаю свой сценарий .m из интерактивного сеанса Matlab в кластере, мои результаты воспроизводятся. но когда я запускаю тот же скрипт из команды qsub, как часть работы с массивом вдали от моего бдительного глаза, я получаю правдоподобные, но невоспроизводимые результаты. Файлы .m делают то же самое, включая сохранение результатов в виде файлов .mat.

Кто-нибудь знает, почему запуск одного сценария дает воспроизводимые результаты, а запуск другого способа становится невоспроизводимым?

Это только проблема с воспроизводимостью или это свидетельствует о неточных результатах?

%%%%% Спасибо spuder за полезный ответ. На всякий случай, если кто-то наткнется на это и заинтересуется, вот дополнительная информация. Если вы используете более одного потока в заданиях Matlab, это может привести к краже ресурсов из других заданий, что искажает результаты. Итак, у вас есть 2 варианта: 1. Выбрать эксклюзивный доступ к узлу. Кластер, который я использую, в настоящее время не позволяет выполнять задания параллельного массива, поэтому делать это для меня было очень расточительно — я взял целый узел, но использовал его последовательно. 2. Попросите Matlab запуститься на singleCompThread. Это может увеличить время выполнения вашего скрипта, но он быстрее пропускает задания через очередь.


person user1792403    schedule 27.12.2013    source источник
comment
хорошо немного не в моей глубине здесь с жаргоном. но это смущающе параллельно, поэтому я запускаю каждый скрипт последовательно, без использования параллельных вычислений. это имеет значение?   -  person user1792403    schedule 28.12.2013
comment
С точки зрения входов или выходов?   -  person user1792403    schedule 28.12.2013


Ответы (1)


В игре много переменных. Исключая временные проблемы, такие как производительность сети и загрузка, вот несколько возможных объяснений:

При выполнении интерактивного задания вам назначается другая партия узлов, чем при использовании qsub.

Я видел некоторые сайты, которые назначают политику «исключительной» для узлов, выполняющих интерактивные задания, и «разделяемой» для узлов, выполняющих поставленные в очередь задания «qsub». Если это так, то вы почти всегда будете видеть лучшую производительность на эксклюзивных узлах.

Другой ответ может заключаться в том, что интерактивные задания назначаются узлам с меньшей перегрузкой сети.

Кроме того, если вы запрашиваете несколько узлов и попадаете на узлы, которые пересекают несколько переходов, вы можете столкнуться со значительным замедлением работы сети. Решением может быть то, что администратор кластера настроит наборы узлов.

Вы используете несколько узлов для работы? Как вы запрашиваете ресурсы?

person spuder    schedule 28.12.2013
comment
Спасибо! Вы правы насчет повышения производительности интерактивного задания по сравнению с заданиями qsub, я это заметил. Я не запрашиваю эксклюзивные узлы, хотя только что прочитал, что для потоков Matlab требуются эксклюзивные узлы. Вы определенно что-то делаете, я не понимаю, как это влияет на воспроизводимость? - person user1792403; 28.12.2013
comment
Хотя на самом деле моя работа не многопоточная, поэтому эксклюзивные узлы не нужны? - person user1792403; 28.12.2013
comment
Похоже, это дает воспроизводимые результаты, если скрипты повторно запускаются через qsub. Однако результаты отличаются от результатов интерактивных сеансов Matlab. Может кто-нибудь пояснить мне, если вы не запрашиваете эксклюзивный доступ к узлу при использовании qsub, означает ли это, что ваш скрипт будет работать на разных узлах ДАЖЕ, если в вашем скрипте нет параллелизма?? Почему еще неисключительность может привести к невоспроизводимости? - person user1792403; 28.12.2013
comment
Это зависит от того, какой планировщик вы используете. (Я знаком с Moab/Maui & Torque). Эти планировщики по умолчанию найдут наиболее эффективную группу процессоров, даже если они не находятся на одном узле. - person spuder; 28.12.2013
comment
Это система пакетной очереди Torque с планировщиком Moab. То есть неважно, что мой скрипт последовательный, и я не запросил нити, он все равно будет запускать его параллельно на разных процессорах? - person user1792403; 28.12.2013
comment
Кажется, это работает, так что большое спасибо, spuder. Единственная проблема заключается в том, что запрос эксклюзивного доступа к узлу снижает пропускную способность / заставляет мои задания дольше оставаться в очереди. - person user1792403; 28.12.2013
comment
В зависимости от того, как вы отправили задание, вам может быть выделено несколько процессоров на разных узлах. Matlab должен решить, как использовать преимущества этих нескольких процессоров. В вашей ситуации похоже, что вы используете только 1 процессор на одном узле. - person spuder; 28.12.2013
comment
Это обратная сторона «эксклюзивности», часто требуется больше времени для запуска заданий. - person spuder; 28.12.2013
comment
В этом случае я не понимаю, как это решает проблему. Как вы думаете, это потому, что задания выполняются медленнее, поэтому гонки данных, о которых говорил High Performance Mark, больше не проблема? - person user1792403; 28.12.2013
comment
давайте продолжим это обсуждение в чате - person user1792403; 28.12.2013