Открыть сервис

PALM

PALM (англ. Parallel Architecture for Long Message Passing, также встречается расшифровка PALM: A Language for Parallel Programming) — это архитектура параллельных вычислений и одноимённый язык программирования, разработанные в конце 1980-х — начале 1990-х годов в исследовательском центре корпорации Digital Equipment Corporation (DEC) в Пало-Альто (Калифорния, США). Система была ориентирована на создание высокопроизводительных вычислительных систем с массовым параллелизмом, где каждый процессор имел собственную локальную память, а обмен данными между ними осуществлялся посредством передачи сообщений.

История

Разработка PALM началась в 1988 году в рамках проекта DEC по созданию масштабируемых параллельных вычислительных систем. Проект возглавлял Дэвид Уолл (David Wall), известный своими работами в области архитектуры компьютеров и компиляции. В 1990 году была опубликована первая статья, описывающая архитектуру и язык PALM, а в 1991 году — завершена реализация прототипа на 64 процессорах.

В отличие от многих современных ему параллельных систем (например, Connection Machine CM-2 или Intel iPSC/860), PALM не был коммерческим продуктом. Он оставался исследовательским проектом, целью которого было изучение эффективности различных моделей параллельного программирования, особенно в контексте долгоживущих сообщений и асинхронного взаимодействия.

К середине 1990-х годов, с развитием кластерных технологий и стандарта MPI (Message Passing Interface), интерес к специализированным архитектурам вроде PALM снизился. Проект был закрыт, а его наработки частично использованы в более поздних исследованиях DEC по распределённым системам.

Архитектура

Аппаратная платформа

PALM базировался на гетерогенной архитектуре, состоящей из двух типов процессоров:

  • Вычислительные узлы (Processing Elements, PE) — каждый узел содержал процессор Intel i860 (32-разрядный RISC-процессор с производительностью до 60 MFLOPS) и локальную память объёмом 8–16 МБ. Узлы не имели доступа к общей памяти.
  • Коммуникационные процессоры (Communication Processors, CP) — специализированные процессоры на базе Motorola 68020, отвечавшие за маршрутизацию сообщений между вычислительными узлами. Каждый CP обслуживал группу из 4–8 PE.

Связь между узлами осуществлялась через высокоскоростную сеть с топологией «гиперкуб» (4-мерный гиперкуб для 16 узлов, 6-мерный — для 64). Пропускная способность канала составляла 100 Мбит/с, что было высоким показателем для начала 1990-х годов.

Модель памяти

PALM использовал модель распределённой памяти (distributed memory), где каждый процессор имел доступ только к своей локальной памяти. Глобальное адресное пространство отсутствовало. Для обмена данными между узлами применялась исключительно передача сообщений, что исключало проблемы когерентности кэша, характерные для систем с общей памятью.

Язык программирования PALM

Язык PALM был разработан как расширение языка C с добавлением конструкций для параллельного программирования. Основные особенности:

Синтаксис и конструкции

  • Процессы (processes) — параллельные единицы выполнения, создаваемые с помощью ключевого слова process. Каждый процесс выполнялся на отдельном вычислительном узле.
  • Каналы (channels) — однонаправленные линии связи между процессами, объявляемые с помощью channel. Каналы могли быть как синхронными, так и асинхронными.
  • Сообщения (messages) — структуры данных, передаваемые через каналы. Тип сообщения задавался с помощью message type.
  • Операции приёма/передачиsend и receive с указанием канала и сообщения. Поддерживались как блокирующие, так и неблокирующие версии.

Пример кода

```c process producer() { channel<int> out; int data = 42; send(out, data); }

process consumer() { channel<int> in; int result; receive(in, &result); printf("Received: %d\n", result); } ```

Модель выполнения

PALM поддерживал асинхронную передачу сообщений (non-blocking sends), что позволяло процессу-отправителю продолжать работу, не дожидаясь, пока получатель обработает сообщение. Приём сообщений мог быть как блокирующим (ожидание), так и неблокирующим (проверка наличия). Для синхронизации использовались барьеры (barrier) и семафоры.

Применение и результаты

PALM использовался в основном для исследовательских целей:

  • Научные вычисления — решение задач линейной алгебры (умножение матриц, решение систем линейных уравнений), моделирование физических процессов (теплопередача, гидродинамика).
  • Тестирование алгоритмов — изучение масштабируемости параллельных алгоритмов при различных топологиях связи и размерах сообщений.
  • Сравнение с другими системами — PALM сравнивался с системами на основе общей памяти (например, Stanford DASH) и другими архитектурами с передачей сообщений (nCUBE, Intel Paragon).

Эксперименты показали, что для задач с высокой степенью локальности данных (например, умножение матриц размером 1024×1024) PALM демонстрировал ускорение до 50 раз на 64 процессорах (эффективность около 78%). Для задач с интенсивным обменом сообщениями (например, быстрые преобразования Фурье) эффективность снижалась до 40–50% из-за накладных расходов на коммуникацию.

Критика и ограничения

Основные недостатки PALM, отмеченные исследователями:

  • Сложность программирования — разработчикам приходилось вручную управлять распределением данных и синхронизацией, что было трудоёмко и подвержено ошибкам.
  • Ограниченная масштабируемость — архитектура с гиперкубом хорошо работала до 64 узлов, но при дальнейшем увеличении числа процессоров накладные расходы на маршрутизацию сообщений росли нелинейно.
  • Отсутствие поддержки общей памяти — многие алгоритмы, эффективные на системах с общей памятью (например, OpenMP), не могли быть легко перенесены на PALM.
  • Закрытость проекта — PALM не был выпущен как коммерческий продукт, что ограничило его распространение и развитие.

Влияние и наследие

Несмотря на то, что PALM не получил широкого распространения, его идеи повлияли на развитие параллельных вычислений:

  • Асинхронная передача сообщенийконцепция non-blocking sends была впоследствии реализована в стандарте MPI-2 (1997 год).
  • Гетерогенные архитектурыразделение на вычислительные и коммуникационные процессоры предвосхитило появление специализированных сетевых процессоров и ускорителей (например, Blue Gene/Q).
  • Языки параллельного программирования — синтаксис PALM повлиял на разработку языков Occam, Erlang и Go (в части каналов и горутин).

В настоящее время PALM представляет интерес в основном для историков вычислительной техники и специалистов по параллельным вычислениям, изучающих эволюцию архитектур.

Источники

  • Wall, D. W. (1990). «PALM: A Language for Parallel Programming». Proceedings of the 3rd ACM Symposium on Parallel Algorithms and Architectures.
  • Wall, D. W. (1991). «The PALM Parallel Computer: Architecture and Performance». Digital Equipment Corporation Technical Report.
  • Hennessy, J. L., & Patterson, D. A. (1996). Computer Architecture: A Quantitative Approach (2nd ed.). Morgan Kaufmann.
  • Kumar, V., et al. (1994). Introduction to Parallel Computing. Benjamin/Cummings.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →