cell и mc#
TRANSCRIPT
“Система высокоуровневого параллельного
программирования MC# для вычислительных
архитектур на базе процессора Cell”
Петров Александр
РГАТА, СКБ ИТ СУ
Актуальность
Основная причина недостаточного внедрения процессора Cell в практику высокопроизводительных вычислений – отсутствие достаточного количества
системного и прикладного
программного обеспечения.
Актуальность
Разработка прикладного ПО для Cell является трудоемкой задачей в силу
специфики самой архитектуры процессора,
ограниченного набора средств его программирования, включающего компиляторы с языков C++ и Фортран и библиотеку libspe2 для управления SPE-процессорами.
Альтернативный инструментарий
Высокоуровневые средства программирования для процессора Cell:
системы на базе языка C/C++, системы на базе байт-ориентированных
(managed) языков Java и C#.
С/С++
Система MARS ( Multicore Application Runtime System ) – библиотека для построения приложений для процессора Cell в терминах “задач” (tasks), автоматически распределяемых по SPE-процессорам во время исполнения планировщиком.
Java Virtual Machine и Cell BE
Системы на базе языка Java: CellVM ( University of California, Irvine ) Cacao VM for Cell ( IBM ).
Состояние реализации – прототип.
.NET Framework и Cell BE
Система на базе языка C# - CellDotNetCellDotNet: JIT-компилятор для генерации кода для SPE-
процессоров, Runtime-система поддержки исполнения C#-
программ на PPE- и SPE-процессорах Библиотека CellDotNet сама полностью написана
на C# и базируется на системе Mono – свободной реализации платформы .NET для Linux.
Почему не только C++ + libspe2
Цели переноса байт-ориентированных систем программирования на платформу Cell:
имеется достаточно большое количество приложений, написанных на языках Java и C#, например, финансовых приложений, которые, будучи портированными на Cell, будут более быстродействующими в несколько раз.
Цель проекта =
Адаптация системы программирования на базе высокоуровневого, объектно-ориентированного языка MC# (www.mcsharp.net), разработанного в Институте программных систем РАН (г.Переславль-Залесский), к вычислительным архитектурам на базе процессора Cell, включая кластерные системы.
+ CellCell BE BE
Идея проекта
Базовый механизм параллельности в языке MC# async- методы movable- методы взаимодействие посредством каналов и
обработчиков.Основная идея адаптации – введение нового
модификатора spe в объявлении метода, предназначенного для выполнения на SPE-процессоре.
База адаптации – библиотека CellDotNet.
Пример
public async aintegrate ( int seed, int iterations, channel (float) sendResult )
{sendResult ! ( integrate ( seed, iterations ) );
}
public spe float integrate ( int seed, int iterations ){
< Тело метода >}
Преимущества принятого подхода
сокрытие подробностей использования библиотеки CellDotNet от прикладного программиста;
сохранение единой асинхронной модели программирования, принятой в языке MC#.
Цели начального проекта
а) проверка работоспособности системы Mono на серверах QS;
б) определение функциональных возможностей и доработка библиотеки CellDotNet;
c) разработка тестовых последовательных и параллельных приложений на языках C# и MC#, соответственно.
Результаты
доработана библиотека CellDotNet (в оригинальном виде она разрабатывалась и тестировалась на PlayStation 3 и была неработоспособна на серверах QS),
разработано несколько тестовых параллельных приложений на языке MC# (пока без доработки MC#-компилятора – необходимые операторы для запуска SPE-метода готовятся самим программистом внутри async-метода).
Последовательные программы на языке C#
Sparse Matrix Multiply ( умножение разреженной матрицы на вектор)
Параллельные программы на языке MC#
Численное интегрирование – вычисление числа π методом Монте Карло
(2 000 000 000 итераций)
Параллельные программы на языке MC#
Задача NQueens – расстановка ферзей на доске N x N:
(N=17)
Параллельные программы на языке MC#
Вычисление множества Мандельброта (построение фрактала)
Ложка дег тя наличие ошибок в ядре Linux, влияющих на
работоспособность системы Mono на процессоре PowerPC;
исходная неработоспособность библиотеки CellDotNet на серверах QS;
ограниченность средств языка, поддерживаемых в текущей версии библиотеки CellDotNet;
отсутствие возможности доступа на 2 или более машины с процессором Cell ( и Mono версии 1.9.1) для тестирования кластерных MC#-приложений.
Перспективы
доработка библиотеки CellDotNet для повышения ее эффективности и расширение набора поддерживаемых средств языка C#,
CELL ClustersCELL Clusters: тестирование распределенных MC#-приложений на кластере из Cell-машин,
разработка новых приложений, включая простой рендеринг изображений на основе трассировки лучей,
доработка компилятора MC# для поддержки spe-методов.