Het wordt steeds moeilijker krachtiger sequentiele processors te
maken. Verdere toename van rekenkracht zal moeten komen van expliciet
parallelisme, zoals multi-core processors en SMP. Het is daarom te
verwachten dat parallele computers gemeengoed zullen worden.  De eerste
SMP computers voor consumenten worden al verkocht (b.v. Apple Power Mac),
en alle grote processor-fabrikanten werken aan multi-core processors.

Voor het ontwikkelen van software voor dergelijke computers zal
een drastische verandering van werkwijze nodig zijn.  De meeste
programmeurs hebben tot nu toe parallel programmeren weten te vermijden,
maar op de nieuwe platforms zal dat niet langer mogelijk zijn. Helaas
heeft twintig jaar onderzoek naar parallele programmeermodellen twee
nogal teleurstellende winnaars opgeleverd: MPI en threads. Beide
zijn ongestructureerde, laag-niveau programmeermodellen die lastig en
fout-gevoelig in gebruik zijn, en die compilers weinig gelegenheid bieden
te optimaliseren voor een specifiek platform. Het is daarom dringend
noodzakelijk uit te zien naar een gestructureerd programmeermodel
dat parallel programmeren toegankelijk maakt voor grotere groepen
programmeurs. Er zijn hier duidelijke overeenkomsten met de invoering
van gestructureerd programmeren van twintig jaar geleden, waar een
software crisis werd bedwongen door een meer gestructureerde methode
van programmeren.

Er zijn in de loop van de tijd veel gestructureerde parallele
programmeermodellen ontwikkeld: CSP, data-parallel, divide-and-conquer
(SPC), functioneel, synchroon, etc. Helaas zijn meeste van deze modellen
alleen maar effectief voor een beperkte klasse van problemen. Er is
ook onderzoek gedaan naar combinaties van modellen (o.a. onder de
term `skeletons'), maar ook dat heeft geen succesvol programmeermodel
opgeleverd.

Nu het voor veel meer programmeurs noodzakelijk gaat worden
parallel te programmeren, is het verstandig nog eens goed naar deze
programmeermodellen en combinaties te kijken, een selectie te maken,
en zo nodig aan te passen voor gebruik door een groot publiek. Het
is daarbij belangrijk rekening te houden met de wijdverbreide wens om
bestaande programmeertalen te blijven gebruiken.

maken uit de gestructureerde parallele programmeermodellen, zoals
Doel van het project is een aanbeveling te maken voor de te gebruiken
gestructureerde programmeermodellen,  te beschrijven hoe ze geintegreerd
kunnen worden in een sequentile programmeertaal, een prototype
implementatie maken, en een evaluatie van het prototype te doen dmv
representatieve software.

Intel:
Er zijn i386 multicore processors aangekondigd.

Tanglewood: Gerucht uit September 2003. 8 (of 16, of ...) Itanium
processors op een chip.  4GHz, maar minder als er meer cores gebruikt
worden.  Later een andere naam: Intel Tukwila. Project is echt genoeg
voor zo'n naamsverandering.

Sun:
Roadmap zegt: Niagara in `early 2006' voor 8-way multicore, Rock (minder
maar krachtiger multicore) in 2007.

IBM PowerPC:
Huidige versies zijn al 2-way multicore. Plannen voor multi-core
processors in BlueGene. Er is een 64-way multi-core project met Sony
voor gebruik in een game computer.

AMD AMD64:
Aangekondigd in april 2004: 2-way multicore in 2005.

Aangezien het niet te verwachten is dat single-core processors nog veel
winst kunnen bieden, is het te verwachten dat multi-core processors op
relatief grote schaal zullen worden ingevoerd.

De multicore en multiprocessor systemen zijn inherent NUMA.

Multicore wordt op het moment verkocht met het begrip `throughput
computing'.  Het argument is dat op sommige systemen de snelheid
van een individuele node niet belangrijk is, maar de throughput van
de totale werklast. Als er veel kleine jobs zijn zal multicore
processing helpen. Met andere woorden: multicore processors worden
gemotiveerd door gebruik bij triviaal parallelisme.

Dat is natuurlijk leuk als je zo'n probleem hebt, maar dat is
uiteraard niet altijd het geval. De kunst is nu juist om ook bij
niet-triviaal parallelisme versnelling te krijgen.

In veel gevallen voldoet de werklast niet aan dit model, en is het
belangrijk om binnen een programma parallelisme te vinden. Dat is
een radikale omslag, die ingaat tegen een traditie van meer dan
dertig jaar. Systemen bieden op het moment beperkt parallelisme
(threads, pipes), maar voor een goed gebruik van multi-core processors
is meer nodig.

De conclusie is onvermijdelijk dat er een parallel programmeermodel
moet worden geboden aan `mainstream' programmeurs. Een goed model
is toepasbaar op een breed spectrum aan architecturen, end biedt
enige bescherming tegen de traditionele problemen van parallel
programmeren: non-determinisme, load imbalance, en deadlock.

Structured parallel programming models

CSP
Data-parallel
Synchroon
Divide-and-conquer SP
Data flow
Functional

Skeletons
Threads
