Автоматическая настройка программ (проект) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
м (Направления развития)
 
(не показаны 4 промежуточные версии ещё одного участника)
Строка 7: Строка 7:
 
|summer=on
 
|summer=on
 
|categorize=yes
 
|categorize=yes
 +
|is_archived=yes
 
}}
 
}}
  
 
=== Что это за проект? ===
 
=== Что это за проект? ===
Реализация библиотеки или консольной утилиты для автоматической настройки программ (autotuner). На вход автотюнеру передаются программа, оптимизируемые параметры (например, флаги компилятора, число потоков, размер подзадач) и критерии оптимальности (например, время выполнения программы, используемый объем памяти, энергопотребление). Результатом работы автотюнера являются наилучшие значения параметров при заданных критериях. Полезность подобных систем очевидна, например они используются для оптимизации выполнения программ на параллельных, встраиваемых и облачных системах. Основные сложности при реализации автотюнеров связаны с большим числом комбинаций параметров (полный перебор работает долго) и невозможностью использования аналитических методов оптимизации (программа и вычислительная система являются "черными ящиками").
+
Реализация библиотеки для автоматической настройки программ (autotuner). На вход автотюнеру передаются программа, оптимизируемые параметры (например, флаги компилятора, число потоков, размер подзадач) и критерии оптимальности (например, время выполнения программы, используемый объем памяти, энергопотребление). Результатом работы автотюнера являются наилучшие значения параметров при заданных критериях. Полезность подобных систем очевидна, например они используются для оптимизации выполнения программ на параллельных, встраиваемых и облачных системах. Основные сложности при реализации автотюнеров связаны с большим числом комбинаций параметров (полный перебор работает долго) и невозможностью использования аналитических методов оптимизации (программа и вычислительная система являются "черными ящиками").
  
 
=== Чему вы научитесь? ===
 
=== Чему вы научитесь? ===
* Реализация библиотек и консольных утилит на Python
+
* Создавать библиотеки (API) и консольные приложения (CLI) на Python
* Запуск и контроль выполнения внешних процессов
+
* Работать с процессами и потоками
* Методы black box оптимизации
+
* Реализовывать и использовать на практике методы оптимизации
* Многопоточное программирование
+
  
 
=== Какие начальные требования? ===
 
=== Какие начальные требования? ===
* Программирование на Python
+
* Программирование на Python (в рамках прослушанного курса)
* Умение работать с Linux
+
* Умение работать с Linux (желательно)
  
 
=== Какие будут использоваться технологии? ===
 
=== Какие будут использоваться технологии? ===
Строка 27: Строка 27:
  
 
=== Темы вводных занятий ===
 
=== Темы вводных занятий ===
* Обзорная лекция по автотюнерам и применяемым в них методам оптимизации
+
* Python: работа с процессами и потоками, реализация библиотек и консольных программ
 +
* Автотюнеры: обзор систем и применяемых методов оптимизации
  
 
=== Направления развития ===
 
=== Направления развития ===
* Поддержка различных методов оптимизации
+
* Реализация различных методов оптимизации
* Распараллеливание (потоки, несколько серверов)
+
* Поддержка других типов параметров (кроме числовых) и критериев (кроме времени выполнения)
 +
* Распараллеливание измерений (потоки, несколько машин)
 +
* Обмен данными между методами
 
* Оптимизация по нескольким критериям
 
* Оптимизация по нескольким критериям
 
* Создание веб-сервиса и веб-интерфейса
 
* Создание веб-сервиса и веб-интерфейса
 +
* Визуализация результатов
  
 
=== Критерии оценки ===
 
=== Критерии оценки ===
* 4-5 - автотюнер с полным перебором и случайным поиском
+
* 4-5 - реализация библиотеки с поддержкой числовых параметров, измерением времени выполнения и простейшими методами (полный перебор, случайный поиск)
* 6-7 - реализация одного из методов оптимизации
+
* 6-7 - реализация одного из методов оптимизации, реализация интерфейса командной строки и чтения конфигурации из файла
* 8-10 - параллельный запуск нескольких методов
+
* 8-10 - поддержка одновременного использования нескольких методов, распараллеливание измерений

Текущая версия на 10:39, 20 октября 2015

Ментор Олег Сухорослов
Учебный семестр Весна 2015
Учебный курс 1-й курс
Проект можно развивать на летней практике


Внимание! Данный проект находится в архиве и реализован не будет.

Что это за проект?

Реализация библиотеки для автоматической настройки программ (autotuner). На вход автотюнеру передаются программа, оптимизируемые параметры (например, флаги компилятора, число потоков, размер подзадач) и критерии оптимальности (например, время выполнения программы, используемый объем памяти, энергопотребление). Результатом работы автотюнера являются наилучшие значения параметров при заданных критериях. Полезность подобных систем очевидна, например они используются для оптимизации выполнения программ на параллельных, встраиваемых и облачных системах. Основные сложности при реализации автотюнеров связаны с большим числом комбинаций параметров (полный перебор работает долго) и невозможностью использования аналитических методов оптимизации (программа и вычислительная система являются "черными ящиками").

Чему вы научитесь?

  • Создавать библиотеки (API) и консольные приложения (CLI) на Python
  • Работать с процессами и потоками
  • Реализовывать и использовать на практике методы оптимизации

Какие начальные требования?

  • Программирование на Python (в рамках прослушанного курса)
  • Умение работать с Linux (желательно)

Какие будут использоваться технологии?

  • Python
  • git

Темы вводных занятий

  • Python: работа с процессами и потоками, реализация библиотек и консольных программ
  • Автотюнеры: обзор систем и применяемых методов оптимизации

Направления развития

  • Реализация различных методов оптимизации
  • Поддержка других типов параметров (кроме числовых) и критериев (кроме времени выполнения)
  • Распараллеливание измерений (потоки, несколько машин)
  • Обмен данными между методами
  • Оптимизация по нескольким критериям
  • Создание веб-сервиса и веб-интерфейса
  • Визуализация результатов

Критерии оценки

  • 4-5 - реализация библиотеки с поддержкой числовых параметров, измерением времени выполнения и простейшими методами (полный перебор, случайный поиск)
  • 6-7 - реализация одного из методов оптимизации, реализация интерфейса командной строки и чтения конфигурации из файла
  • 8-10 - поддержка одновременного использования нескольких методов, распараллеливание измерений