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 →