IBM Octopiler moet programmeren Cell eenvoudiger maken

IBM heeft recent de eerste versie van zijn Octopiler uitgebracht, een tool die ontwikkelaars moet helpen bij het bouwen van software die de acht gekoppelde cores van de Cell-processor kan gebruiken. Ars Technica heeft de documentatie van de software bestudeerd en geeft een overzicht van de lange weg die nog afgelegd moet worden voor het écht makkelijk wordt om optimaal gebruik te kunnen maken van de mogelijkheden van de Cell. Intern heeft IBM vier niveau's van programmeurs gedefinieerd die het met zijn processor wil kunnen bedienen. De eerste en makkelijkste groep om tevreden te stellen zijn de experts die dromen in assembler en op eigen houtje het maximale uit de processor kunnen persen. Deze mensen zijn zeer zeldzaam en hebben ook erg veel tijd nodig om hun kunsten uit te voeren, maar ze zijn wel in staat om zonder bijzondere hulpmiddelen te werken.

Het tweede niveau bestaat weliswaar uit 'normale stervelingen', maar het moeten nog steeds zeer goede programmeurs zijn die precies weten hoe ze met meerdere threads om moeten gaan. Ook deze groep heeft weinig bijzondere hulpmiddelen nodig, maar ze hebben geen tijd of zin om alles met de hand te doen, dus er moet wel een compiler zijn om hun code te vertalen. Zonder hulp van programma's als de Octopiler zit IBM vast op dit niveau: alleen een kleine, duurbetaalde elite van programmeurs is op deze manier in staat om de Cell optimaal te gebruiken.

Cell-processor

De nieuwe software van IBM moet de ingewikkelde opzet van de processor ook toegankelijk gaan maken voor een derde niveau: de programmeur die wel weet wat multithreading is en hoe het werkt, maar er gewoon weinig tot geen ervaring mee heeft. De Octopiler helpt in dit geval bij het aanpassen en herstructureren van code zodat de prestaties op de Cell er beter van worden. Het systeem analyseert het programma en geeft aan welke veranderingen mogelijk betere prestaties op kunnen leveren. Nog steeds is het geen makkelijke klus om de code te optimaliseren, maar de hulp van de Octopiler moet voor veel van de 'lagere goden' onder de programmeurs een uitkomst zijn om toch goede software voor de Cell in elkaar te kunnen zetten.

Het doel is om de Octopiler te blijven verbeteren zodat de Cell steeds eenvoudiger wordt om voor te programmeren, maar dat is makkelijker gezegd dan gedaan. De ultime doelstelling (niveau vier) is dat men nauwelijks rekening hoeft te houden met de verschillende cores, en gewoon op een knop drukt om de optimale oplossing te krijgen. Hoewel IBM nog een hoop ideeën heeft om de compilers voor Cell slimmer te maken, lijkt dat echter een erg hoog gegrepen doelstelling waar nog heel veel werk voor nodig is. Alleen een slimme compiler is bovendien niet genoeg: ook aan de kant van het debuggen moet er nog een hoop verbeterd worden om het programmeergemak van Cell te verbeteren. Al met al kan het dus nog wel jaren duren voor het ontwikkelen voor de PlayStation 3 net zo makkelijk wordt als voor de pc.

Door Wouter Tinus

26-02-2006 • 15:14

29

Bron: Ars Technica

Reacties (29)

29
29
21
2
0
6
Wijzig sortering
en waarom krijg ik nu het gevoel dat ze hiermee dezelfde fout maken als met de playstation 2 ??

die was ook zeer lastig om te programmeren.. dus duurde het lang voor zijn potentie zichtbaar werd. Dat kan een handicap worden voor de PS3....maar als ze eenmaal los komen.. komt er ook wel een beest van een machine tevoorschijn krijg ik de indruk ;)
Klopt, voor de ps2 waren ook maar heel weinig bibliotheken beschikbaar in het begin.

