Многопоточная реализация непараметрического алгоритма кластеризации Affinity Propagation (проект) — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Новая страница, с помощью формы Новый_проект)
 
Строка 2: Строка 2:
 
|name=Многопоточная реализация непараметрического алгоритма кластеризации Affinity Propagation
 
|name=Многопоточная реализация непараметрического алгоритма кластеризации Affinity Propagation
 
|mentor=Залевский Артур
 
|mentor=Залевский Артур
|mentor_login={{URLENCODE:Vita Stepanova|WIKI}}
+
|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, версию для разреженных матриц