hpc summer school parallel extensions for visualization

11
PARALLEL EXTENSIONS В ЗАДАЧАХ ВИЗУАЛИЗАЦИИ НАУЧНЫХ ДАННЫХ HPC Summer School Москва, 2009

Upload: michael-karpov

Post on 24-May-2015

526 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Hpc summer school   parallel extensions for visualization

PARALLEL EXTENSIONS В ЗАДАЧАХ ВИЗУАЛИЗАЦИИ НАУЧНЫХ ДАННЫХHPC Summer School

Москва, 2009

Page 2: Hpc summer school   parallel extensions for visualization

ПРИЧИНЫ ИСПОЛЬЗОВАНИЯ ПАРАЛЛЕЛИЗМА В ЗАДАЧАХ ВИЗУАЛИЗАЦИИ

Большой объем данных для визуализации. Алгоритмы визуализации часто имеют

нелинейную сложность. Рост вычислительных возможностей

компьютеров за счет увеличения количества ядер процессора или процессоров.

Page 3: Hpc summer school   parallel extensions for visualization

ИСПОЛЬЗОВАНИЕ ПОТОКОВ SYSTEM.THREADING.THREAD

Старый подход .NET Framework к созданию параллельных программ.

Большое количество потоков создает нагрузку на систему и снижает ее производительность.

Нет диспетчера потоков. Плохая масштабируемость программы. Недостаточный набор средств

синхронизации потоков.

Page 4: Hpc summer school   parallel extensions for visualization

PARALLEL EXTENSIONS TO THE .NET FRAMEWORK

Новая удобная модель программирования параллельных приложений.

Хорошая масштабируемость программ через увеличение количества ядер процессора или процессоров.

Parallel LINQ – декларативный параллелизм.

Параллелизм циклов обработки данных. Параллелизм, основанный на задачах. Диспетчер задач.

Page 5: Hpc summer school   parallel extensions for visualization

PARALLEL EXTENSIONS:ОСНОВНЫЕ ВОЗМОЖНОСТИ

Параллельные циклы (Parallel.For, Parallel.Foreach)

Задачи (Task, Future<T>) Средства синхронизации (CountdownEvent, SpinLock)

Потокобезопасные структуры данных (ConcurrentQueue<T>, ConcurrentStack<T>, BlockingCollection<T>)

(см. примеры в Parallel Extensions.sln/Samples)

Page 6: Hpc summer school   parallel extensions for visualization

ВИЗУАЛИЗАЦИЯ POINTSET НА ОСНОВЕ DYNAMICDATADISPLAY

(см. пример в Parallel Extensions.sln/PointSet/PointSetApp)

Page 7: Hpc summer school   parallel extensions for visualization

АЛГОРИТМ ТАКСОНОМИИ FOREL

Выделяет сферические группы «близких» объектов.

Page 8: Hpc summer school   parallel extensions for visualization

ПАРАЛЛЕЛИЗАЦИЯ POINTSET

Проекты Parallel Extensions.sln/PointSet: PointSetClusteringApp: добавлена

кластеризация точек перед рендерингом. Содержит 2 варианта алгоритма FOREL – без предварительного разбиения и с разбиением.

PointSetClusteringAppfor: добавлен параллелизм цикла построения кластера (для FOREL без разбиения).

PointSetClusteringAppTPLSubDiv: добавлен параллелизм построения кластеров внутри областей разбиения.

Page 9: Hpc summer school   parallel extensions for visualization

СРАВНИТЕЛЬНЫЕ РЕЗУЛЬТАТЫ

Циклы FOR

Полное время кластеризации

Rendering

PointSet с кластеризацией

6,2 с 6,3 с 1,0 с

Параллельный PointSet (2 ядра)

4,4 с 4,7 с 1,1 с

Параллельный PointSet (4 ядра)

3,0 с 3,4 с 1,1 с

Результаты даны для визуализации данных из файла Data\hpc_crop_area_x30.csv, содержащего 91,326 точек, расположенных на территории США.

Разрешение: 1280 x 1024.

Page 10: Hpc summer school   parallel extensions for visualization

ССЫЛКИ

Parallel Extensions to the .NET Framework: June 2008 CTP Часть .NET Framework 4.0 and the Microsoft

Visual Studio 2010 Optimize Managed Code For Multi-Core Machines

FOREL (алгоритм таксономии). DynamicDataDisplay (элемент управления

WPF для визуализации научных данных).

Page 11: Hpc summer school   parallel extensions for visualization

ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

Модифицировать реализацию алгоритма FOREL в проекте PointSetClusteringAppTPLSubDiv (файл ForelAlgorithmTPL.cs) таким образом, чтобы разбиение исходной области данных было адаптивным, т.е. каждая область, полученная в результате разбиения, содержала примерно одинаковое количество точек, и тем самым выровнять сложность отдельных заданий и повысить эффективность распараллеливания алгоритма.

Совет по реализации. После выполнения начального разбиения можно вычислить среднее количество точек на область, и внутри областей, содержащих слишком много точек, выполнить дополнительное разбиение.Для сохранения результатов задания можно ввести

дополнительное поле в класс ForelTask: ValuePoint[] TaskResult. Эти массивы после выделения

кластеров должны быть объединены в один массив.