Ik ben bang dat hierdoor de ps3 alleen maar een grotere achterstand krijgt op de Xbox 360

De ps3 zal wel tot minstens 2015 mee moeten gaan, dus er is genoeg tijd om goede software te ontwikkelen. Waarschijnlijk wordt de volgende generatie (spel)computer van Sony ook op de Cell processor gebaseerd.
Ik ben het grotendeels eens met je post.

Maar een console die 9 jaar meegaat?
dat lijkt me wel wat optimistisch
De ps2 wordt ook tot 2010 ondersteund en volgens mij ligt die ook al een tijdje in de planken...
Als het dan niet te laat is en de ps3 door zn (waarschijnlijk) hoge prijs en - in het begin- slechte prestaties niet totaal geflopt is.
Tja, dat is met elke nieuwe architectuur, er is op dit moment ook voor de PC nog geen goede compiler die echt ook optimaal gebruik kan maken van meervoudige cores, en dit zal ook nog wel even duren..

Wat je niet moet vergeten is dat de huidige PS3 games al sneller zijn dan hun Xbox360 (als ik in iedergeval enkele PS3 developers (dus niet sony) moet geloven) en dat terwijl ze dus de volledige potentie van de Cell chip nog bij lange na niet gebruiken, dus dan is het alleen maar afwachten wat we zien als ze wel weten hoe ze dat ding tot naad toe weten te gebruiken..

Dat is ook het juist het probleem van de huidige generatie programmeurs/software, ze maken totaal geen gebruik meer van de hardware waardoor je steeds snellere computers nodig hebt om dezelfde soort software te draaien als 5 jaar geleden...

Kijk ook maar eens wat ze nu allemaal uit zo'n C64 kunnen pompen, wat ze 20 jaar geleden nog bij lange na niet konden.. De huidige grafische hardware is bv nog lang niet tot het maximum benut, maar omdat er steeds nieuwere processors bijkomen zal dus ook maar zo'n 60% van de werkelijke mogelijkheden benut worden.

Er moet gewoon eens wat rustiger/beter ontwikkeld worden zodat wel de volledige potentie van de hardware benut kan worden..
Da's volgens mij een beetje hetzelfde als verwachten dat de mens zijn volledige hersencapaciteit maar moet zien te benutten, in plaats van de hele wereld naar de haaien te helpen en te fokken als konijnen.

..

Nietwaar? :Y)
ja, wij gebruiken 'slechts' 5% ofzo van onze hersenen ...

als ze maar 80% van de power van een computer kunnen gebruiken is dat al een mooie zaak

100% SYSTEM load (niet cpu load éh) wil je nooit hebben in videogames... hooguit 90% anders gaat je systeem de neiging krijgen om te hangen, blokkeren, crashen, BSOD, ... omdat er te weinig resources overblijven ...

but i get your point
Anoniem: 36844 @bogy27 februari 2006 00:54
ja, wij gebruiken 'slechts' 5% ofzo van onze hersenen ...
Dit fabeltje moet echt de wereld uitgeholpen worden. Wij gebruiken onze volledige hersenen, alleen niet op een moment. Als je bijvoorbeeld zit hoef je niet de delen te gebruiken die voor lopen nodig zijn etc.
De meeste Dev's zijn niet gericht om het onderste uit de kan te halen. Dit houd in buitengewoon veel gebruik maken van Assembler development en de hardware direct aanspreken.
Ontwikkelen op die manier kost veel tijd.
De level1 Programmeurs.
Bios routines drivers etc.
De level 3 waarbij tijd is geld en die game moet opgeleverd worden in 3 jaar ipv 10 dan gebruikt men hogere orde tools. Je levert wat performance in tegen 'n time on market. Hier is de nadruk op goed geoptimaliseerde tools van belang. Die bepalen mede de performance.
Hier en daar wat gericht optimaliseren.
En een feature rich abstracte Platform API
Crossplatform is dan ook beter binnen berijk.
Het wordt zo langzamerhand wel wat vermoeiend, dat gekrakeel over "Het is zo moeilijk!!!111". Ja, programmeren is voor een ongeletterde leek moeilijk ja. Voor mensen die weten waar ze mee bezig zijn, is het echter niet moeilijk. Tuurlijk heb je lastige problemen soms, maar dat is juist een van de leuke kanten van het vak. Ik snap daarom ook niet echt waar dat gepruttel vandaan komt dat deze chips zo moeilijk zijn te programmeren. Het is 'anders', maar daarom niet intens moeilijk.

