Bei Multicore-Programmierung fehlen Kenntnisse

Kann die Software noch mit der Entwicklung neuer Prozessoren mithalten? Prof. Dr. Klaus Kißig von der FH Kiel hat keine Zweifel daran. Seiner Meinung nach mangelt es eher an Kenntnissen, die Hardware richtig auszunutzen.

Es wurde in letzter Zeit häufig kritisiert, dass die Software mit der Hardware-Entwicklung nicht mehr Schritt halten kann. Verliert die Software den Anschluss an die Multicore-Entwicklung?

Nein, überhaupt nicht. Es war bisher immer so, dass die Hardware weit voraus war. Das ist eine ganz normale Entwicklung. Eine Software lebt häufig einige Jahre und muss in der Lage sein, sich an die aktuelle Hardware Entwicklung anzupassen.

Wir erleben heutzutage ein Marketing, dass fast zwangsweise immer etwas Neues hervorbringen muss. Man will etwas verkaufen und sucht nach Gründen, warum das nicht so schnell geht. Vor 15 Jahren gab es dieses Marketing noch nicht in dem Maße. Der Consumer-Markt für PCs war noch nicht so schnell und laut wie er heute ist. Das ist übrigens auch ein Grund, warum ich die Cebit nur noch online besuche.

Ich muss auch noch sagen, dass ich Multicore-Prozessoren nicht für den großen Innovationssprung halte. Im Bereich der Embedded Systeme werden immer schon funktional getrennte Mehrrechnersysteme eingesetzt.  Rechner-Cluster, deren Programmierung mit Datenflussmodellen erfolgt, sind auch nicht neu. Oder betrachtet man nur die Elektronik in einem Echolot, wo bis zu hundert DSPs zusammen arbeiten.

Also ist alles in Ordnung?

Entwicklungssoftware ist eigentlich genug da. Es gibt viele gute Compiler mit denen man Threads programmieren kann.  OpenMP ist auf Standard-Compilern nutzbar. Die ständige Weiterentwicklung des Intel-Compilers oder die Nutzung der Möglichkeiten von etwa QTConcurrency sind eine gute Basis für eine effektive  Multicore-Programmierung. Das Problem ist eher, dass es zu wenige Leute gibt, die die Kenntnisse haben, um diese Compiler effektiv anzuwenden und die Hardware optimal ausnutzen können.
 
Wo liegt das Problem?

Parallelisierung beginnt mit dem Entwurf. Beschreibungssprachen für parallele Prozesse und deren Simulationen, zum Beispiel mit Petri-Netzen, haben hier eine besondere Bedeutung und müssen verwendet werden. Das gilt für die hardwareunabhängige Programmentwicklung und auch für hardwarenahe Projekte. Für die erste Gruppe gibt es schon und wird es in der Zukunft noch mehr Hilfsmittel geben, um Programmabläufe zu parallelisieren.

Für hardwarenahe Programmierung, bei der aktuelle Kenntnisse über das Betriebssystem, den Treiberbau, die Hardware des Chipsatzes und der Multi-Core CPU notwendig sind, ist es neben dem ständigen Beschaffen von aktuellen Manuals, eine echte Herausforderung die Möglichkeiten eines PCs noch besser auszuschöpfen.