Многопоточная реализация непараметрического алгоритма кластеризации Affinity Propagation (проект) — различия между версиями
(Новая страница, с помощью формы Новый_проект) |
|||
Строка 2: | Строка 2: | ||
|name=Многопоточная реализация непараметрического алгоритма кластеризации Affinity Propagation | |name=Многопоточная реализация непараметрического алгоритма кластеризации Affinity Propagation | ||
|mentor=Залевский Артур | |mentor=Залевский Артур | ||
− | |mentor_login={{URLENCODE: | + | |mentor_login={{URLENCODE:Aozalevsky|WIKI}} |
|semester=Весна 2015 | |semester=Весна 2015 | ||
|course=1 | |course=1 |
Версия 19:06, 5 декабря 2014
Ментор | Залевский Артур |
Учебный семестр | Весна 2015 |
Учебный курс | 1-й курс |
Что это за проект?
Есть такой замечательный алгоритм Affiniti Propagation , однако существующие реализации на R и Python страдают недостатком производительности и, особенно, неэффективной работой с памятью, что особенно чувствуется при работе с big data. Поэтому мы реализовали прототип многопоточной версии с использованием Python, Cython и mpi4py, но хочется большей скорости и гибкости, особенно при работе суперкомпьютерах (в данный момент мы используем ресурсы суперкомпьютеров МГУ "Ломоносов" и "Чебышев").
Чему вы научитесь?
- Познакомитесь с различными методами кластерного анализа
- Получите опыт разработки многопоточных приложений для суперкомпьютеров
Какие начальные требования?
- Желание писать быстрый код
- Базовые знания ОС GNU/Linux.
- Знание Python, C/C++
- Желательно, знакомство с технологиями параллельного программирования
Какие будут использоваться технологии?
- mercurial/git
- Shell, Python, C/C++
- MPI
- HDF5
Темы вводных занятий
- Алгоритмы кластеризации
Направления развития
- Задокументировать и опубликовать весь код под одной из лицензий для СПО.
- Использовать гибридный параллелизм MPI/OpenMP/CUDA.
- Релизовать версию Affinity Propagation для разреженных матриц.
Критерии оценки
4-5 Переписать существующий прототип на C/C++, провести сравнение производительности с однопоточными реализациями и с прототипом на Python.
6-7 Задокументировать код и опубликовать под одной из лицензий для СПО. Реализовать возможность гибкого выбора типов данных для хранения в HDF5.
8-10 Реализовать гибридный параллелизм MPI/OpenMP/CUDA, версию для разреженных матриц