Вопросы и ответы
— Мое приложение использует TCP/IP в качестве транспортного уровня. Имеет ли смысл устанавливать высокоскоростную коммуникационную среду (SCI, Myrinet) и использовать реализацию TCP/IP поверх нее?
— В любом случае Вам понадобится тестировать Ваше приложение, поскольку эффективность может в каждом конкретном случае зависеть от различных особенностей коммуникационной среды. Но в целом эффективность TCP/IP поверх SCI или Myrinet гораздо ниже, чем эффективность MPI и сравнима с эффективностью TCP/IP поверх Gigabit Ethernet при использовании современных контроллеров.
— Я использую PVM. Какую коммуникационную среду лучше выбрать для моего кластера?
— В этом случае больше всего Вам подойдет Myrinet, поскольку для Myrinet существует специализированная реализация PVM. В любой другой коммуникационной среде PVM будет работать поверх TCP/IP, что даст существенный проигрыш в производительности.
— Моя программа очень хорошо распараллеливается до определенного количества узлов, а затем начинается резкое снижение эффективности.
— Если Ваша программа имеет архитектуру master-slaves (т. е. имеется главный процесс, который раздает задания остальным, а затем собирает результаты), то после превышения определенного лимита узлов наступает насыщение коммуникационной среды и эффективность резко падает. Вам следует рассмотреть возможность обновления коммуникационной среды или изменения архитектуры Вашей программы.
— Моя программа использует временные рабочие файлы. При её запуске на кластере я наблюдаю очень сильное падение производительности.
— Возможно, домашние каталоги пользователей смонтированы удаленно через NFS. Убедитесь, что Ваша программа создает рабочие файлы на локальном диске узла кластера.
— Я использую MPICH, и при попытке запустить mpirun с опцией -nolocal, чтобы не выполнять программу на фронтенде кластера, получаю сообщения об ошибках. Без опции -nolocal все работает без проблем.
— Архитектура MPICH такова, что запуск mpirun с опцией -nolocal требует, чтобы были разрешены rsh- или ssh-соединения с первого узла кластера на остальные узлы. Убедитесь, что такие соединения возможны и не требуют ввода пароля
— При запуске моей программы на двух процессорах я получаю увеличение производительности более, чем в два раза. Как такое может быть?
— Это связано с тем, что каждый из процессоров работает с меньшим объемом данных, следовательно уменьшается вероятность не попадания в кэш-память процессора.
— При запуске моей программы на двух процессорах одного узла кластера я не получаю увеличения производительности, тогда как при запуске на разных узлах производительность увеличивается почти вдвое.
— Скорее всего Ваша программа активно работает с памятью. К сожалению, реализация SMP на многих аппаратных платформах имеет проблемы с производительностью при одновременном доступе к памяти разных процессоров. Если для Вашей программы критична производительность на много процессорном узле, Вам следует обратить внимание на другие архитектурные решения, например ccNUMA.