Dit is overigens ook de gemiddelde reactie die ik lees van doorgewinterde PS2 programmeurs: het is juist een van de leuke kanten van het vak dat je er zoveel mogelijk uit moet proberen te persen en dan je zoveel mogelijk moet verdiepen in waar winst in zit om zo optimaal resultaat te halen.

Dat is niet voor iedereen weggelegd nee, maar EXACT hetzelfde geldt voor bv software die veelvuldig gebruikmaakt van een database: hoe benut je zo optimaal de schaarse resource 'database' ? Dat is niet 'intens complex en dus een extreem nadeel', nee het is juist een van de leuke uitdagingen waar een programmeur juist zn voldoening uit kan halen. Daarom snap ik ook niet zo waarom sommige 'programmeurs' er over zeuren. Ga dan iets anders doen dan software bouwen.

In de demoscene zeurde ook nooit iemand dat die amiga met zn 3 chips toch zo complex was te programmeren en dat het zoooo lastig was om alles eruit te persen. Nee, men dook er juist bovenop om JUIST dat naarboven te halen wat er in zat. Tuurlijk kost dat tijd, voorn. om de kennis op te doen om de aanwezige problemen op te lossen, maar dat is niet raar of 'lastig'. In IEDER vakgebied heb je dat. Of denkt men soms dat een vuilnisman zonder enige opleiding even een theoretisch natuurkundig probleem te lijf kan ?
Ik vind het ook leuk om programmeerproblemen te lijf te gaan. Mijn werkgever wil alleen graag dat ik mijn software ook een beetje vlot klaar heb. Als de achitectuur zo is dat het programmeren ervoor relatief lastig is en meer tijd kost wordt het ontwikkelen ervoor te duur en zal er eerder voor een andere architectuur gekozen worden.

Multithreaded programma's maken voor 8 cores is nu eenmaal heel lastig omdat je continu met veel threads moet werken om die 8 cores aan het het werk te houden om de boel efficient te gebruiken. Het ontwikkelen voor 1 core die 8 keer zo snel is veel simpeler en de code is beter onderhoudbaar.
Multiprogramma's (om eens een ouderwetse term voor || programma's te gebruiken) zijn inherent moeilijk. Het aantal combinaties van mogelijkheden stijgt exponentieel met het aantal threads, dus ieder synchronisatiepunt is een uitdaging want een potentiele dead- of livelock.

Bij ons op het werk hebben we efficiente multithreading maar weer uit de programma's gesloopt omdat 90% van de andere programmeurs (allemaal HBO+) het echt niet begrijpt.
Sad but true...
Op de HBO opleiding die ik gedaan heb kwamen dit soort zaken niet aan bod tenzij je zelf een mogelijkheid vind dit in te passen in je studie met een project ofzo. Op andere HBO's is dit volgens mij niet veel anders.
indd sad but true.

Tijd voor een tweede studie. :9
Of denkt men soms dat een vuilnisman zonder enige opleiding even een theoretisch natuurkundig probleem te lijf kan ?
Nooit mensen over 1 kam scheren! Einstein faalde voor zijn wiskunde en misschien deed die vuilnisman dat ook voordat hij aan zijn vuilnisman-bestaan begon.

edit: Taalfouten kunnen ook een belemmering vormen dus heb ik de grootsten eruit gehaald.
Tuurlijk programmeurs zeuren veel, maar het punt is juist dat de Cell zo complex is dat slechts de beste 1% programmeurs hem optimaal zouden kunnen benutten (en de overige 99% zeurt dan ja, al dan niet te lam om bij te leren). Dat is echt te weinig om er een succes van te maken.

