
Man skal ikke være chipudvikler for at programmere til FPGA, ligesom man ikke skal være C++-programmer for at skrive kode i Java. Dog vil det i begge tilfælde sandsynligvis ikke være en ulempe.
Målet med at kommercialisere både Java- og FPGA-teknologierne er at modbevise den seneste påstand. De gode nyheder for FPGA er, at det, ved hjælp af de rette abstraheringsniveauer og værktøjssæt, er blevet lettere at skabe algoritmer og datastreams til FPGA i de seneste 35 år siden opfindelsen af det programmerbare logiske enhed, i stedet for CPU, DSP, GPU eller enhver anden form for specialiseret ASIC.
Den fantastiske timing af deres skabelse viser sig i, at netop som CPU ikke længere kunne forblive den eneste beregningsmodul, datacentre for at udføre mange opgaver – af de mest forskellige årsager – er FPGA blevet effektive ved at tilbyde høj ydeevne, lav latens, netværksmuligheder og hukommelse – heterogene beregningsmuligheder fra moderne FPGA SoC, der repræsenterer næsten komplette beregningssystemer. Dog kombineres FPGA effektivt med andre enheder i hybride systemer, og efter vores mening er de kun ved at finde deres retmæssige plads i hierarkiet af beregning.
Derfor har vi organiseret konferencen The Next FPGA Platform i San Jose den 22. januar. Naturligvis er en af de førende FPGA-leverandører i verden og en pioner inden for dette område firmaet Xilinx. Ivo Bolsens, senior vice president og teknisk direktør for Xilinx, talte på konferencen og delte sine nuværende tanker om, hvordan Xilinx hjælper med at skabe fleksible beregningssystemer til datacentre.
Systemarkitekter og programmører har brugt lang tid på at nå frem til et heterogent datacenter, hvor forskellige typer computerkraft vil være tilgængelige og løse opgaver inden for beregning, lagring og netværksorganisering. Dette virker nødvendigt, fordi det er blevet sværere at følge Moores lov ved brug af forskellige CMOS-teknologier. Mens vores sprog stadig er bundet til CPU, og vi stadig taler om 'accelerering af applikationer' med henvisning til forbedringer i programmets ydeevne i forhold til det, der kan opnås udelukkende på CPU'er. Inden længe vil datacentre udvikle sig til sæt af beregningskapaciteter, datalagring og protokoller, der binder det hele sammen, og vi vil vende tilbage til termerne 'beregning' og 'applikationer'. Hybridberegning vil blive lige almindeligt som de nuværende 'cloud' services, der kører på almindelige eller virtual machines, og på et tidspunkt vil vi blot bruge ordet 'beregning' til at beskrive deres funktion. På et tidspunkt - og sandsynligvis vil denne æra blive fremmet af FPGA'er - vil vi igen kalde det databehandling.
For at implementere FPGA'er i datacentre kræves der et skifte i tankegang. 'Når man overvejer måder at accelerere dagens applikationer, må man grave ned til fundamenterne for, hvordan de udføres, hvilke ressourcer der anvendes, og hvad tiden går til,' forklarer Bulsens. 'Man skal anvende sig til det overordnede problem, som man forsøger at løse. Mange applikationer, der i dag kører i datacentre, skalerer ved at tage en stor mængde ressourcer. Tag for eksempel maskinlæring, som bruger enorme mængder beregningsnoder. Men når vi taler om acceleration, skal vi ikke kun tænke på acceleration af beregninger, men også på acceleration af infrastrukturen.'
For eksempel, i de operationer relateret til maskinlæring, som Bulsens har studeret i praksis, bruges cirka 50 % af tiden på at overføre data frem og tilbage mellem de distribuerede beregningskapaciteter, og kun den resterende halve tid anvendes på selve beregningerne.
«Præcist her, mener jeg, at FPGA kan hjælpe, da vi kan optimere både beregningsaspekterne og dataoverførselsaspekterne for applikationen. Og vi kan gøre dette på både det overordnede infrastruktur niveau og chip-niveau. Dette er en af de store fordele ved FPGA, der gør det muligt at skabe kommunikationsnetværk tilpasset applikationens specifikke behov. Når jeg observerer typiske mønstre for databevægelser i opgaver relateret til kunstig intelligens, ser jeg ikke behovet for en kompleks arkitektur baseret på switches. Man kan konstruere et netværk med en høj datagennemstrømning. Det samme gælder for opgaver vedrørende træning af neurale netværk – man kan bygge et gitternetværk med pakke størrelser, der tilpasser sig den specifikke opgave. Ved brug af FPGA kan man meget præcist skalere og tilpasse dataoverførselsprotokoller og kredsløbstopologi til den specifikke applikation. Og i tilfælde af maskinlæring er det også klart, at vi ikke har behov for dobbelt præcisions flydende tal, og dette kan vi også tilpasse».
Forskellen mellem FPGA og CPU eller specialiserede ASIC'er er, at sidstnævnte programmeres ved produktionen, og herefter kan du ikke ændre på typerne af beregnede data eller beregningskomponenter, eller på naturen af dataflowet der går gennem enheden. FPGA'er giver dig mulighed for at ombestemme dig, hvis arbejdsbetingelserne ændrer sig.
Tidligere var denne fordel dyr at opnå, når programmering til FPGA var for dem med svage nerver. Det kræver at åbne FPGA-compilerne, så de bedre integreres med de værktøjer, som programmører bruger til at skabe applikationer med parallelle beregninger for CPU på sprog som C, C++ eller Python, og dele noget af arbejdet med biblioteker, der fremskynder procedurer på FPGA. Dette er, hvad Vitis ML-stakken gør, som ligger til grund for sådanne ML-platforme som Caffe og TensorFlow, og har biblioteker til at køre almindelige AI-modeller eller tilføje FPGA's kapabiliteter til opgaver som videokodning, objektgenkendelse i video, dataanalyse, risikostyring og enhver tredjeparts biblioteker.
Dette koncept adskiller sig ikke meget fra Nvidias CUDA-projekt, der blev lanceret for ti år siden og overfører parallelle beregninger til GPU-acceleratorer, eller fra AMD's ROCm-værktøjssuite, eller fra Intel's OneAPI-projekt, der skal fungere på forskellige CPU'er, GPU'er og FPGA'er.
Spørgsmålet er blot, hvordan alle disse værktøjer vil blive bundet sammen, så enhver kan programmere et sæt beregningsressourcer efter eget valg. Dette er vigtigt, fordi FPGA'er er blevet meget mere komplekse end nogen af de tilgængelige CPU'er. De fremstilles med de mest avancerede nanoteknologiske processer og ved hjælp af de mest moderne chippakningsteknologier. Og de vil finde deres niche, da vi ikke længere har råd til at spilde tid, penge, energi og intellekt – alle disse er alt for dyre ressourcer.
„FPGA tilbyder teknologiske fordele,“ siger Bolesens. „Og det er ikke bare almindelig reklame for deres tilpasningsevne og omkonfigurerbarhed. I alle vigtige anvendelser – maskinlæring, grafanalyse, højhastighedshandel osv. – har de mulighed for at tilpasse ikke kun datavelden, men også hukommelsesarkitekturen til den specifikke opgave – hvordan data bevæger sig inden for chippen. Desuden er der meget mere hukommelse integreret i FPGA'er end i andre enheder. Det skal også bemærkes, at hvis opgaven ikke kan passes ind i én FPGA, kan den skaleres over flere chips uden at møde de problemer, man ville opleve ved at skalere opgaver over flere CPU'er eller GPU'er.“
Kilde: habr.com
