Nämn en processor eller APU, inte GPU eller instickskort, som drar 300W i dagsläget. Annan produkt andra förutsättningar.
"Ånej! Vi råkade bygga in en ARM-CPU i vår uppkommande Fiji-krets, helvete! Nu får den ju inte dra mer än 2W! :O"
Lägg ner tramset. Om du kallar det APU eller GPGPU med hjälpkärnor, CPU eller vad du vill ändrar inte på vad det är. Kan inte bara byta namn på något och helt plötsligt gäller helt andra fysikaliska lagar. En GPU kan utan problem dra 300W, om du gör den till en APU genom att lägga in en CPU begränsar den inte magiskt ner till 95W eller någon annan vanlig CPU-TDP. Den kan fortfarande dra 300W.
Det är just det, att prestanda fortfarande står i centrum snarare än energiförbrukning. Vi minskar energiförbrukningen för att kunna öka prestandan och hålla status quo med grafikkort och APUer som skalas upp för att dra 300W. Det jag hade hoppasts på är att vi istället börjar med att titta på energiförbrukningen och sedan prestandan. Att sätta prestandan först är engligt mig ett förlegat tankesätt även i HPC applikationer.
Adapteva är ett väldigt intressant företag som helt vänt upp och ned på detta. De har satt energieffektivitet i centrum men når fortfarande väldigt god prestanda. De påstår till deras produkter har "världens bästa prestanda/w". Källa:http://www.adapteva.com/introduction/
Prestanda/W står i centrum. Ibland kan man vid fundamentalt olika miljöer få andra infallsvinklar på problem som gör att man även kan effektivisera på annat håll. På så sätt har utvecklingen av GPU-kretsar för mobiler gynnat utvecklingen av grafikkort till stationära datorer. Men att begränsa en HPC-APU till 200W eller ens 100W istället för 300W ger inte alls några andra infallsvinklar. Man försöker fortfarande få så mycket prestanda som möjligt genom att på så många sätt som man bara kan komma på öka prestanda/watt.
Det förutsätter att kylningslösningen för ett produkt med 300W tdp är så pass mycket lägre att det lönar sig. Lagen om diminishing returns säger oftast att det inte är det. Att ha flera energisnåla enehter har visat sig gång på gång vara mer effektivt än att ha en energislukande enhet. Varför gick vi t.ex från enkärninga processorer till flerkärninga?
Lagen om diminishing returns gäller exemplariskt bra när det kommer till antalet CPU-kärnor. Men det kanske du missat? HPC-scenariot dessa processorer ska användas till använder GPU-kärnor mycket. Där vill man ha så många Tflops som möjligt per rack. Du kommer få fler Tflops med stora kretsar i hög frekvens än vad du kommer få med många små i samma rack.
Ska du ha 4000 eller 1000 shaders i en APU så kommer de göra anspråk på ungefär lika mycket yta på moderkort, med ungefär lika mycket kylning. Vilket sänker effektiviteten totalt sett. Kommer du ha 250MHz istället för 1000MHz på APUn så kommer det fortfarande ta upp ungefär lika mycket plats på moderkort, även om du kan få ner kylningen. I slutändan kommer du helt enkelt få behöva fler rack, nätdelar, moderkort, minnesmoduler och mer höghastighetskommunikation för att få det att fungera lika snabbt om du ska börja begränsa dina APU:er i onödan. Tror du tänker mer på dessa serveridéer med atom-processorer eller ARM-processorer där man faktiskt kan få in betydligt mer beräkningskapacitet genom att stoppa in fler enheter på moderkortet. Men det är ENBART för att man inte byggt ihop dem till större chip ännu. Intel har Knights Corner som exempel. Varför tror du att de har 72 kärnor på en 300W krets istället för 18 quadcores över ett helt moderkort?
Du tänker snävt. Att ha flera små snålare enheter som gör jobbet är effektivt, ja. Men det är ännu effektivare att bygga ihop dessa många små enheter.
4096 GPU-shaders kan göra mer än en högfrekvens-shader. Men 4096 shaders ihopbyggda i en GPU är överlägset 4096 individuella shaders i varsin krets på ett moderkort. Det är även överlägset 4 chip med vardera en fjärdedel av prestandan också ur såväl energieffektivitetsynpunkt som utrymmeseffektivitessynpunkt.
GPU:er är av naturen högst parallelliserbara, därför går det utmärkt att bygga dem stora. Även du måste ju inse att det finns en anledning till att man för parallelliserbara CPU-applikationer bygger ihop CPU-er till multicores istället för att köra med dem var för sig eller hur?
Kortsagt, energieffektivitet per enhet är viktigt, men fördelarna av att bygga ihop enheter till multienheter är också viktiga, och dessa tillvägagångssätt konkurrerar inte med varandra. Många snåla enheter är överlägsna en stor, men en APU på 300W är en extremt effektiviserad version av tusentals små enheter.