Отзыв на отчет по тестированию HW и SW Intel, установленного

advertisement
Отзыв
на отчет по тестированию HW и SW Intel, установленного на кластере IBM 1350
Очень интересные результаты. Особенно попытка использования смешанного распараллеливания
с помощью MPI + OMP.
В последнее время наблюдается очень большой интерес к такому смешиванию. К тому несколько
причин (естественно, вы их знаете, раз уж экпериментируете со смешиванием)
1) появление мощных кластеров – тысячи узлов; использование процессоров с несколькими
ядрами. Обычные реализации MPI не могут задействовать все эти ядра хотя бы потому, что имеют
какое-то ограничение на количество процессов (масштабируемость, поддержка коннектов/связей)
2) обмен между процессами (на узле) существенно медленнее, чем между потоками
3) наверняка вы можете продолжить этот список
Я вижу, что вы тоже столкнулись с трудностями, которые привносит неоднозначная нумерация
процессоров под Linux. Ситуация даже сложнее, т.к. мы видели кластера, где нумерация на одном
узле отличается от нумерации на другом. Включенный hyper-threading привносит свою лепту в
неразбериху.
Наша библиотека (версия 3.0, что вы использовали) не была предназначена для смешанного (MPI
+ OMP) выполнения. Нужно было явно задавать номера процессоров, на которых вы хотите
закрепить процессы. Из-за неоднозначности нумерации процессоров трудно получить желаемое
распределение процессов по процессорам. И если процесс создавал вычислительные потоки, то
они наследовали закрепление родителя. В конечном итоге процесс и потоки закрепляются на
одном процессоре, что ухудшает производительность. Выходом является либо отказ от
закрепления (в итоге получаем нестабильность результатов), либо руками создавать и закреплять
потоки (как раз хорошо продемонстрирован в примере из вашего отчета).
Это не есть хорошо, поэтому мы реализовали версию (выпущен буквально на днях и будет
доступен пользователям в течение 1-2 недель), которая имеет специальный механизм для
удобного и гибкого задания распределения процессов, гибридного MPI + OMP выполнения,
закрепления создаваемых потоков независимо от родительского процесса.
И этот механизм работает согласно пожеланию пользователя независимо от кластера с его
нумерацией.
Очень удобно. Например, чтобы процессы легли на сокеты, а потоки распределились между
ядрами в сокете.
Точки приложения в ваших исследованиях очень важны.
Например:
Влияние привязки процессов и потоков к ядрам узла на скорость обмена данными.
Вы можете видеть разницу в 2-3 раза при правильной (или неправильной) привязке
Влияние шины на пропускную способность памяти при различных способах обхода массива.
Это не MPI часть, а больше оптимизация программы. Могу сравнить с последовательным
доступом к памяти (что хорошо) и с каким-то шагом (что плохо из-за промахов по кэшу)
Возможно, вы тут немного другое имели в виду
Исследование конкурентного доступа к памяти
Может быть регулировано целевым распределением процессов
Я бы рекомендовал использовать для ваших дальнейших исследований нашу последнюю версию
Intel MPI 3.1.1. Нам были бы полезны ваши отзывы.
Нам бы хотелось приехать к вам на семинар и рассказать о новых возможностях Intel MPI и Intel
Trace Collector & Analyzer.
Герман Воронова Intel, Саров
Related documents
Download