Friday, March 28, 2008

Use-Cases und Problemstellungen im Bereich Nebenläufigkeit und Parallelisierung

Ich schreibe diesen Beitrag in deutscher Sprache, da ich alle betreffenden Diskussionen in letzter Zeit ausschließlich in meiner Muttersprache geführt habe. Sicher werde ich den Post demnächst auch in Englisch veröffentlichen. Ich habe die Thematik bereits mehrfach angerissen – „Wann ist welche Art von Parallelisierung sinnvoll und wann nicht?“. Diese Frage steht in engem Zusammenhang mit vielen Unschärfen in den Begrifflichkeiten. Ich möchte keinesfalls engagierte Entwickler davon abhalten, sich in dieser Herausforderung zu stellen. Aber ähnlich zum Lernkurven-Vergleich drängen sich auch hier Analogien mit dem Meilenstein Objektorientierung in der Softwareentwicklung auf. Es gibt Code der ist „dermaßen objektorientiert“ geschrieben, dass er unübersichtlich, kaum wartbar und nicht mehr weiterverwendbar ist. Ein typischer Fall, beim dem über das Ziel hinausgeschossen und damit die Objektorientierung konterkariert worden ist.
Was hat das mit Parallelisierung zu tun? Im Prinzip gilt auch hier der Ansatz: was ist die konkrete Anforderung und welche Use-Cases (Anwendungsfälle) lassen sich daraus ableiten? Wobei man die Zielplattform (Systemarchitektur) nicht vernachlässigen darf. Hier eine (nicht vollständige) Liste von Fragen, mit Hilfe derer man einer Lösung näher kommen kann:

  1. Wie sieht die HW-Architektur der Zielplattform aus (Schlüsselworte: Hyprerthreading, symmetrische oder asymmetrische MultiCore-CPU’s, Shared Memory, Distributed Memory)?
  2. Welches Betriebssystem mit welchen Laufzeitumgebungen und Programmiersprachen werden auf der Zielplattform eingesetzt? Dabei ist das Betriebssystem immer mehr zu vernachlässigen, da präemptives Multitasking heutzutage Allgemeingut ist und damit zumindest parallele Prozessausführung gegeben ist.
  3. Ist Performance die wichtigste nicht-funktionale Anforderung? Mit Performance sind in diesem Zusammenhang Datendurchsatz und Verarbeitungsgeschwindigkeit gemeint. Hier geht es auch um den Fakt, dass die Zeiten höherer Taktraten vorbei sind und der Cache leider nicht die Lösung aller Probleme darstellt.
  4. Haben die betreffenden Use-Cases einen synchronen oder asynchronen Charakter?
  5. Wie soll der Datenaustausch zwischen Ausführungsströmen (ich verwende diesen Begriff hier ganz bewusst) erfolgen und in welchem Umfang? Benötige ich Zugriff auf „shared“ Ressourcen und in welchem Umfang?

Ausgehend von der Beantwortung dieser Fragen kann eine Architektur entwickelt werden, die den Anforderungen genügt und die auf die richtigen Lösungen setzt. Richtig bedeutet in diesem Zusammenhang auch, dass die passenden Techniken verwendet werden um weitere nicht-funktionale Anforderungen wir Wartbarkeit, Erweiterbarkeit, Testbarkeit und Einfachheit (!) zu erfüllen. Ich möchte und kann an dieser Stelle keine Entscheidungsmatrix liefern; werde aber kurz ein paar Lösungsmöglichkeiten skizzieren.

  • Wenn Punkt 3 das entscheidende Kriterium ist, sollte eine gute Auslastung der zur Verfügung stehenden Rechenkerne das Ziel sein. Es gibt in diesem Fall immer noch die Möglichkeit, eine Lastverteilung der Prozesse als Lösung zu wählen. Sollte dies aufgrund der Problemstellung (Arithmetik, etc.) nicht möglich sein, muss der Weg über eine Verteilung der Threads gefunden werden. Hier bietet sich beispielsweise OpenMP an. Natürlich kann sich Punkt 3 auch mit Punkt 5 überlagern, wenn auf viele „shared“ Variablen zugegriffen werden muss. Es ist anzumerken, dass OpenMP uns nicht vor Race-Conditions oder Dead-Locks bewahrt.
  • Bezüglich Punkt 4 gibt es sicherlich die am weitesten entwickelten Lösungsmöglichkeiten und gute Chancen, diese Problemstellung umfassend zu lösen. Eine gute Entkopplung sowie asynchrone Kommunikationsmechanismen sind hier die Erfolgkriterien. Konkrete Anwendungsfälle existieren vor allem im Umfeld von Benutzerschnittstellen (UI’s) auf Clientsystemen. Ausführungsströme (z.B. Threads) in der Präsentationslogik sollten von der Geschäftslogik mithilfe geeigneter asynchroner Kommunikationsmechanismen getrennt werden, um gezielt eine lose Kopplung zu erreichen.Ich möchte noch anmerken, dass die Aufgabenstellung in Punkt 5 (Asynchronität) für mich nicht originär zur Problemdomäne Parallelisierung / Nebenläufigkeit gehört, in der Diskussion aber dort oft eingeordnet wird.
  • Punkt 5 ist sicherlich die komplizierteste Aufgabenstellung, da bisher nur wenig Unterstützung durch Entwicklungsumgebungen, Compilern und Frameworks vorliegt. Bis es diese gibt (beispielsweise auf der Grundlage von Konzepten des „Transactional Memory“) muss man noch mit all den Schwierigkeiten des „Lock-Free Programming“ leben. Dazu gehört natürlich ein ausgefeiltes Testkonzept, um Dead-Locks und Race-Conditions auf die Spur zu kommen. Generell kann ich hinsichtlich Punkt 5 nur empfehlen, Architektur und Design hinsichtlich alternativer Lösungsmöglichkeiten des Datenaustausches genau zu prüfen.