Niet alleen moeten programmeurs nu in threads gaan denken, maar ze moeten ook nog hun code gaan vectorizeren en gaan nadenken over synchronisatie, verdelen van de code over PPC en SPE's, wat van mn data zet ik in het local memory (dat maar 256KB groot is), niet teveel branches etc etc. Seriously, een heterogenous multi-processor als Cell goed programmeren lijkt me ontzettend moeilijk en maar voor erg weinig mensen weggelegd.
Dit is denk ik ook geen technisch probleem maar eerder een economisch probleem.

Moeilijkere techniek -> meer ontwikkeltijd / duurdere ontwikkelaars -> duurder spel
mss wil ik wel een ps3, maar dan zeker niet om spelletjes te spelen :)
Anoniem: 30917 @EfBe27 februari 2006 16:19
Tuurlijk heb je lastige problemen soms, maar dat is juist een van de leuke kanten van het vak. Ik snap daarom ook niet echt waar dat gepruttel vandaan komt dat deze chips zo moeilijk zijn te programmeren. Het is 'anders', maar daarom niet intens moeilijk.
Als je als programmeur lastige problemen moet oplossen omdat de hardware dat van je eist dan is dat heel wat anders dan een leuk programmeerprobleem oplossen met bv een algoritme.

Programmeurs willen het liefst duidelijk overzichtelijke code, met daarin de mooiste oplossing qua structuur. Dingen multithreaded doen, zijn zelden de mooiste oplossingen, wel vaak de snelste. Er zijn wel dingen waarvan het vanzelfsprekend is om dat in verschillende threads te doen, zoals bv tegelijk geluid afspelen en opnemen. Maar 2 verschillende monsters die je aanvallen in verschillende threads hun nieuwe positie laten bepalen levert complexe lelijke code op.

Multicore is niet per definitie geavanceerdere hardware die de software maar moet bijbenen. vaak is een enkele core die gewoon sneller is veel nuttiger. Maar ja, die kloksnelheid omhoog krijgen wordt steeds lastiger.
Sony zet met deze Cell processor wel een heel grote maar vooral riskante stap. De kans bestaat dus dat het even kan duren voordat de volledige potentie van het apparaat gebruikt kan worden net als met de PS2. Al is Playstation door de inzet van toen we heel groot geworden.

Het zal denk ik even nagelbijten worden voor Sony in het begin van de PS3 tijd, maar misschien kunnen ze er eerst mee weg komen door hun grote marktaandeel en dat nog altijd de meeste spellen voor de Playstation uitgebracht worden. Hopelijk wordt het geen flop zoals de te vroege Sega Dreamcast, maar zeker is wel dat de PS3 technisch gezien een heel belangrijke stap gaat zijn in de console wereld.
De stap die Sony gaat maken is minder groot dat Sony en IBM je willen doen geloven. De Cell is feitelijk niets meer of minder dan een PowerPC CPU met 8 rekeneenheden, oftewel sub-cores. Deze eigenschappen maken de Cell voornamelijk goed in floating point berekeningen.

In videogames heb je niet zo heel veel aan floating point berekeningen. Door het gebrek aan technologieen als branche prediction en het feit dat de sub-cores anders zijn qua architectuur dan de maincore is de Cell bovendien een ramp om voor te programmeren.

Ik denk persoonlijk dat de triple-core PowerPC architectuur in de Xbox 360 (waarbij alle cores identiek zijn) krachtiger is dan de Cell. Maar los daarvan is een hedendaagse dual core x86 CPU waarschijnlijk nog altijd de snelste van allemaal.
@yep
ik denk dat je je daar lelijk in vergist,

in denk aan koppen als
• Mercury komt met militaire toepassing Cell-processor
• Toshiba, Sony en IBM bouwen Cell-project verder uit
• Eerste externe klant voor Cell-processor aangekondigd

