190 likes | 449 Views
МЕТОДЫ РАСПРЕДЕЛЁННЫХ ВЫЧИСЛЕНИЙ НА ОСНОВЕ МОДЕЛИ ПОТОКА ДАННЫХ. ПРОТОТИП СИСТЕМЫ. М.О. Бахтерев, П.А. Васёв ИММ УрО РАН, Екатеринбург. XII Международный семинар «Супервычисления и математическое моделирование» РФЯЦ-ВНИИЭФ, Саров 2010. Высокопроизводительные системы.
E N D
МЕТОДЫ РАСПРЕДЕЛЁННЫХ ВЫЧИСЛЕНИЙ НА ОСНОВЕ МОДЕЛИ ПОТОКА ДАННЫХ. ПРОТОТИП СИСТЕМЫ. М.О. Бахтерев, П.А. Васёв ИММ УрО РАН, Екатеринбург XII Международный семинар «Супервычисления и математическое моделирование» РФЯЦ-ВНИИЭФ, Саров 2010
Высокопроизводительные системы • Системы с общей памятью (быстрый обмен между потоками) • Параллельные среды (кластер с хорошими внутренними сетевыми связями) • Распределённые среды (медленные сетевые связи между группой кластеров/узлов)
Вопрос технологий HPC программирования - открыт Не смотря на наличие • MPI • OpenMP Почему? • Сложныетехнологии. А если необходима оптимальность – то крайне сложные. • Не учитывают современные тенденции (GPGPU, грид, облачные вычисления).
Предпринимаются попытки • Автоматическое и автоматизированное распараллеливание (DVM) • Технологии решения определённых классов задач (Map/Reduce) • Инструменты упрощения параллельного программирования (TBB) Некоторые подобные решения предлагают смену парадигмы вычислений.
Модель потока данных (data flow) Открытый вопрос - конкретная интерпретациия и реализации этой модели. • Размер блоков (инструкции...этапы вычислений). • Язык описания потока (расширение, новые языки). • И так далее (множество деталей). D Input E B A B C Output B
Предлагаемая методика Базовые элементы: • Хранилище – содержит именованные данные. Имена: «x15», «matr_220_517». Данные: бинарные. • Задачи – программы, которые читают данные из хранилища, и пишут в хранилища новые данные. • Правила – определяют условия и параметры запуска задач.
Правила Каждое правило содержит в себе: • Список имён данных, которые необходимы для выполнения задачи. • Имя задачи, которую необходимо запустить. • Список соответствия глобальных имён данных локальным именам. • Действия при успешном завершении. Правило срабатывает, когда все исходные данные готовы.
Высокопроизводительная программа: • Набор вычислительных программ • Файл запуска – с описанием начальных данных и правил
Процесс выполнения • Запуск файла начальных данных и правил • Поиск правил, готовых к исполнению • Поиск подходящих ресурсов для готовых правил • Размещение (части) правил на ресурсах • В результате исполнения правил порождаются новые данные => новые готовые правила и свободные ресурсы
Пример счетной программы #include "ride.h“ int main(intargc, char *argv[]) { intn,k; if (ride_get(“in“,&n,sizeof(n)) != RIDE_GOOD) { return -1; } // ************ eval k ********************** k = n + 1 ride_put( “out", ride_data(&k,sizeof(k)) ); return 0; }
Пример файла запуска Ride.put("var1",1 ) for i in (1..10) do r = Rule.new r.feed("var#{i} ", “in") r.mask("var#{i+1}",“out") r.run("sample1/release/sample1.exe") r.save end Ride.run puts Ride.get("var11")
Пример работы Видео-файл
Преимущества методики • Разделение уровней вычисления и взаимодействия. • Произвольные языки программирования вычислительных программ (с внедренными функциями getи put) • Отсутствие ограничений на внутреннюю сложность вычислительных программ. • Возможность участия в рамках одного вычисления программ различных платформ (ОС, языки, процессоры и GPGPU).
Преимущества методики • Возможность подключать и отключать вычислительные ресурсы «на лету». • Встроенная поддержка контрольных точек (состояние хранилища). • Возможность полностью остановить счёт и в будущем продолжить его. • Перспективы умного размещения правил, в том числе на основе статистики предыдущих запусков. • Поддержка общей памяти. В итоге – поддержка всех уровней HPC-сред и их комбинаций.
Реализация Run Side 1 Runvisor Calc 1 Eval 2 Runvisor Runner Run Side 2 Schet 3 Runvisor … Prog 4 Runvisor Run Side N Storage
Первые программы Поиск дискретных логарифмов Автор: Илья Альбрехт Эффект: сокращение коммуникаций с 500 строк MPI-кода до 100 строк RIDE-кода Умножение матриц Автор: Михаил Бахтерев Эффект: множество идей по вопросу упрощения языка правил RIDE
Реализация Run Side 1 Runvisor Calc 1 Eval 2 Runvisor Runner Run Side 2 Schet 3 Runvisor … Prog 4 Runvisor Run Side N Storage
Распределённое хранилище данных • Неодинаковые по мощности узлы • Неоднородные связи между узлами • Подключение и отключение на лету • Явное управление репликами • Встроенное обнаружение готовых правил Parallel FS, SQL Cluster, DHT, Kademlia/P2P Идея обходчиков и заявок. В разработке.
WWW.RIDEHQ.NET - информация о разработке системы XII Международный семинар «Супервычисления и математическое моделирование» РФЯЦ-ВНИИЭФ, Саров 2010