Gratis, heterogent och intelligent

Ibland blir jag lite imponerad. Det är bara att erkänna. Xilinx har lagt ner ruggigt mycket mantid och pengar i sin nya AI-mjukvara och beslutet att köra alltsammans som open source kan inte ha varit lätt.

Måste nå rätt användare
Men samtidigt är det naturligtvis ett fullständigt korrekt beslut. För den som vill vara med och spela i de ”högre AI-divisionerna” är det open source som gäller. Och Xilinx lever trots allt på att sälja hårdvara, så de har på många sätt ett bättre utgångsläge än alla de mjukvaruföretag som måste dra in sina pengar på tjänster.

Heterogent
Det handlar alltså om verktyg som hanterar steget från högnivåbeskrivning till hårdvara. I ”normala” embeddedsammanhang brukar det vara en kompilator som förvandlar C-kod till maskinkod för till exempel en ARM-processor. I ASIC-sammanhang kan det vara ett verktyg som omvandlar en hårdvarubeskrivning i C++-kod till RTL-kod.

Men VITIS, som den nya plattformen kallas, tar AI-definitioner gjorda i standarder som Caffe eller TensorFlow och kompilerar dem till den optimerade arkitektur som råkar passa bäst för ändamålet. Det finns en bunt arkitekturer att välja på och fler kommer till efter hand. Det finns heller ingen anledning att alla delar skall använda samma arkitektur. Tvärtom finns det all anledning att ha flera.

Arkitekturer förändras
Det här brukar kallas domänspecifika arkitekturer och vi har hunnit bli vana vid dem i form av grafikacceleratorer och DSP-arkitekturer. De flesta är vid det här laget överens om att domänspecifika arkitekturer är en förutsättning för att artificiell intelligens skall kunna fungera på ett tillräckligt energieffektivt sätt.

Men Xilinx tar de domänspecifika arkitekturerna ett steg längre. FPGA-tekniken gör det som sagt möjligt att ha många arkitekturer och framför allt är det möjligt att skapa nya arkitekturer i takt med att AI-tekniken förändras. Och det gör den.

ASSP hinner inte med
Här ser vi den stora skillnaden mellan Xilinx och företag som Nvidia och Google. Xilinx behöver inte låsa sin arkitektur för att sedan ägna ett par år åt att ta fram en ASSP. FPGA-arkitekturen är programmerbar och kan till och med ändra processorarkitektur under exekvering. Nya AI-arkitekturer kan relativt snabbt skapas i mjukvara och användas direkt.

Nackdelen är förstås den gamla vanliga. En ASSP kan klockas snabbare än en FPGA och det går åt färre transistorer för att utföra samma arbete. När de riktigt stora volymerna kommer blir ASSP-lösningen billigare. Men det gäller att gissa rätt. Att ta fram en avancerad komponent i spetsteknologi är fruktansvärt dyrt.

FPGA i många år
Så det är väl ingen tvekan om att Xilinx har stora fördelar. De behöver inte ta fram nya komponenter så fort någon kommit på ett bättre sätt att lösa problemen. Det räcker att utveckla nya FPGA-komponenter i den senaste teknologin – något som är svårt nog.

Problemlösningen sker i stället i mjukvara. Hittills har det här varit nog så krångligt, men med VITIS förenklas arbetet dramatiskt. Någon eller några måste fixa nya bibliotek, men också det är mycket enklare än hittills. Och när biblioteken finns på plats behöver man inte tänka så mycket på hårdvara. Det är redan fixat. Inte så dumt faktiskt.

Förresten är vädret här i San Jose riktigt behagligt.

One Response to “Gratis, heterogent och intelligent”

  1. Ett vanligt missförstånd är att man alltid kan ersätta hårdvara med mjukvara. Rent teoretiskt går det förstås, men inte praktiskt då detta i fel fall blir för stort, för dyrt och för energikrävande.

    Processorer är bra till saker som inte ska gå fort. De har också en fördel när det är stora mängder if – else som väljer ut vilken process som sedan ska processa datat.

    FPGA/ASIC är alltid bäst på när en specifik process skall köras en stor del av tiden.

    Nvidia gör reklam för sina grafikacceleratorer och tycker att de kan ersätta en FPGA. Jag håller inte med dem. De konkurrerar med processorer, men inte FPGAer. En grafikprocessor är i grunden en processor med bättre beräkningskapacitet och minnesaccess.

    Jag tycker den allmänna uppfattningen att FPGA är ett problemområde mest liknar någon konstig spökskräck. Mjukvarufolk betraktar mest ASIC/FPGA som någon sorts svart magi som bara ett fåtal konstiga HW-nördar behärskar.

    Det påstås också att HW dessutom har en lång utvecklingstid, men det håller jag inte med om. Visst måste mycket testning till för att få hårdvaran korrekt, men vill du ha en buggfri mjukvara så kommer också detta att ta tid. Fast där slarvas det så mycket mer. Varför kommer det varje månad ett stort uppdateringspaket till tex windows 7 trots att det började säljas för 10 år sedan!?! Det är rent sanslöst att det finns en massa buggar kvar efter så lång tid.

    Beteendesyntes har varit i ropet väldigt länge. Gick själv på en säljdemonstration för en sådan från Synopsys på 90-talet. Det blev en total flopp. Det var för svårt för verktyget att omvandla beteendekod till RTL-kod.

    Detsamma gäller påstående att C-program skulle omvandlas till grindar. Verilog försökte sig på något sådant i system C, men det språket blev en flopp.

    Jag har haft den här diskussionen förut för 20 år sedan. Det finns en anledning till att man i ASICs barndom tog C, lade till timing och därmed skapade språket verilog. ADA med timing blev VHDL. Jag förstår inte vad problemet är att använda dessa språk? Varför vill man gå tillbaks till C som helt saknar tidsbeskrivning?