@ALL -
ik merk dat men hier geleik begint over de problemen van de PS3 maar laten we dan even vooral [b[[u]NIET[/u][/b] vergeten dat de CELL allang geen 'game cpu' meer is, maar hard op weg naar een gewone Architectuur, net als de X86 de IA 64 de PPC en nu dus ook de CELL het mag dus best nog even duren voor dat er compilers zijn die ECHT veel kunnen voor de x86 heeft dat ook behoorlijk lang geduurt, ik vraag me bijv af holang talen als delphi en C+ inmiddels als volwasse beschoud kunnen woorden en hoe dat zit met VB java en dat soort talen, ik den dat dat zeker meer dan 15 jaar heeft geduurd voor je nivo 4 programmeurs echt kunt bedienen... voor de cell zou dat dus ergens rond 20015 zijn, hoewel ik denk dat 2010 misschien (op basis van dat ze al veel ervaring hebbe over hoe mensen graag werken) ook wel haalbaar zou kunne zijn... voor de eerste releases....
De Cell is feitelijk niets meer of minder dan een PowerPC CPU met 8 rekeneenheden, oftewel sub-cores
Ja en de 8 spe's zijn stuk voor stuk sneller dan welke P4 chip dan ook. Die zijn niet zo geschikt voor pc's maar wel voor het (de)coderen van bijv. HD streams en het renderen van 3D in games.
In videogames heb je niet zo heel veel aan floating point berekeningen
Nee, vandaar dat zowel de X360 cpu en Cell zo zijn ontworpen dat ze een hele hoop floating point berekeningen kunnen doen |:(
Flops zijn juist wel erg belangrijk voor grafische berekeningen.
Door het gebrek aan technologieen als branche prediction en het feit dat de sub-cores anders zijn qua architectuur dan de maincore is de Cell bovendien een ramp om voor te programmeren
Voor jou mischien wel...
Ik denk persoonlijk dat de triple-core PowerPC architectuur in de Xbox 360 (waarbij alle cores identiek zijn) krachtiger is dan de Cell
Wat jij denkt is niet van belang. De feiten tonen aan dat de Cell bijna 2x zoveel Flops kan berekenen als de Xenon (X360 cpu)
Maar los daarvan is een hedendaagse dual core x86 CPU waarschijnlijk nog altijd de snelste van allemaal.
:D Ja voor je pc mischien maar qua rekenkracht haalt ie nog geen fractie van de Cell.
Op paier maar wat kunne ze van de potentie waarmaken? Dat wachten we eerst maar eens af.
Los daarvan:
Het is gewoon 'n feit dat ontwerpen voor cell moeilijker is dan voor de Classieke PC maar dit geld ook voor Xbox en PC waar het nu heen gaat Multicore.
Ten eerste moet er rekening gehouden met de capaciteiten van de programmers. De standaard is nog steeds single threaded voor games.
Die moeten dus nu aardig SMP design en coden en threadsave werken onder de knie krijgen en dan toepassen. Design moet ook al met SMP rekening houden. Buiten Assembler optimalisatie voor SMP platformen. Wat er ook nog eens bijkomt.
Geld voor PC, Xbox en Cell Dual/Triple/Oct core.

Wat Xbox en PC gemeen hebben is dat het Out of order cores zijn en multipurpouse. Breed inzet maar uitblinken in een taak dus niet. Alle staan dus voor de overgang naar SMP development.
Voor Cell speeld toch iets meer mee dan SMP alleen hoewel dit toch wel 'n groote impact heeft. Octcore. Maar het is 1 plus 7 Oct core dus A-symetrisch.
Één In-order Multipurpous-core voor IO etc basic stuff.
Plus zeven In order Cores elk met hun eigen kleine werkgeheugen Pooltjes zonder cache. Waardoor Lantencies zeer voorspelbaar zijn.
Dat is dus SMP plus Core selectie plus inorder optimalisaties plus geheugenristrictie en latency optimalisatie. Voor zo'n assembler Guru.

De stap van Xbox1 naar Xbox360 is al groot alleen al door SMP adoptie. Dat heeft zijn tijd nodig.Cell is nog extremer. Plus met single tread laat je 7/8 van zijn potentie liggen. En zonder Optimalisatie nog meer.

Men verwacht dat de eerste Xbox360 titles nog steeds Single treaded zijn met hooguit helper threads Load/deencode/decompress threads. SMP adoptie heeft zijn tijd nodig en dit kan jaren duren.
Maar één core heeft al redelijk wat potentie als je weet dat Xbox1 maar 'n Celleron/PIII hybride was. Wat voor 'n concole al voldoende was.

MAW De Dev's Guru's Hoe goed ze ook zijn, hebben dus een hele veel grotere kluif gekregen om in te bijten.

Daarnaast is de stap voor PS3 ontwikkelaars groter dan voor XboxII Dev's. Houd in dat de games die het onderste uit de kan halen van de PS3 misschien wel pas de 3de generatie PS3 games zullen zijn. Als dus nu Game X uitkomt voor PS3 on release dan zal over 8 jaar pas het onderste uit de kan gehaald worden. MAar dan tegen Xbox3.

En PC? Als men de PS3 eindelijk goed onder de knie heeft zit iNTel & AMD ook al aan de A-symetrische Multie cors dus 2 PPE en 10 SPE ofzo.
en dan komt iNTels Compiler Knowhow om de hoek kijken. Wat ook wat jaartjes nodig heeft.

Voor CrossPlatform is SMP sowieso een noodzaak aangezien de top consoles maar ook PC SMP Platformen worden of zijn.
Daarnaast zal PC eerst meer op XboxII lijken door Dual en Symetrische-multie cores later meer oop Cell door ook SPE cores.
nu jullie zelf al aangeven wat precies het probleem is van de ps3, zal dat ook wel al een tijdje bekend zijn bij de maker ervan, en de bedrijven die spellen maken, dis door de jaren heen al aardig wat stappen hebben gemaakt om steeds voor de nieuwste consoles te kunnen programeren.
op het aanpassen van ontwikkelmethodes, en software, zal wel een focus zitten als je er over denkt goeie spellen te maken voor de ps3.

wie weet is men daar zelfs al aardig in geslaagd?
wie weet is men daar zelfs al aardig in geslaagd?
ongetwijfeld, bij Sony en Microsoft zal vast en zeker de blamage in het geheugen gegrift staan die de Nintendo N64 heet. Dat ding schijnt zo'n ongeloofelijke draak geweest te zijn om voor de te coden dat menig developer er maar vanaf zag. Mede hierom heeft Nintendo veel sneller dan origineel geplanned de Gamecube moeten lanceren, die dit euvel meer dan goed maakt. Maar het kwaad was toen al geschied natuurlijk.
Al met al kan het dus nog wel jaren duren voor het ontwikkelen voor de PlayStation 3 net zo makkelijk wordt als voor de pc.
Sega Saturn syndroom. :P
Anoniem: 169541 26 februari 2006 16:03
/set mode dreaming
Met al die mogelijkheden zou het misschien geen gek idee zijn om een cell op een agp/pce insteekkaart te zetten en vrij programmeerbaar te maken ,fysiks ,supersnelle grafix...
/set mode real life

but i will keep on dreaming.... :Z
het kan dan misschien wel erg moeilijk zijn om voor de volle 8 cores te programmeren, maar (and correct me if I'm wrong, n00b alert...) is het niet zo dat je wel meer dan 1 app draait, en dat als dat allemaal tegelijk moet draaien (servertje met apache, een database, en wat zelfgeschreven software om input te interpreteren) je waarsch. niet boven de 2 a 3 cores per programma uit zal gaan? dat zou toch al heel wat minder problemen op moeten leveren :)

Op dit item kan niet meer gereageerd worden.