Permalänk

Programmera med CELL

Hallå.

Jag skulle vilja höra om någon av er har erfarenhet av att programmera till CELL processorn? Jag är väldigt sugen på att införskaffa en PS3a och leka lite men jag är lite osäker på om det är värt 4000-5000kr.

Länka gärna till sidor med bra information och exempelkod.

Permalänk

http://www.google.se/search?hl=sv&q=programming+for+cell+cpu&...

Inte för att jag har kodat något för Cell, men de två översta träffarna verkar intressanta.

Permalänk

Nu är jag egentligen helt oinsatt i ämnet utan nämner bara det jag hört och läst (en del för väldigt längesen).
Vad är målet med att programmera för just CELL-processorn?
Det jag hörde senast var att t.ex. Yellow Dog Linux som går att boota på PS3an bara kunde använda en kärna så jag vet inte hur lätt det är att koda optimalt eller över huvud taget till den som är i PS3an.

Visa signatur

"Knowledge amplification. What he learns, we all learn. What he knows, we all benefit from."

Permalänk

Det är 6 av 7 SPE:r som finns att leka med i Linux på PS3:an. CELL processorn är just för att få leka med SPE:rna osv. då det verkar som man kan få ut en väldigt trevlig mängd med beräkningskraft.

Jag vet vad som behövs för att programmera på en PS3a. Tråden var menad mera åt programmeringsaspektet.

Permalänk
Hedersmedlem

Cellen är väldigt speciell att koda på. Den är inte det minsta lik en multi core x86. Det är en massa pill för att få något gjort öht.

Ta tex minneshantering. Varje SPU har 256kiB local store (vilket är spu'ns "ram"). För att få data mellan primärminne och ls använder man dma-calls. Man beställer dma-överföring av upp till 16kiB chunks mellan primärminne och ls. För att få lite fart vill man dubbelbuffra, dvs man räknar på en buffer medans mfc'n (spu'ns dma-controller) pumpar data mellan en annan buffer och minnet. Ovanpå detta kommer alignment. För att kunna föra över mer än 16b måste source och target-buffrarna vara 16 byte align. För att få ut mer än ca halva minnesbandbredden måste allt vara 128 byte aligned. Sen kommer det en hel drös med ytterligare detaljer på dma, och ytterligare pill om man vill köra inter-spu-kommunikation (vilket man vill för synkronisering mm, och för att minnesbussen blir full rätt fort).

Sen kommer saker med SIMD och vektorer vilket också är lite småknepigt att få till. Och SIMD-optimera vill man. En vektor är 4 floats, och det går normalt fortare att räkna på en hel vektor än en ensam skalär (pga aligmentgrejer mm).

SPU:erna är även värdelösa på "vanlig kod". De har ingen magisk branchprediction. Ifsatser, funktionsanrop m.m. förstör prestandan helt.

Den klarar peak 25GFLOPS per SPU, och den är förbannat snabb om man lyckas få till det. Dock så skulle jag inte förvänta mig att komma ens i närheten av 25GFLOPS per SPU, i alla fall inte om man gör något annat än matris-matris-multiplikation, gauseliminering eller så (enkla beräkningar med kvadratiskt antal operationer mot antalet operander). Jag har kommit upp till kring 22GFLOPS på en SPU med ett syntetiskt test. 1-9 är väl mer troligt när verkligheten tränger sig på.

Hur fort det går att få beroror helt på problemet.

Väldigt spännande platform, men ger inget gratis.

PS3:ans stora problem är minnet. de ca 210MiB'en som är över när hypervisorn tagit sitt räcker ju inte så särskilt långt. Fedora Core med SDK 3.0 rullar fint på den. SPU management har blivit mycket bättre sen de tidigare SDKna.

(Ursäkta för det slarviga inlägget och alla ej översatta begrepp, sitter och skriver på min exjobbsrapport i ämnet på engelska och orkar inte byta fack-språk )

Visa signatur

motor.holy.se - Projekt "Tüsk MiniJänk med Engelsk V8"
"Bingolotto, till och med Loket har trötnat" - Loesje
"Och jag som trodde att världens häftigaste moderator inte existerade!" - Robbster

Permalänk
Medlem

Om det inte just är PS3 du är sugen på, så är ett billigare alternativ (om du har ett hyfsat grafikkort) att du testar programmera lite mot din GPU istället. Är ganska lika princip, dvs både CELL och GPUn är snabba på sådant som går att parallelisera utan för mycket branchar som tex matris-beräkningar och liknande, dom kräver att man formaterar sin data, kräver lågnivå-"tänk" för att få prestanda osv.

På gpgpu.org finns en del om du är intresserad. (slö sida tyvärr)

Permalänk
Citat:

Ursprungligen inskrivet av Qaztaz
*

Låter som det kommer bli en hel del att sätta sig in i. Men det verkar som det är en rolig plattform och är förmodligen en bra erfarenhet.

Citat:

Ursprungligen inskrivet av vb
Om det inte just är PS3 du är sugen på, så är ett billigare alternativ (om du har ett hyfsat grafikkort) att du testar programmera lite mot din GPU istället. Är ganska lika princip, dvs både CELL och GPUn är snabba på sådant som går att parallelisera utan för mycket branchar som tex matris-beräkningar och liknande, dom kräver att man formaterar sin data, kräver lågnivå-"tänk" för att få prestanda osv.

På gpgpu.org finns en del om du är intresserad. (slö sida tyvärr)

Jag har lekt en del med GPU(shader) programmering och det var faktiskt det som gjorde mig sugen på att testa programmera till CELL processorn.

Permalänk
Medlem

det säljs tydligen även kort för helt vanliga PCs med CELL på om man tycker minnet är en begränsning. de lär iof vara rätt dyra men men..

(jag vet iof inte om det är nått privatpersoner kan få tag i lätt ska sägas också)

Visa signatur

Operativsystemet som löser nästan alla problem: Mint

Permalänk
Medlem

http://www.mc.com/microsites/cell/productdetails.aspx?id=2590

$7999 verkar det som de tar... en ps3 är betydligt billigare om man kan stå ut med att tappa några SPE:s

EDIT: lite mer allmän info http://www.ibm.com/developerworks/power/cell/documents.html

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk

$7999 är lite över min leksaksbudget.

Har i alla fall beställt en PS3a nu. Få se om det blir roligt eller ej.

Edit: Någon som vet om man kan köpa CBE Programmers Guide i tryckt form?