Afgezien van een beetje programmeren bevindt ik me nadrukkelijk aan de gebruikerskant.van software. @gamepower2005: je reactie verwoordde heel mooi hoe deze ontwikkeling is te beoordelen. Met de afhankelijkheid die het dochterproces (geheugenmanagement) van de moeder zal hebben (applicatie) en de extra resources die het zal vragen vindt ik de versnelling van 20 procent toch behoorlijk te noemen. Het lijkt er wel op dat de 20% de absolute max. in het spectrum zal zijn. De gemiddelde versnelling zal dus lager zijn.
Niet heel efficient? Zonder meer. Kost de nodige resources. Yep {alsof tekstverwerkers nu al niet genoeg opvreten}. Wordt dit een eindprodukt? Twijfelachtig. De overmaat aan computercapaciteit vergroot wel de kans erop (de maatschappelijke druk hiervan is enorm

). Hoeveel cores zouden in Nederland inmiddels wel niet duimen zitten te draaien?
Kan het programma je in de staart gaan bijten, als het aantal te bedienen threads te groot wordt? Kan bandbreedte naar het geheugen een bottleneck vormen? Blijft geheugengebruik efficient (het pre-allocatie verhaal)? Zonder iets zinnigs over programmadetails te kunnen zeggen moet er toch iets te bouwen zijn wat zich voortdurend volgend opstelt aan zijn omgeving? Een dergelijk programma zou dus primaire applicaties niet voor de voeten moeten gaan lopen en waar het kan inkicken om een programma te versnellen. Ook moet het het OS de gelegenheid geven zijn werk te doen. Het programma zou dus niet statisch gelinked moeten zijn aan een bepaalde applicatie maar meer moeten kijken naar wat er aan applicaties draait en waar het, met de beschikbare resources, het meest effectief aan kan bijdragen. Van mijn part pompt het binnen deze kaders de cpu capaciteit en memory (bandbreedte) dan lekker vol.
Zo'n programma zou naar mijn idee dus niet zozeer autonoom moeten zijn en uitsluitend gericht op een of enkele applicaties, maar meer als een soort schil tussen OS en applicaties. Misschien zelfs een extensie van het OS zelf. Bovenstaande criteria vergroten de overhead van het programma wel. Het moet zich immers behoorlijk intelligent opstellen.
Zelf vond ik dit een heel interessant bericht.... Waarom? Het stoort me behoorlijk, met multicore processoren al bijna 5 jaar beschikbaar, dat de softwarewereld zo traag reageert. JaJa, multicoreprogrammeren is heeel complex, kregen we midden 2000 te horen, en is een wat onderhuidse feature die bij klanten nog niet als een sellingpoint is te communiceren. Althans, dat lijkt me de heersende opvatting. Mijn indruk is bovendien dat proffessionele software hekkesluiter is in dit proces. Terwijl daar toch echt veel te verdienen is. (Ik hoop dat medetweakers me op het tegendeel kunnen wijzen).
Hoe dan ook, dagelijks neemt het potentiaalverschil van de niet gebruikte processorcapaciteit toe. Wanneer gaat die emmer eindelijk eens leeglopen? In dit kader ben ik heel blij met dit soort initiatieven. Niet om de software an sich, maar meer omdat ze fungeert als een katalysator in een proces dat hoog nodig eens vlotgetrokken moet gaan worden.
[Reactie gewijzigd door teacup op woensdag 7 april 2010 22:01]
In het midden van je post beschrijf je een applicatie die andere programma's versnelt (maar het OS niet langzamer maakt). Dat is helaas iets te mooi om waar te zijn. Ver van de waarheid zit je echter niet; Windows kopieert veelgebruikte applicaties automatisch naar het geheugen, zodat ze sneller opstarten wanneer je ze nodig hebt.
Parallel programmeren (zo wordt dat genoemd) is niet moeilijk in een simpele situatie. Het probleem is dat de meeste applicaties niet simpel in elkaar zitten en om in een ingewikkelde applicatie een drastische verandering te maken kost veel tijd en geld.
Toch loopt de software wereld niet zo achter op de hardware wereld als je lijkt te denken. De populairste programma's die baat zouden hebben bij het gebruik van meerdere cores zijn daarvoor geschikt gemaakt (Photoshop, WinRAR, games, etc.). Het heeft weinig zin om Notepad parallel te laten werken, omdat dat zo simpel werk nooit een core vol zal belasten. Ook hoef je als software bedrijf veel klanten niet te overtuigen van het nut van parallel programmeren, je hoeft ze alleen te overtuigen dat het programma te langzaam werkt en dat het sneller gemaakt moet en kan worden. Hoe je dat precies doet maakt die klanten niet uit; bij hun gaat het puur om het resultaat (je hebt natuurlijk wat meer technische klanten die ook de andere kant van het verhaal willen horen).
Je zegt dat je de cores vol belast wil zien. Maar is dat wel nodig? Met de huidige quadcore processors is er simpelweg veel te veel rekenkracht aanwezig voor alledaagse taken. Twee oplossingen zijn mogelijk:
- Laat de processor het werk van je buurman doen, die bijv. met Photoshop bezig is; je verhuurt de rekenkracht die je over hebt.
- Laat de processor langzamer werken en bespaar energie (wordt vooral in laptops toegepast).
Kortom: het parallel maken van software gaat best goed. Dit soort research draagt misschien bij, maar zal geen drijvende factor zijn bij parallel programmeren.
[Reactie gewijzigd door gamepower2005 op zaterdag 10 april 2010 09:25]