Bernd Marquardt Software+Consulting. Einführung Download, Voraussetzungen, Installation Parallelerweiterungen für das Framework Schleifen parallelisieren.

Slides:



Advertisements
Ähnliche Präsentationen
Be.as WEB Technologie
Advertisements

Anbindung mobiler Endgeräte über den Terminal Service
Visual C# Programmieren mit dem Visual Studio. Was ist C#? Programmiersprache von Microsoft Einfach zu erlernen Vielfältige Möglichkeiten Basierend auf.NET.
Multithreading mit .NET Jetzt besonders günstig in allen Sprachen
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Design- und Entwicklungswerkzeuge
Was ist neu in VS 2003 ? Ein Überblick. Bernd Marquardt Software & Consulting
Web Matrix Project Kurzüberblick Dirk Primbs Technologieberater Developer Platform Strategy Group Microsoft Deutschland GmbH.
<<Presentation Title>>
OpenMP Präsentation im Rahmen des Seminars
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Wizards & Builders GmbH Microsoft Titel Microsoft-Titel für Entwickler und Softwarehäuser.
Visual FoxPro 10.0 Visual Extend 10.0
Erstellen von WebServices mit Visual FoxPro 9.0
Uwe Habermann WPF Avalon Formulare aus VFP verwenden Venelina Jordanova
MSDN Webcast: VB. NET für Einsteiger und Umsteiger Einführung in VB
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 7 Strukturierte Ausnahmebehandlung (Level 100) Presenter: Daniel Walzenbach Technologieberater.
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 10 Die erste, eigene Klassenbibliothek (Level 100) Presenter: Daniel Walzenbach Technologieberater.
Presenter: Daniel Walzenbach Technologieberater
MSDN Webcast: VB.NET für Einsteiger und Umsteiger, Teil 9 Zeichenketten, Delegates und Events (Level 100) Presenter: Daniel Walzenbach Technologieberater.
Entwicklung verteilter eingebetteter Systeme - Einführung
Einstellungen im Web für Outlook
Duo- und Quad Prozessor-Architektur
Stand: November Anforderungen an Systemumgebung und Hardware Anmerkung Gollas, Schulamt Freising: Für unsere Schulen kommt eine Mehrplatz Installation.
Performance-Steigerung durch schnelle Festplatten Ulrich Dinger.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 4 Folie 2 Message Passing mittels Sockets (1) s.a.
Parallelprogrammierung mit der TPL und .NET 4.0
Arbeiten mit der neuen Versionsverwaltung im TFS
Silverlight Eine Einführung. Agenda 1.Was ist Silverlight? 2.Die Silverlight Philosophie 3.Vorstellung des Szenarios 4.Einführendes Beispiel 5.Konzepte.
Clustered Neuronal Network A C#.NET project for Compute Cluster Server 2003.
Clustered Neuronal Network A C#.NET project for Compute Cluster Server 2003.
SQL Server 2005 CLR-Integration
Data Mining mit SQL Server 2008 und Excel 2007
Michael Köster User Experience Specialist Microsoft Corporation.
Consulting and Solutions.NET Vortragsreihe – Vorstellung der Referenten Happy Arts Software Markus Kämmerer IT-Erfahrung seit 1987,
SQL Server Grundlagen für den Teilzeit-DBA
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Windows Server 2008 R2 Active Directory
Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH Christian Weyer Solutions Architect thinktecture.
TechNet Schweiz – Herzlich Willkommen Microsoft Forefront Identity Manager 2010 R2 - effektives und nachhaltiges IT Service Management 2. Dezember 2011.
TechNet Schweiz – Herzlich Willkommen Unified Communication: Neuigkeiten zu Exchange, Lync und Windows Phone November 2011 André Hagmann, Microsoft.
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 ADO.NET s.a:
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
Entwicklung verteilter Anwendungen II, SS 13 Prof. Dr. Herrad Schmidt SS 13 Kapitel 2 Folie 2 ASP.NET HTTP-Handler (1)
Connect Event Vortrag vom bei der FoxPro User Group Schweiz © Marc Voillat, Interbrain AG, 8048 Zürich.
Parallel Matrix Multiplication
CGI (Common Gateway Interface)
… und was man damit machen kann.
Ein Vortrag von Simon Bayer
Partner ready ppt Software Assurance Benefits 3.5 Software Assurance Änderungen wirksam zum 11. November 2007 Katharina Hensle, Software Assurance Lead.
Praktikum 27. Juni 2003 Projekt. Einführung Das Praktikum endet mit einem Projekt: Erstellt einen Kneipenführer! Am Ende wird der Kneipenführer vielleicht.
Warum IIS? Best of Microsoft Webserver
Parallelisierung für Multiprozessor-Maschinen Teil 2.
Parallelisierung für Multiprozessor-Maschinen
Ingo Rammer thinktecture.
Parallele Programmierung im.NET Framework Darmstadt, Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,
Mit IT IS enbex Hand in Hand Zeitgemäße Unternehmen sind auf schnellen und sicheren Datenaustausch angewiesen IT IS AG.
Swiss TechNet Events Herzlich Willkommen Projektmanagement mit Project Server Juni 2014 Matthias Jäger, The Project Group (TPG) Martin Laukkanen,
Christian Binder Senior Platform Strategy Manager Microsoft Deutschland GmbH.
TechNet Schweiz – Herzlich Willkommen SQL Server 2012 – Was ist neu? 6. Dezember 2011 Roger Breu, Microsoft Bernd Schneider, Microsoft Dr. Bernd Kiupel,
Enterprise Search - René Knöfel tech.days h.
Microsoft Student Partner
Artiso solutions GmbH | Oberer Wiesenweg 25 | Blaustein | Advanced UI-Testing für WPF.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
Workshop 1 Getting Started 2016 Boris Wylutzki
 Präsentation transkript:

