|
||||||
Подсказка
Текущее состояние проекта может быть получено из Subversion репозитория. В будущем мы обеспечим доступ к устоявшейся версии исходных файлов. Версия в виде бинарного кода не будет доступна, так как многопроцессорные системы очень сильно различаются. Если Вы нуждаетесь в последней версии исходных кодов, Вы можете напечатать в консоли «svn co https://parus.svn.sourceforge.net/svnroot/parus/trunk/parus parus» Ссылки
Проект разрабатывается в МГУ в рамках этого семинара. Информация о проекте на Sourceforge. Администратор проекта: Алексей Сальников. Однако при написании параллельной программы для обеспечения эффективности работы полученной реализации и достижения сбалансированности нагрузки на процессоры и коммуникационную среду многопроцессорной системы приходится учитывать массу деталей: как минимум пропускную способность канала между парой процессоров и производительность каждого из процессоров, если множество процессоров разнородно. C целью облегчения человеку написания параллельной программы популярен подход создания программных надстроек над MPI и OpenMP. Эти надстройки пытаются изолировать пользователя от части проблем, связанных с параллельным программированием для многопроцессорных систем. К таким средствам можно отнести DVM, Cilk, PETSc, а также создаваемое автором в коллективе разработчиков инструментальное средство для написания программы как графа зависимости по данным PARUS. Написание программы как графа зависимости по данным обладает некоторым преимуществом. В случае распараллеливания задачи очень крупными блоками бывает достаточно удобно декларировать связи между блоками, а затем каждый такой блок выполнять на своём подмножестве процессоров многопроцессорной системы. Алгоритм решаемой задачи представляется в виде ориентированного графа, где в вершинах сосредоточены вычислительные операции (действия над данными), а рёбра задают зависимости по данным. При этом дуга направлена от вершины-источника данных, к вершине, принимающей данные. Предполагается, что вершина, принимающая данные, будет как-то их использовать, и вырабатывать, на основе полученных, новые данные, которые затем будут использоваться другими вершинами графа. Таким образом, программа описывается как сеть с вершинами-истоками (в этих вершинах чаще всего происходит чтение входных данных из файлов), внутренними вершинами (в них происходит обработка данных), и вершинами-стоками, в которых обычно происходит запись результатов в файлы. Граф затем преобразуется в программу на C++ с MPI вызовами. Полученная таким образом программа в процессе исполнения на многопроцессорной системе будет пытаться минимизировать как накладные расходы на передачу данных, так и время исполнения своего кода путём выбора процессора для каждой вершины графа. Одной из целей деятельности было исследование применимости подхода к написанию параллельной программы как графа зависимости по данным на следующих примерах: искусственной нейронной сети, параллельного персептрона, параллельного частотного фильтра звуковых сигналов, задаче организации распределённой операции над большим массивом данных. Результаты тестирования показали, что данный подход имеет практическую ценность. |
||||||
Главная страница
Ресурсы SourceForgeСписок публикаций Руководство Внешние ссылки |
||||||
Администратор: Алексей Сальников |