Russian Language English Language

2.Организация вычислительных систем

2.1 РЕАЛИЗАЦИЯ ПОИСКА НА ОСНОВЕ ПРЕЦЕДЕНТОВ В МУЛЬТИАГЕНТНЫХ ИНТЕЛЛЕКТУАЛЬНЫХ ИНФОРМАЦИОННО-ПОИСКОВЫХ СИСТЕМАХ

2.2 РЕАЛИЗАЦИЯ ЯЗЫКА ФУНКЦИОНАЛЬНОГО ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ FPTL НА МНОГОЯДЕРНЫХ КОМПЬЮТЕРАХ

2.3 ПРОГРАММНАЯ МОДЕЛЬ ФУНКЦИОНИРОВАНИЯ КЛАСТЕРНОЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ И ПРЕДСТАВЛЕНИЕ ГРАФОВ ЗАДАЧ ДЛЯ ДАННОЙ СИСТЕМЫ


Экспресс информация

Редколлегия журнала

Подписка на новости

Гостевая книга

Предоставление материалов

Письмо в редакцию

На начало


2013, Номер 1 ( 22)



Place for sale
BC/NW 2013: №1 (22):2

BC/NW 2013: №1 (22):2.2

 

РЕАЛИЗАЦИЯ ЯЗЫКА ФУНКЦИОНАЛЬНОГО ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ FPTL НА МНОГОЯДЕРНЫХ КОМПЬЮТЕРАХ

Д.А. Шорникова, И.Е. Куриленко

 

Целью данного исследования является реализация системы выполнения (интерпретатора) функционального языка параллельного программирования FPTL [1] на многоядерных компьютерах. Язык FPTL создан по композиционному принципу и имеет «чистую» функциональную основу, избавляя программиста от необходимости использования средств явного задания параллелизма на процессном уровне, не имеющем связи с функциональной семантикой программы.

В ходе реализации системы было разработано внутреннее представление функциональных программ, оптимально подходящее для их параллельного выполнения — структурированные функциональные схемы. В качестве модели параллельного выполнения была выбрана модель динамического порождения параллельных процессов.

Параллельные процессы порождаются при обработке операций композиции, имеющих явную или неявную параллельную семантику. В качестве алгоритма планирования параллельных процессов был выбран алгоритм work-stealing [2], специально адаптированный для работы с разработанным внутренним представлением функциональной программы. Особое внимание также было уделено таким важным аспектам реализации функциональных языков программирования, как поддержка «глубокой» рекурсии и автоматическому управлению памятью (сборке мусора).

Эффективность реализации примененных решений была проверена на типовых вычислительных задачах (численное интегрирование, быстрое преобразование Фурье) и типовых задачах обработки данных (быстрая сортировка, построение словарей). В ходе экспериментов было выявлено многократное уменьшение времени выполнения тестовых программ на многоядерных (2—4 ядер) системах, а также ряд особенностей системы, которые не были столь очевидными на этапе проектирования.

Литература

1. Бажанов С.Е., Кутепов В.П., Шестаков Д.А. Язык функционального параллельного программирования и его реализация на кластерных системах // Программирование РАН. 2005. С. 237—269.

2. Robert D. Bluemofe, Charles E. Leiserson. Scheduling multithreded computations by work stealing // 35th Annual Symposium on Foundations of Computer Science

(FOCS 1994). P. 356—368.