Föreställ dig att din arbetsgivare plötsligt en dag kommer med ordern: ”Bygg en superdator! Och den ska vara bra!” En panikartad känsla infinner sig. Vad ska man tänka på när man sätter ihop en dylik maskin? Vilka komponenter är lämpligast? Vilket operativsystem?
Du behöver en snabbkurs i superdatorer, och var är bäst att vända sig med frågor än stället där man bygger sådana maskiner: Parallelldatorcentrum (PDC) på Kungliga Tekniska Högskolan i Stockholm. TechWorld gjorde ett besök.
– Vi brukar börja med att fråga beställaren vilka applikationer man ska köra. Antigen bygger man ett system för allmänna beräkningar, eller ett som är speciellt anpassat för den applikation man ska köra, säger Daniel Ahlin, teknisk chef på PDC.
– Det kan göra väldigt stor skillnad i pris och prestanda. En av de viktigaste aspekterna är om man ska köra ett enda jätteproblem, eller flera mindre problem samtidigt.
Den stora stötestenen
Den stora stötestenen är nämligen hur man löser kommunikationen inom datorn. Processar man ett enda jätteproblem måste man lösa kommunikationen inom hela datorn, men med flera små problem behöver man bara kommunicera effektivt inom de enskilda grupperna.
Problemen kan antigen vara trivialt parallelliserbara, där resurserna kan arbeta oberoende av varandra på små delar av problemet, eller också kan det vara svårt att parallellisera och problemet kan ha som egenskap att de olika beräkningsresurserna behöver utbyta mycket information under beräkningens gång. Då hamnar en stor del av investeringsbudgeten på nätverksbiten.
Vi tar konfigurationen av en ljuddämpare som exempel. I det fallet vill man prova några miljoner olika parametrar på en ljuddämpare och få ut ett godhetstal. En sådan parameterstudie kräver oftast inte särskilt mycket kommunikation. Löser man i stället stora linjära ekvationssystem hamnar man någonstans i mitten. Vid spektralanalys med till exempel en stor distribuerad fouriertransform måste alla noder kommunicera med alla. Vid meteorologiska problem behövs väldigt mycket indata och noderna måste dela data med varandra. Cad-ritningar av bilar för syntetiska krockprover eller flygplansvingar för böjprover är mycket tunga indatafiler.
Maxa allt, eller?
Om vi talar om komponenter, vill man bara ha mesta möjliga processorkraft och minne för pengarna?
– Nja, inte riktigt. Du vill inte köpa för snabba processorer. Energieffektivitet är väldigt viktigt. Går du från 2 till 3 gigahertz i processorn dubbleras strömförbrukningen. På prestandasidan har vi fyra mått: minnesbandbredd, flyttalsprestanda, nätverkets latens och dito bandbredd. Mängden minne är inte helt avgörande. Man kan betrakta minnet i hela systemet kontra minnet i varje nod. Om problemet kan parallelliseras väl, är minnet i hela systemet viktigare än mängden per nod. För mycket minne är bara slöseri. Har varje server fyra gigabyte minne per kärna, men man inte använder mer än två, drar minnet onödigt mycket ström, säger Johnny Eriksson, systemansvarig för superdatorn Lindgren.
Infiniband vanligast
Vilket nätverk ska man välja för kommunikation mellan datorerna?
– För ett litet system, eller om det gäller trivialt parallelliserbara applikationer, kan ethernet vara ett alternativ, men för större system är Infiniband vanligast, säger Daniel Ahlin.
– Naturligtvis kan man köpa mindre Cray-system, med deras egenproducerade nätverk Gemini. Extoll är ett annat. Norska Numascale och SGI Numalink är andra alternativ. Men om du ska bygga själv i dag är det Infiniband som gäller, men släng ett getöga på Extoll och Numascale, säger Johnny Eriksson.
Sedan kommer vi till topologin. Systemet byggs normalt med två olika nätverk: ett åtkomstnät för att starta och kontrollera beräkningen, och ett annat för kommunikation under beräkningens gång. Vanligen används det senare även för att sprida indata före och hämta utdata efter körningen.
Bandbreddsskillnaden mellan åtkomstnätet och beräkningsnätet är ofta en faktor 1:30 eller mer – åtkomstnätet är mycket, mycket långsammare än beräkningsnätet.
Det är också en väldig skillnad i latens. Ett ethernetnät med några switchar kanske får en latens på 50 mikrosekunder, medan ett Infinibandnät ligger strax över en mikrosekund. När man har processorer som gör 4–8 operationer på en nanosekund rör sig nätverkslatensen kring 8 000 operationer för en enda kärna.
– Hårddiskar behöver man inte ha i beräkningsnoderna. Beräkningsnätet är snabbare än något hårddiskgränssnitt. En bättre lokal disk kanske ger 200 megabyte per sekund, medan beräkningsnätet ger 5–6 gigabyte per sekund. Endast ett raid-system klarar av att leverera data i paritet med beräkningsnätet. Då är det bättre att ha lagringen centraliserad. Normalt offrar man 1–3 procent av noderna i nätet som diskservrar, säger Johnny Eriksson.