Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Safonov / AMPN_course_21.pptx
Скачиваний:
139
Добавлен:
16.04.2015
Размер:
215.69 Кб
Скачать

Асинхронные делегаты

Вызов любого синхронного метода в асинхронном стиле

Компилятор генерирует асинхронные методы

BeginInvoke и EndInvoke

Вызов следует шаблону проектирования

Запуск операции с помощью BeginInvoke

Использование callback или опроса при ожидании завершения

Вызов EndInvoke для получения результата

(C)Сафонов В.О. 2012

Технологии параллельного

программирования Microsoft. Проект Dwarfs

OpenMP – реализация для Visual C++ прагматов стандарта OpenMP (например: #pragma OMP parallel)

MPI.NET – реализация для .NET технологии параллельного программирования MPI, основанной на обмене сообщениямиДругие технологии параллельного программирования (Visual Studio 2008/2010): TPL, PPL

Для демонстрации преимуществ данных технологий был выполнен open source- проект Parallel Dwarfs (совместно фирмой Microsoft и СПбГУ): Реализация параллельных алгоритмов для решения 13 классических задач прикладной математики с помощью технологий параллельного программирования Microsoft на языках C++ (unmanaged-код), C#, F#

Сайт проекта: http://paralleldwarfs.codeplex.com

(C) Сафонов В.О. 2012

Классы для отладки и

трассировки

Местонахождение

Пространство имен System.Diagnostics

Trace

Debug

Функциональность зависит от флагов

Trace: только трассировка

Debug: трассировка и отладка

(C) Сафонов В.О. 2012

Программная модель

Четыре метода

Write, WriteIf, WriteLine, WriteLineIf

Методы *If исполняются, только если первый аргумент положителен

Управление условием

Падение производительности при использовании *If

(C) Сафонов В.О. 2012

Управление

В процессе коллективной разработки эффективность ухудшается

Слишком много данных

Для управления потоком данных

Класс TraceSwitch

Несколько уровней отладочных печатей

0 – Печать отключена

1 – Только ошибки

2 – Предупреждения и ошибки

3 – Информация (а также ошибки и предупреждения)

4 - Детальная (все виды трассировки включены)

(C)Сафонов В.О. 2012

Использование TraceSwitch

public static void Main()

{

TraceSwitch switch =

new TraceSwitch(“SimpleSwitch",

"Example Switch");

Trace.WriteLineIf(switch.TraceError,

"Error tracing is on!") ;

Trace.WriteLineIf(switch.TraceWarning,

"Warning tracing is on!") ;

Trace.WriteLineIf(switch.TraceInfo,

"Info tracing is on!") ;

Trace.WriteLineIf(switch.TraceVerbose,

"VerboseSwitching is on!") ;

}

(C) Сафонов В.О. 2012

Настройка

TraceSwitch

Настройка конфигурационного файла

в формате XML

Имя файла: <program>.EXE.CONFIG

“name” – имя переключателя

“value” – числовое значение

(C)Сафонов В.О. 2012

Настройка TraceSwitch

<?xml version="1.0" encoding="UTF-8" ?>

<configuration>

<system.diagnostics>

<switches>

<add name="SimpleSwitch" value="4" />

<add name="AnotherSwitch" value="0" />

</switches>

<!– The optional stuff -->

<trace autoflush="true" indentsize="4" />

</system.diagnostics>

</configuration>

(C) Сафонов В.О. 2012

Сравнение с Java

В Java (начиная с версии 1.4) реализована следующая возможность, которую можно использовать для отладки и трассировки:

assert (Condition);

Если Condition ложно, бросается исключение

Намного менее гибкий механизм, чем API для отладки и трассировки, предоставляемый .NET

(C) Сафонов В.О. 2012

Вопросы и домашнее задание к лекции 21

Скачайте программный комплекс Parallel Dwarfs с сайта http://paralleldwarfs.codeplex.comИнсталлируйте его и запустите на Вашем компьютере, используя инструмент DwarfBench (входящий с состав комплекса)

Для сравнения, пропустите его также на имеющемся у Вас вычислительном кластере или более мощном компьютере с возможностью распараллеливания программ (multi-core)Сравните полученные результаты

Изучите параллельное программирование в .NET на примерах его использования в исходных кодах Parallel Dwarfs

(C) Сафонов В.О. 2012

Соседние файлы в папке Safonov