Bernd Marquardt Software+Consulting

Einführung Download, Voraussetzungen, Installation Parallelerweiterungen für das Framework Schleifen parallelisieren Codeblöcke parallelisieren Tipps und Tricks Was geht und was geht nicht? Beispiele und Performance

Environment-Variablen Die Klasse Task Die Klasse Future Concurrent Exceptions Synchronisierung Zusammenfassung

Bisher: Alle 2-3 Jahre wurden die CPUs doppelt so schnell Davon haben unsere Programme automatisch etwas Deutlich sichtbar bei mathematischen Berechnungen, weniger sichtbar bei UI- Angelegenheiten Performance-optimiertes Programmieren wird in Zukunft immer wichtiger werden!

Intel Clock Speed Quelle: Intel, Wikipedia

Prozessor-Takt bleibt bei 3 – 4 GHz stehen Mehr geht nicht: Kühlung wird schwierig Eigentlich müssten unsere CPUs jetzt ca. 50 GHz können Anzahl der Transistoren auf einem Chip steigt aber weiter an Resultat: Multi-Core CPUs kommen immer stärker Mehrere CPUs auf einem Chip

Programmierung für Multi-Core CPUs Multi-Processing (gibt uns das Betriebssystem) Multi-Threading (müssen wir im Moment noch selbst programmieren) Wir müssen unsere Programme anpassen, sonst haben wir nichts von den Multi-Core- CPUs Performance- und Parallel-Überlegungen kommen also jetzt in Mode

Aber Achtung: Bei mehreren PROZESSEN haben wir automatisch etwas von den Mehrkernprozessoren Wenn wir in EINER ANWENDUNG alle Kerne ausnutzen wollen, müssen wir etwas dafür programmieren

Möglichkeiten und Anwendungsbereiche der Multithreading-Technologie: Verkürzung der Antwortzeiten einer Anwendung Erhöhung des Durchsatzes einer Anwendung …das geht auch auf Single-Core-Systemen Erhöhung der Performance der Berechnungen in einer Anwendung …das geht nur durch Parallelprogrammierung auf Multi-Core-Systemen (mit einigen kleinen Ausnahmen)