Natürlich ist anzumerken, dass es auch einen Mix an Lösungen geben kann. Als konkretes Beispiel im Hochleistungsrechnen sind Hybridanwendungen aus MPI (Message Passing Interface) und OpenMP zu nennen.

7 comments:

Anonymous said...

[url=http://firgonbares.net/][img]http://firgonbares.net/img-add/euro2.jpg[/img][/url]
[b]microsoft image software, [url=http://firgonbares.net/]office 2003 activation[/url]
[url=http://firgonbares.net/][/url] top rated educational software Pro 8
download filemaker pro 10 advanced [url=http://firgonbares.net/]microsoft office standard edition 2003 crack[/url] autocad lt 97 software
[url=http://firgonbares.net/]coreldraw graphics suite x4 v14.0.0.567 keymaker only-core[/url] microsoft office 2000 software
[url=http://firgonbares.net/]download office 2003 beta[/url] & software store
office enterprise 2007 activation [url=http://firgonbares.net/]school software discounts[/b]

Anonymous said...

[url=http://sunkomutors.net/][img]http://sunkomutors.net/img-add/euro2.jpg[/img][/url]
[b]kaspersky anit virus software problems, [url=http://sunkomutors.net/]become software reseller[/url]
[url=http://sunkomutors.net/][/url] buy photoshop 7.0 Acrobat Pro 8
software to store photos [url=http://sunkomutors.net/]what are the new features is adobe photoshop cs3[/url] nero 9 update
[url=http://sunkomutors.net/]adobe editing software[/url] education discounts software
[url=http://sunkomutors.net/]nero 9 cd key[/url] how to sale software
vista oem software [url=http://sunkomutors.net/]oem software[/b]

Anonymous said...

[url=http://sunkomutors.net/][img]http://sunkomutors.net/img-add/euro2.jpg[/img][/url]
[b]cheap educational software, [url=http://sunkomutors.net/]photo software to buy[/url]
[url=http://sunkomutors.net/][/url] purchase cheap software academic versions of software
compare educational software [url=http://sunkomutors.net/]Suite X4[/url] buy adobe photoshop and
[url=http://sunkomutors.net/]ball software price[/url] acdsee freeware
[url=http://sunkomutors.net/]osx address book into filemaker pro 9[/url] microsoft academic software
adobe acrobat pro 9 [url=http://sunkomutors.net/]phone shop software[/b]

Anonymous said...

[url=http://murudobaros.net/][img]http://murudobaros.net/img-add/euro2.jpg[/img][/url]
[b]teacher discount on microsoft office, [url=http://murudobaros.net/]educational software application[/url]
[url=http://murudobaros.net/]cheapest oem software[/url] new office software buy dreamweaver for
microsoft software licence [url=http://murudobaros.net/]discount software for schools[/url] inside sales software
[url=http://murudobaros.net/]software shop in london[/url] microsoft publishing software
[url=http://murudobaros.net/]edition software price[/url] software resellers canada
order software freeware [url=http://murudobaros.net/]office 2007 enterprise advantage crack[/b]

Anonymous said...

[url=http://bariossetos.net/][img]http://bariossetos.net/img-add/euro2.jpg[/img][/url]
[b]Finale 2009 FileMaker Pro, [url=http://bariossetos.net/]Software period[/url]
[url=http://bariossetos.net/][/url] place to buy computer software buy software uk
free virus scan software kaspersky [url=http://hopresovees.net/]free quick search gui for office 2003 files[/url] discount software sales
[url=http://hopresovees.net/]microsoft office discount for teachers[/url] gold price software
[url=http://vonmertoes.net/]school software purchase[/url] office enterprise 2007 win32 english
softwares for sale [url=http://vonmertoes.net/]le logiciel coreldraw[/b]

Anonymous said...

[url=http://vonmertoes.net/][img]http://hopresovees.net/img-add/euro2.jpg[/img][/url]
[b]cheap microsoft office home, [url=http://hopresovees.net/]how to buy software[/url]
[url=http://hopresovees.net/][/url] windows vista games insurance office software
student discount computer software [url=http://vonmertoes.net/]buy cheap microsoft software[/url] cheap software deals
[url=http://hopresovees.net/]Software Corel Cyberlink DVD[/url] nero 9 disk space reporting error
[url=http://vonmertoes.net/]office 2003 crack[/url] microsoft presentation software
software sales canada [url=http://bariossetos.net/]software discount software[/b]

Anonymous said...

[url=http://bariossetos.net/][img]http://hopresovees.net/img-add/euro2.jpg[/img][/url]
[b]free autocad blocks, [url=http://hopresovees.net/]softwares price list[/url]
[url=http://hopresovees.net/][/url] microsoft academic software alliance coreldraw 12 graphics suite downloads
to sell software to [url=http://hopresovees.net/]windows xp service pack 2 download[/url] cheap software to buy
[url=http://bariossetos.net/]software to buy uk[/url] make or buy software
[url=http://hopresovees.net/]education software resellers[/url] office 2003 service pack 3
microsoft office 2000 software [url=http://bariossetos.net/]software purchase canada[/b]