cell и mc#

20
Система высокоуровневого параллельного программирования MC# для вычислительных архитектур на базе процессора Cell” Петров Александр РГАТА, СКБ ИТ СУ [email protected]

Upload: alexander-petrov

Post on 27-Jul-2015

166 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Cell и MC#

“Система высокоуровневого параллельного

программирования MC# для вычислительных

архитектур на базе процессора Cell”

Петров Александр

РГАТА, СКБ ИТ СУ

[email protected]

Page 2: Cell и MC#

Актуальность

Основная причина недостаточного внедрения процессора Cell в практику высокопроизводительных вычислений – отсутствие достаточного количества

системного и прикладного

программного обеспечения.

Page 3: Cell и MC#

Актуальность

Разработка прикладного ПО для Cell является трудоемкой задачей в силу

специфики самой архитектуры процессора,

ограниченного набора средств его программирования, включающего компиляторы с языков C++ и Фортран и библиотеку libspe2 для управления SPE-процессорами.

Page 4: Cell и MC#

Альтернативный инструментарий

Высокоуровневые средства программирования для процессора Cell:

системы на базе языка C/C++, системы на базе байт-ориентированных

(managed) языков Java и C#.

Page 5: Cell и MC#

С/С++

Система MARS ( Multicore Application Runtime System ) – библиотека для построения приложений для процессора Cell в терминах “задач” (tasks), автоматически распределяемых по SPE-процессорам во время исполнения планировщиком.

Page 6: Cell и MC#

Java Virtual Machine и Cell BE

Системы на базе языка Java: CellVM ( University of California, Irvine ) Cacao VM for Cell ( IBM ).

Состояние реализации – прототип.

Page 7: Cell и MC#

.NET Framework и Cell BE

Система на базе языка C# - CellDotNetCellDotNet: JIT-компилятор для генерации кода для SPE-

процессоров, Runtime-система поддержки исполнения C#-

программ на PPE- и SPE-процессорах Библиотека CellDotNet сама полностью написана

на C# и базируется на системе Mono – свободной реализации платформы .NET для Linux.

Page 8: Cell и MC#

Почему не только C++ + libspe2

Цели переноса байт-ориентированных систем программирования на платформу Cell:

имеется достаточно большое количество приложений, написанных на языках Java и C#, например, финансовых приложений, которые, будучи портированными на Cell, будут более быстродействующими в несколько раз.

Page 9: Cell и MC#

Цель проекта =

Адаптация системы программирования на базе высокоуровневого, объектно-ориентированного языка MC# (www.mcsharp.net), разработанного в Институте программных систем РАН (г.Переславль-Залесский), к вычислительным архитектурам на базе процессора Cell, включая кластерные системы.

+ CellCell BE BE

Page 10: Cell и MC#

Идея проекта

Базовый механизм параллельности в языке MC# async- методы movable- методы взаимодействие посредством каналов и

обработчиков.Основная идея адаптации – введение нового

модификатора spe в объявлении метода, предназначенного для выполнения на SPE-процессоре.

База адаптации – библиотека CellDotNet.

Page 11: Cell и MC#

Пример

public async aintegrate ( int seed, int iterations, channel (float) sendResult )

{sendResult ! ( integrate ( seed, iterations ) );

}

public spe float integrate ( int seed, int iterations ){

< Тело метода >}

Page 12: Cell и MC#

Преимущества принятого подхода

сокрытие подробностей использования библиотеки CellDotNet от прикладного программиста;

сохранение единой асинхронной модели программирования, принятой в языке MC#.

Page 13: Cell и MC#

Цели начального проекта

а) проверка работоспособности системы Mono на серверах QS;

б) определение функциональных возможностей и доработка библиотеки CellDotNet;

c) разработка тестовых последовательных и параллельных приложений на языках C# и MC#, соответственно.

Page 14: Cell и MC#

Результаты

доработана библиотека CellDotNet (в оригинальном виде она разрабатывалась и тестировалась на PlayStation 3 и была неработоспособна на серверах QS),

разработано несколько тестовых параллельных приложений на языке MC# (пока без доработки MC#-компилятора – необходимые операторы для запуска SPE-метода готовятся самим программистом внутри async-метода).

Page 15: Cell и MC#

Последовательные программы на языке C#

Sparse Matrix Multiply ( умножение разреженной матрицы на вектор)

Page 16: Cell и MC#

Параллельные программы на языке MC#

Численное интегрирование – вычисление числа π методом Монте Карло

(2 000 000 000 итераций)

Page 17: Cell и MC#

Параллельные программы на языке MC#

Задача NQueens – расстановка ферзей на доске N x N:

(N=17)

Page 18: Cell и MC#

Параллельные программы на языке MC#

Вычисление множества Мандельброта (построение фрактала)

Page 19: Cell и MC#

Ложка дег тя наличие ошибок в ядре Linux, влияющих на

работоспособность системы Mono на процессоре PowerPC;

исходная неработоспособность библиотеки CellDotNet на серверах QS;

ограниченность средств языка, поддерживаемых в текущей версии библиотеки CellDotNet;

отсутствие возможности доступа на 2 или более машины с процессором Cell ( и Mono версии 1.9.1) для тестирования кластерных MC#-приложений.

Page 20: Cell и MC#

Перспективы

доработка библиотеки CellDotNet для повышения ее эффективности и расширение набора поддерживаемых средств языка C#,

CELL ClustersCELL Clusters: тестирование распределенных MC#-приложений на кластере из Cell-машин,

разработка новых приложений, включая простой рендеринг изображений на основе трассировки лучей,

доработка компилятора MC# для поддержки spe-методов.