Многопоточная реализация непараметрического алгоритма кластеризации Affinity Propagation (проект) — различия между версиями
Строка 1: | Строка 1: | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
=== Что это за проект? === | === Что это за проект? === |
Текущая версия на 17:52, 18 декабря 2014
Содержание
Что это за проект?
Есть такой замечательный алгоритм 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, версию для разреженных матриц