Andere Parallelisierungs-Technologien: Multithreading, Threadpool Managed und unmanaged Code OpenMP (C, C++, FORTRAN) Managed und unmanaged Code MPI und MPI.NET (Message Passing Interface) (C, C++, FORTRAN,.NET) NEU: Parallel Extensions for.NET Task Parallel Library (TPL) Eine Erweiterung für.NET-Sprachen Nur managed Code

ACHTUNG: Normale Multithread-Programmierung ist NICHT einfach! Höherer Aufwand Debugging Fehlersuche Testing Synchronisierung Planung

Download CTP unter: px?FamilyId=348F73FD-593D-4B3C-B C50D2B0F3&displaylang=en Google-Suche: Task Parallel Library Download Visual Studio 2010 beta

Ideal ist ein Rechner mit mehreren Prozessoren Gut zum Testen (mit und ohne Parallelisierung) Geschwindigkeit (Taktfrequenz) spielt beim Testen eher eine untergeordnete Rolle Normal RAM (VS 2008) Ein bisschen Festplatte

Nur mit Visual Studio 2008.NET Framework 3.5 Betriebssystem: Windows Server 2003 Windows XP Windows Vista Windows 7

Es gibt zwei Möglichkeiten: System.Linq.ParallelEnumerable-Klasse AsParallel-Erweiterungsmethode Ziel: Parallele Datenabfragen mit LINQ Sehr einfach WAS-Programmierung statt WIE- Programmierung Hinweis: Referenz auf System.Threading.Dll einfügen

Wichtige Klasse: System.Threading.Parallel Schleifen werden aufgeteilt auf mehrere Threads Das geht nur, wenn die einzelnen Schleifendurchläufe unabhängig voneinander sind Problem z.B.: a[i] = a[i – 1] * 2 Indices in der Schleife müssen gleich sein Parallel.For und Parallel.ForEach

