Diskussion:Parallele Programmierung

aus Wikipedia, der freien Enzyklopädie

alte Diskussionen

Meiner Meinung nach sind hier zwei Dinge durcheinandergeworfen:

  1. Multithreading, siehe dazu Thread_(Informatik)
  2. Die Organisation des Ablaufes eines Programmes auf mehreren parallelen Prozessoren, mit geeigneten Techniken beim Compilieren zu erreichen. Ob es sich dabei um parallele Threads handelt, oder um die Parallelisierung von an sich auch sequentiell abarbeitsfähigen Codes, sollte dabei nicht die entscheidende Rolle spielen, der letzte Fall ist aber der ursprüngliche.

Der Artikel behandelt viel von 1. Punkt, sollte aber IMHO sich auf den 2. Punkt konzentrieren.

Dass man auch mit einem Prozessor mit mehreren Threads eine Parallelisierung einer an sich auch sequentiell lösbaren Aufgabe ausführen kann, um eine Geschwindigkeitssteigerung zu erreichen, wie im Artikel erwähnt, gehört dagegen wiederum ursächlich in diesen Artikel, denn es ist eine Ausnutzung des Multithreading für parallele Programmierung.

In diesem Sinne ist der Artikel stark überarbeitungswürdig. --HartmutS 10:58, 11. Apr 2006 (CEST)

Ich denke auch, dass wir das umstrukturieren sollten. Parallelisierung sollte wieder einen eigenen Artikel bekommen (ist jetzt Redir hierher), analog zu Sequentialisierung. Ansonsten steht auch schon viel in Nebenläufigkeit, Prozessynchronisation und Interprozesskommunikation. Auch Paralleler Algorithmus ist relevant.
Allerdings hat das aus Sicht der "reinen" Informatik nichts damit zu tun, ob jetzt "Threads" verwendet werden oder einzelne Prozessoren: aus theoretischer Sicht handelt es sich immer um Prozesse, egal ob die im selben Speicherbereich, auf unterschiedlichen Prozessoren oder auf verschiedenen Computern laufen. Unterschiede bestehen nur in der Art der Kommunikation: gemeinsamer Zugriff auf Resourcen (d.h. die Prozesse müssen sich explizit synchronisieren um Fehler zu vermeiden), oder (synchrone oder asynchrone) Kommunikation über Nachrichtenkanäle. -- D. Dÿsentrieb 12:02, 11. Apr 2006 (CEST)

Der Ausdruck ist grauenhaft. Des Weiteren fehlen Hinweise auf die Schnittstellen openMP und MPI, die parallele Programmierung ermöglichen. Zudem ist der Satz "Es ist aus der Sicht des Programmierers bei der Parallelisierung im allgemeinen gleichgültig, ob die einzelnen Programmteile tatsächlich gleichzeitig von unabhängigen Ausführungseinheiten bearbeitet werden, oder ob sie nur quasi-parallel ausgeführt werden" schlichtweg falsch. Beim wissenschaftlichen Rechnen in Clusterumgebungen macht es sehr wohl einen Unterschied, ob die Prozesse auf separaten CPUs ausgeführt werden oder nur in verschiedenen Threads innerhalb einer CPU. 141.65.129.239 07:43, 21. Sep 2006 (CEST)

Warum wird gerade Java erwähnt und nicht C (was eher in Verbindung mit MPI für die parallele Programmierung benutzt wird)? Threads gibt es wohl fast in jeder Sprache und man kann auch mit jeder Sprache parallel programmieren. Java ist dabei meiner Meinung nach die schlechteste Wahl. Man kann damit den Eindruck machen, dass Java DIE Sprache für die PP ist. --Igor Komlew 17:20, 5. Dez. 2006 (CET)

Redundanz zu Thread?

Es gab den Redundanzhinweis zu Thread. Dieser war IMHO nicht rechtens, habe daher die Erledigung der Redundanzdiskussion beantragt. Folgende Bemerkung: Es kann sein, dass es im Artikel Parallele Programmierung Tendenzen gibt, Probleme zu beschreiben, die Threadprobleme sind (Deadlock etc), hier ist ein Querverweis besser als doppelte Erklärungen. Diesen Hinweis schreibe ich nochmal in die Diskussion zu Parallel Programmierung. Aber dieses Mangel rechtfertigt nicht die Kennzeichnung der Redundanz. Ich habe jetzt nichts an den Artikeln selbst geändert, aber die Redundanzbemerkung entfernt.

Ich meine, dieser Artikel kann ausführlicher zur Technik der parallelen Programmierung geschrieben sein. Wir haben mittlerweile das Multicore-Zeitalter, die Compiler können mehr etc. etc. Ich habe mdst. 2 Vorträge zu diesem Thema gehört (richtige Vorträge mit Tagungsgebühren). Leute, schreibt doch auch mal kostenfrei in die Wikipedia. HartmutS (Diskussion) 21:17, 24. Feb. 2013 (CET)

Umsetzung

Der Satz im Abschnitt Umsetzung:" Diese automatische Parallelisierung kann durch den Compiler vorgenommen werden, wenn als Zielplattform ein Computer mit Mehrkernprozessor oder ein Parallelrechner zur Verfügung steht, aber auch einige moderne CPUs können solche Unabhängigkeiten (im Mikrocode eines Programms) erkennen und die Anweisungen so auf verschiedene Teile des Prozessors verteilen, dass sie gleichzeitig ausgeführt werden (Out-of-order execution)." ist zwar heute möglich, trifft aber doch nicht die Besonderheit der Parallelen Programmierung, vor allem: so wie sie ursprünglich verwendet wurde, wie z.B. war doch die AWL-Sprache (anweisungsliste) alter SPSen auch schon parallel, obwohl sie natürlich nur quasi-parallel durch einen einfachen Prozessor ausgeführt wurde. Die tatsächliche Aufteilung auf verschiedene Kerne ist doch nur eine Optimierung der Threads. Die Parallelität bezieht sich aber auf das Verhältnis von der programmierten Funktion zu dem Code. Dies ist Nmn. unabhängig von der Prozessverteilung, die wenn sie parallel auf meherere Kerne auch herkömmlich(sequentiell) programmiert sein, dies ist lediglich eine parallele Ausführung. Gänzlich anders sind auch Sprachen wie verilog und VHDL, bei denen die Funktionen tatsächlich parallel programmiert und ausgeführt werden. --Zwölfvolt (Diskussion) 13:01, 5. Okt. 2016 (CEST)

Ich war mal so frei, überhaupt erst einmal deutlicher im Artikel zu trennen zwischen paralleler Programmierung und dazu geeigneter Hardware.
Schließlich kann man durchaus eine Anwendung mit nebenläufigen Programmteilen programmieren (und ausführen), ganz ohne gesonderte Hardwareunterstützung. (Hab' zwar selbst nur mal 1 Tag "reingeschnuppert", aber afaik sind z.B. SPS'en solche Systeme, deren 1-Kern-CPU weder Hardwareunterstützung für Multithreading noch für Multitasking bietet.)
--arilou (Diskussion) 13:09, 16. Feb. 2017 (CET)