Reacties (67)
Ik denk eerlijk gezegd dat we over een aantal jaren wel massaal software gaan zien die schaalbaar wordt over meerdere cores, dan zul je ook zien dat dual quadcore systemen interessanter gaan worden voor de thuismarkt en ik zie in de verre toekomst nog wel een multichip systeem, waarbij je een groot aantal cores hebt (128 of meer) die niet alleen de taken van de cpu op zich nemen, maar ook die van de gpu, de geluidskaart, netwerkkaart, physicskaart, raidcontroller etc door een core dedicated toe te wijzen. Door de hoeveelheid cores kun je hier erg flexibel in zijn, een nadeel zal wel weer zijn dat je hiermee niet de max snelheid kunt halen voor iets (een cpu is niet zo goed in gpu berekeningen bijvoorbeeld).
Een Hybride systeem zie ik ook nog wel ontstaan. Waarbij je een aantal dedicated cpu cores hebt, een aantal dedicated gpu cores en wat cores die bij kunnen springen bij de cpu of gpu, afhankelijk van waar het nodig is.
Ik heb gestemd dat mijn volgende zeker een Quadcore wordt, maar zeg daarbij dat ik met mijn X2 6000+ toch echt wel nog een jaar of twee voort kan. Tegen dan is het wellicht al betaalbaar om een octacore te halen, maar ik wacht dus niet per se op octacores
Mijn mening is twee jaar geleden serieus veranderd op dit vlak. Ik had voordien een XP 2000+ en ik vond de sprong van de Ghz-race naar de multicore-race nogal bizar. Toendertijd dacht ik nog iets van "Wat maakt het nou uit dat je meerdere cores hebt? Als ze niet sneller worden, gaat het ook niet sneller!" maar mijn ogen zijn nogal abrupt opengevallen (zeg maar opengeblazen) toen ik merkte hoeveel responsiever mijn systeem werd met een dualcore (WinXP Pro SP2). Dus ik ben ervan overtuigd dat er een tijd komt dat je echt wel het verschil merkt tussen een dual of een quad in gewone gebruikersapplicaties.
Totdat je merkt dat een singleThreaded taak op een Athlon64 X2 4200+ @ 2.2Ghz toch 20% sneller gaat dan op een Athlon64 3400+ @2.2Ghz... Zo af en toe is efficientie toch ook nog een belangrijke factor. (Zet een Athlon XP eens tegenover een destijds vergelijkbare P IV, dat zegt wel genoeg)"Wat maakt het nou uit dat je meerdere cores hebt? Als ze niet sneller worden, gaat het ook niet sneller!"
Een andere probleem is dat meerdere cores ook niet noodzakelijk altijd helpen bij het versnellen van bepaalde processen, je kan ook maar x MB per seconde lezen van je harde schijf, een extra core helpt daar helemaal niet.
Een veel belangrijker voordeel van multicore architecturen is dat verschillende applicaties echt in parallel kunnen lopen zonder elkaar te hinderen.
Tot slot zijn er ook al heel veel applicaties wel geschikt voor meerdere cores (vooral aan de serverzijde)
De software architecturen die daar gebruikt worden komen ook meer en meer naar de desktop. Denk aan allerhande applicatieservers die een doorgedreven thread model aanbieden. De microkernels die in deze applicatieservers zitten komen ook naar de desktop. Samen met een trend naar event en message gebaseerde architecturen die het multithreaden voor de applicatieprogrammeur vereenvoudigen. Het moeilijke multithreaden wordt immers onder de motorkap verstopt.
Eindgebruikers hebben ook niet altijd een correct beeld van hoe en welk voordeel meerdere cores hebben en kunnen hebben. En dat lijdt tot heel wat misvattingen met als gevolg statements dat programmeurs te dom zijn om goed voor meerdere cores te kunnen programmeren...
Dat klopt, maar vaak kun je een programma toch wel opsplitsen in zaken die op de voorgrond gebeuren en taken die op de achtergrond uitgevoerd worden. Zolang er nog geen multi-core processors in een computer zaten was het echter helemaal niet interessant om hier op te gaan laten.Voor een hele zwik software maakt het ook helemaal niet uit of iets meerdere cores ondersteunt of niet en kan je er nauwelijks voordeel uit halen om iets te parallelliseren.
Nu er meer en meer computers met meerdere cores komen wordt het een andere zaak en zal meer en meer software aangepast worden (bijvoorbeeld de spellingscontrole als een achtergrond taak).
Verder kan ik mij ook voorstellen dat bijvoorbeeld browsers uitstekend gebruik zouden kunnen maken van de extra cores die aanwezig zijn, zodat de ene webapplicatie de andere website/applicatie niet in de web zal zitten. Vooralsnog zijn de meeste browsers volgens mijn nog erg op slechts 1 core gericht...
Iets als een spellingscontrole gebeurt, vermoed ik, al helemaal op de achtergrond in een ander thread. Het zou zelfs moeilijker programmeren zijn om dat niet in een aparte thread te doen.
Ook browsers kunnen zonder problemen meerdere threads gebruiken om meerdere pagina's tegelijk te renderen. Maar heel veel voordeel merk je daar niet van.
De bottleneck is veel vaker iets anders, het netwerk bijvoorbeeld bij een browser.
En iets hierarchisch als een html-pagina in meerdere threads renderen is niet echt triviaal en de winst die je haalt echt minimaal (i.e. 50ms naar 30ms brengen levert je niet veel op naar gebruikerservaring)
Je zult nog verbaast staan bij de hoeveelheid single-threading applicaties die je gebruikt. Dat je dit niet merkt, dat komt omdat de uitgevoerde taken vaak erg klein zijn.Die splitsing tussen voorgrond taken en achtergrondtaken gebeurt al heel lang hoor. De GUI van een applicatie loopt altijd in een andere thread(meestal met hogere prioriteit) dan de eigenlijke logica. Indien dit niet zo zou zijn dan hangt je keihard vast iedere keer je op een knop klikt tot de actie geassocieerd met die knop helemaal uitgevoerd is.
Zolang je nog maar zorgt dat de taak die je uitvoer minder dan 250msec duurt (oid, soms kun je 'm zelfs wel 1 seconde of meer laten duren), zal de gebruiker er niets van merken.
Ik denk dat je je niet beseft hoe lastig het is om een multithreaded applicatie te programmeren. Het lijkt misschien erg gemakkelijk, maar ik kan je zeggen dat het lastiger is dan je op het eerste gezicht zou zeggen.Iets als een spellingscontrole gebeurt, vermoed ik, al helemaal op de achtergrond in een ander thread. Het zou zelfs moeilijker programmeren zijn om dat niet in een aparte thread te doen.
De browser wordt meer en meer als applicatieplatform gebruikt met client-side JavaScript, het opdelen van de taken die de browser uitvoert is dus wel degelijk lonend. Als zou je de applicatie al zodanig opdelen dat iedere tab/venster een eigen thread krijgt, voor zover ik weet is dat nu namelijk nog niet zo.Ook browsers kunnen zonder problemen meerdere threads gebruiken om meerdere pagina's tegelijk te renderen. Maar heel veel voordeel merk je daar niet van.
De bottleneck is veel vaker iets anders, het netwerk bijvoorbeeld bij een browser.
En iets hierarchisch als een html-pagina in meerdere threads renderen is niet echt triviaal en de winst die je haalt echt minimaal (i.e. 50ms naar 30ms brengen levert je niet veel op naar gebruikerservaring)
Je hebt overigens wel gelijk dat het parsen van HTML niet iets is dat je over meerdere threads moet gaan verdelen, maar dat heb ik ook helemaal niet voorgesteld
Aan de andere kant valt het ook wel weer mee. Zodra je een beetje gevoel begint te krijgen voor alle moderne threading primitieven die een moderne concurrency library je biedt EN je niet al te gekken dingen doet dan valt het echt best mee.Ik denk dat je je niet beseft hoe lastig het is om een multithreaded applicatie te programmeren. Het lijkt misschien erg gemakkelijk, maar ik kan je zeggen dat het lastiger is dan je op het eerste gezicht zou zeggen.
Je moet niet enkel met een Process of Thread werken en lukraak al je data sharen en dat op een lukrake en chaotische manier. Maak je echter slim gebruik van dingen als barriers, blocking queue's, (timed) reentrant locks EN laat je je threads eenvoudige goed gedefinieerde taken uitvoeren met het liefst een sporadische communicatie dan is het echt niet zo moeilijk.
De grap is dat veel van de principes die je gebruikt om parallel te programmeren dezelfde zijn die je ook al zou moeten toe passen bij sequentieel programmeren. De OO principes low coupling, high cohesion zijn hier uit stekend van toepassing.
Is misschien nogal taalafhankelijk, maar in Delphi kan ik gewoon code aan een knop hangen die behoorlijk lang duurt. Zolang ik zo af en toe maar application.processMessages uitvoer om de GUI even te updaten merkt de gebruiker daar echt niets van.De GUI van een applicatie loopt altijd in een andere thread(meestal met hogere prioriteit) dan de eigenlijke logica. Indien dit niet zo zou zijn dan hangt je keihard vast iedere keer je op een knop klikt tot de actie geassocieerd met die knop helemaal uitgevoerd is.
1985: Voor een hele zwik software maakt het ook helemaal niet uit of iets meer dan 512k ondersteunt of niet en kan je er nauwelijks voordeel uit halen om iets meer geheugen te geven.Voor een hele zwik software maakt het ook helemaal niet uit of iets meerdere cores ondersteunt of niet en kan je er nauwelijks voordeel uit halen om iets te parallelliseren
1990: Voor een hele zwik software maakt het ook helemaal niet uit of iets OO geschreven is of niet en kan je er nauwelijks voordeel uit halen om iets in objecten te definiëren.
1995: Voor een hele zwik software maakt het ook helemaal niet uit of iets een GPU ondersteunt of niet en kan je er nauwelijks voordeel uit halen om iets door de grafische kaart af te laten handelen.
2000: Voor een hele zwik software maakt het ook helemaal niet uit of iets meerdere resoluties ondersteunt of niet en kan je er nauwelijks voordeel uit halen om iets op een hogere resolutie dan 1024x768 te draaien.
...
Als het aan jou lag zaten we nog op een 7Mhz 68000 te werken...
Die hoort niet in het rijtje thuis, win ik nu iets?1990: Voor een hele zwik software maakt het ook helemaal niet uit of iets OO geschreven is of niet en kan je er nauwelijks voordeel uit halen om iets in objecten te definiëren.
Alle andere hebben namelijk iets met technische beperkingen te maken.
Het heeft er losjes mee te maken, maar vanaf de andere kant gezien, namelijk vanaf de programmeur. In 1990 was er een vrij grote groep programmeurs die vond dat OO niet nodig was voor 'gewone' programma's en dat alleen hele grote enorm gecompliceerde applicaties er voordeel uit zouden kunnen halen. Men dacht dat OO alleen maar nodeloze complexiteit zou brengen en de kans op fouten zou verhogen.Die hoort niet in het rijtje thuis, win ik nu iets?
Ondertussen weten we natuurlijk wel beter. Zelfs voor de meest eenvoudige programma's is dikwijls OO de default methode.
Je ziet dat nu weer (vanaf de programmeurs kant) het zelfde argument wordt gebruikt. Parallel programmeren is niet nodig. Alleen hele complexe apps hebben het nodig etc.
Ik ben professioneel bezig met onderzoek naar gedistribueerde software, dus ik zal de laatste zijn om te beweren dat parallelisatietechnieken en optimalisaties voor multicore systemen niet nodig zijn.Je ziet dat nu weer (vanaf de programmeurs kant) het zelfde argument wordt gebruikt. Parallel programmeren is niet nodig. Alleen hele complexe apps hebben het nodig etc.
Waar ik echter vooral op wou reageren is dat niet alles zomaar te paralleliseren is, en het ook niet altijd nuttig is om dat te doen. Echter, de support voor multicore of gedistribueerde systemen wil je transparant maken voor de applicatieprogrammeur. denk maar aan JEE en andere applicatieservers.
Persoonlijk denk ik ook dat er weer een nieuw ontwikkelmodel moet opgebouwd worden om het gebruik van meerdere cores te vereenvoudigen, en moet die taak niet bij de applicatieprogrameur gelegd worden. Ik denk dan vooral aan een asynchroon applicatiemodel (vb. zoals een JAIN SLEE applicatie server)
Heel rekenintensieve taken (bv. encoderen van video, renderen van 3d modellen, statistische analyse van data, bepaalde simulaties...) hebben vermoedelijk meer baat bij specifiek ontwikkelde algoritmen. Maar die komen dan in allerhande bibliotheken terecht en blijven verborgen voor applicatieprogrammeurs.
Waar ik me soms alleen aan stoor (en vandaar mijn eerste reactie) zijn kreten dat programmeurs maar eens rekening moeten houden met meerdere cores. Vroeger gingen de discussies over een beter sorteer algoritme, nu over het gebruik van meerdere cores. Dit waar in 99% van de gevallen de sorteerfunctie van de standaard bibliotheek die je gebruikt al meer dan voldoende is. Hetzelfde bij huidige software met ondersteuning van meerdere cores. Iedereen zijn eigen oplossing laten maken is geen goede taktiek naar mijn gevoel. De oplossing in bibliotheken of allerhande applicatieservers te stoppen wel. En afgeslankte vormen van zo'n applicatieservers komen ook steeds meer naar de desktop. (bv. OSGi)
Inderdaad, maar dat geldt natuurlijk voor heel veel dingen.Waar ik echter vooral op wou reageren is dat niet alles zomaar te paralleliseren is, en het ook niet altijd nuttig is om dat te doen.
Als we alleen even kijken naar threads als organisatie unit in je software en daarna de vergelijking maken met organisatie units in het algemeen, dan zie je dat dat statement voor elke unit geldt. Het begint al bij het concept statement. Een statement kun je soms apart opdelen in meerdere statements, maar dat is niet altijd zinvol. Zelfde voor het concept functie. Heel handig, maar je gaat niet elke lijn code in een aparte functie zetten. Deze lijn gaat door naar classes, packages en jars/dlls/libs etc.
Specifiek voor threads geldt dat niet elk algoritme (zinvol) te paralleliseren is. Er is niet voor niets onderzoek naar welke algorithmen wel goed te paralleliseren zijn
Over het algemeen kun je wel stellen dat OO een veel breder inzetbaar concept is dan het idee van meerdere paralelle berekeningen.
Ach... ik vermaak me nog steeds als ik mijn Sega Megadrive weer eens aansluitAls het aan jou lag zaten we nog op een 7Mhz 68000 te werken...
Bv. ik ben momenteel wat video aan het coderen, Warcraft, outlook, word, powerpoint, Itunes en virusscanner staat open. Een aantal van deze apps vraagt vrij veel bronnen, dan vind ik het erg prettig dat je overal snel tussen kan schakelen en dat je geen noemenswaardige vertraging tegenkomt.
Mijn quadcore + 4gb + vista 64 zorgen er voor dat ik dit alles gewoon zonder problemen kan doen. Als ik ook even naar de CPU load kijk, dan zie ik 1 core voor 70% vol, 2 voor ongeveer 50% en 1 op 20%. Dus kom niet aan met het verhaal dat het nu nog geen zin heeft of dat de programmeurs wakker moeten worden. Ik ben wel van mening dat het verspreiden van 1 enkele huis-tuin-en-keuken applicatie over meerdere cores vrij nutteloos is.
De huidige games gebruiken hooguit 2 cores en 4 cores worden nog in geen enkel spel goed benut.
Mischien in Crysis een quadcore support maar om nou voor één spel een quadcore te kopen...

Volgens The Inquirer (oké ik weet het roddel website
Quadcore is denk ik meer geschikt voor als je gaat Fotoshoppen of 3D design software gaat gebruiken zoals 3DsMax of Maya.
[Reactie gewijzigd door Sunbeam-tech op 2 augustus 2024 18:57]
Beter verlegen met, dan verlegen om vind ik zelf.

Dalijk met FarCry 2 en de nwe C&C heb je op zeker meer aan Quadcore and zo is het ook al met de A.I. core van Crysis.
Waar is de optie: Nee ik heb het niet nodig?
Ik stress mijn pc alleen met af en toe encoden en decoden(ik doe veel met anime), daar heb ik echt geen quadcore voor nodig. Dat beetje wachten kan best.
@redactie: Wanneer komen er nou eens redelijke polls(NIET "op welke game wacht jij" er komen er namelijk honderden), Maar polls als deze, maar dan die rekening houden met het feit dat er ook mensen zijn die niet altijd het nieuwste willen. Dat is vermoed ik nog steeds een grote groep hier.
Door fouten als deze zijn jullie polls op geen enkele manier representatief voor de tweakers-gemeenschap. Ik stem niet, maar heb wel een stem. Die wordt gewoon gemist. Waardoor toch zeker minimaal 20% afwijking zit in de resultaten van de poll. Als iedereen voor dezelfde keuze kiest als ik, die mijn mening deelt.
[Reactie gewijzigd door Verwijderd op 25 juli 2024 14:18]
Dat is nu eenmaal het nadeel van meerkeuze. Via het commentaar kun je altijd nog je ei kwijt...
Nu is een 'Anders dan hierboven' misschien een optie, maar aan de andere kant is zo'n pool slechts indicatief en is het geen opiniepeiling of dergelijke - uitslagen van dit soort pools moet je denk ik altijd met een korreltje zout nemen.
Ik neem aan dat je gebruik maakt van Windows of een ander multi-tasking besturingssysteem. In dat geval is het altijd handig om meerdere cores te hebben, de diverse taken hoeven dan niet allemaal dezelfde core te delen.Waar is de optie: Nee ik heb het niet nodig?
Je werkt ten slotte toch ook niet meer op een Pentium 1 op 133Mhz toch? Heel lang was de vooruitgang een snellere CPU, maar dat is niet meer te behalen en nu wordt de load over meerdere cores verspreid...
Daarbij is een dualcore meer dan genoeg zolang je geen hardcore encoder, photoshopper(en zulks) of gamer bent.
Je loopt de dure computerzaak toch ook gewoon voorbij richting de goedkope of ga je binnen klagen over de prijzen?
[Reactie gewijzigd door Regeneration op 2 augustus 2024 18:57]
Zo heb ik vaker video gecodeerd met software wat maar op 1 core draaide. Het zorgde er wel voor dat ik op geen enkele wijze het gevoel had dat mijn pc ook maar iets trager werd tjdens die uren, toen ik er office applicaties op draaide en aan het internetten was. Dat is toch wel echt een groot voordeel. Dat voordeel is niet meer zo groot als het aantal cores nog meer toeneemt en daar maak je een goed punt zolang de ondersteuning bij software nog niet altijd even goed doordringt.
Als je op korte termijn (bijna een jaar of zo) een laptop koopt, dan is de kans klerin dat je er 1 met een quadcore CPU kan kiezen.Mijn volgende PC wordt een notebook, en daarin zitten helaas nog geen quadcores.
Over een jaar of 2 verwacht ik die keus wel (betaalbaar), ik denk dat het nog te energieintentsief is om nu al een quadcore in te bouwen in een laptop - maar als je geduld hebt...
Waarom zou je dan een quad core willen aanschaffen? Omdat het meer preformance geeft!. Maar aangezien dit ten kosten gaat van de batterij duur, het maar door een paar applicaties goed ondersteunt word en het stukken duurder is zou niemand het aanschaffen.
Conclusie: Quad core word te weinig ondersteunt, daarom is het niet nog net rendabele om het te ontwikkelen voor notebooks. Ook al zou het Technisch mogelijk zijn.
[Reactie gewijzigd door Facepalm op 2 augustus 2024 18:57]
Ik heb dus gestemd voor hoe meer hoe beter.
WinRAR is tegenwoordig ook leuk als ik iets eens echt wil inpakken: multicore support
En voor de Nederlandse Kracht Koeien is quadpower ook handig: mijn SETI@Home graast op vier weides tegelijkertijd
[Reactie gewijzigd door Wildfire op 2 augustus 2024 18:57]
Op dit item kan niet meer gereageerd worden.