Achtung: Was passiert mit sogenannten unausgewogenen Schleifen? Beispiel: for(int i = 0; i < 1000; i++) { if(i < 500) { DoLongCalculation(); } else { DoShortCalculation(); }

Schleifen werden nicht einfach halbiert Es werden kleine Bröckchen gemacht Sobald ein Thread fertig ist, bekommt er den nächsten Happen, bis die Arbeit komplett erledigt ist

Zusammenfassen von Ergebnissen Achtung: Meistens ist Locking erforderlich Typischer Anwendungsfall: double dSum = 0.0; for(int i = 0; i < 1000; i++) { dSum += Math.Sqrt(i); }

Zwischenwerte werden über sog. ThreadLocalState weitergegeben Ablauf: Vor der Schleifenabarbeitung: LocalState initialisieren Schleife abarbeiten: Im Thread rechnen, LocalState benutzen Nach der Schleifenabarbeitung: Aggregation (Zusammenfassung) der Ergebnisse (Achtung: Locking!!!)

int iSum = 0; Parallel.For(0, 1000, // From, To () => 0, // Init (i, state) => { // Loop body state.ThreadLocalState += i; }, (partSum) => { // Aggregation Interlocked.Add(ref iSum, partSum); });

Unabhängiger Code kann parallel ausgeführt werden Häufigstes Problem: Gleichzeitiger Zugriff auf die gleichen Daten (schreibend) Ohne Nachdenken geht da gar nichts! Wichtige Methode: Parallel.Invoke

Parallel.For und Parallel.ForEach: (Anzahl der Durchläufe * Dauer) muss groß genug sein Normalerweise sollte man die äußere Schleife parallelisieren Nicht zu viele Tasks erzeugen Möglichst wenig Synchronisierung verwenden Nicht vergessen: Amdahls Gesetz!

Innere und äußere Schleife Schleifendurchläufe mit stark unterschiedlicher Dauer Matrixmultiplikation Primzahlen berechnen

Größe SequentiellParallel ms ms ms ms ms ms ms

PLINQ_DOP DOP = degree of parallelism PLINQ_DOP = 1 Ein Thread wird benutzt PLINQ_DOP = 8 Acht Threads werden benutzt Wenn PLINQ_DOP > Prozessoren * Kerne, dann gibt es mehr Threads, als gleichzeitig benutzt werden können Vorteil: Wenn ein laufender Thread in den Wartezustand geht, kann ein anderer laufen…

Die Task-Klasse wird benötigt, um erweiterte Parallelisierungprobleme zu lösen Vergleichbar mit der ThreadPool-Klasse: …ist ähnlich wie: ThreadPool.QueueUserWorkItem(delegate { … }); Task.Create(delegate { … });

Wichtige Features: Synchronisierung von parallelen Ausführungseinheiten Abbrechen von Ausführungseinheiten Benutzung wie normale Threads Synchronisierung, Abbruch,…

Die Future-Klasse ist abgeleitet von der Task-Klasse Sie ermöglicht die asynchrone Berechnung von Daten Wenn später dann die berechneten Daten weiter benutzt werden sollen, wird geprüft, ob die Berechnung bereits abgeschlossen ist Sonst wird gewartet…. = Synchronisierung Kann man Future-Variablen in Anwendungen mit einer Benutzerschnittstelle benutzen?

In normalen, sequentiellen Anwendungen kann zu einer bestimmten Zeit maximal EINE Exception geworfen werden Bei parallelen Anwendungen können auch mehrere Exceptions geworfen werden Oft werden die Exceptions dann auch noch in einem anderen Thread verarbeitet, als in dem Thread, in dem sie geworfen wurden

Paralleler Code – Problem: Reihenfolge, mehrere Exceptions!! Darum gibt es einen anderen Exception- Mechanismus in den Parallel Extensions Wenn eine Exception im Parallel-Code auftritt, werden alle Threads - so schnell wie möglich - angehalten Achtung: In dieser Zeit können eventuell noch weitere Exceptions auftreten!

Alle aufgetretenen Exceptions werden in einem Objekt der Klasse System.Threading.AggregateException eingesammelt Wenn alle Threads angehalten sind, dann wird die AggregateException neu geworfen und kann bearbeitet werden Die einzelnen Exceptions können über das Property InnerExceptions abgefragt werden (eine Collection der aufgetretenen Exceptions)

Welche Klassen werfen AggregateException-Objekte? Die Parallel-Klasse Die Task-Klasse Die Future-Klasse Parallel LINQ (Abfragen)

Barrier CountDownEvent LazyInit ManualResetEventSlim SemaphoreSlim SpinLock SpinWait WriteOnce Collections

Es gibt neue Möglichkeiten, um Code zu parallelisieren Wir müssen keine Threads mehr explizit erzeugen Schleifen sind einfach zu parallelsieren Code ist besser zu lesen, als mit einzelnen Threads Auch Codeblöcke kann man einfach paralellisieren

Trotzdem gibt es Fälle, bei denen eine Parallelisierung nichts bringt Testen, Prototyp erstellen Ggf. seriellen Code verwenden Die Klassen Task und Future ermöglichen die präzisere Steuerung des parallelen Codes Parallel Linq bietet einfachere Möglichkeiten der parallelen Programmierung, als die bisherige Anwendung von normalen Threads

Presentations TechDays: MSDN Events: MSDN Webcasts: MSDN Events MSDN Events: Save the date: TechEd 2009 Europe, 9-13 November 2009, Berlinhttp:// MSDN Flash (our by weekly newsletter) Subscribe: MSDN Team Blog RSS: Developer User Groups & Communities Mobile Devices: Microsoft Solutions User Group Switzerland: Managed User Group of Switzerland: FoxPro User Group Switzerland:

Presentations TechDays: TechNet Events TechNet Events: Save the date: TechEd 2009 Europe, 9-13 November 2009, Berlinhttp://technet.microsoft.com/de-ch/bb aspx TechNet Flash (our by weekly newsletter) Subscribe: Schweizer IT Professional und TechNet Blog RSS: IT Professional User Groups & Communities SwissITPro User Group: NT Anwendergruppe Schweiz: PASS (Professional Association for SQL Server):

7. – 8. April 2010 Congress Center Basel

Classic Sponsoring Partners Media Partner Premium Sponsoring Partners