
Je hoeft geen chipontwikkelaar te zijn om te programmeren voor FPGA's, net zoals je geen C++-programmeur hoeft te zijn om code in Java te schrijven. In beide gevallen kan het echter nuttig zijn.
Het doel van de commercialisering van beide technologieƫn, Java en FPGA, is om de laatste uitspraak te weerleggen. Goed nieuws voor FPGA's: met de juiste niveaus van abstractie en een toolkit is het de afgelopen 35 jaar, sinds de uitvinding van programmeerbare logische apparaten, steeds gemakkelijker geworden om algoritmen en gegevensstromen voor FPGA's te creƫren in plaats van voor CPU's, DSP's, GPU's of andere vormen van speciale ASIC's.
De opmerkelijke tijdigheid van hun creatie komt tot uiting in het feit dat net toen CPU's niet langer de enige rekeneenheid konden zijn voor het uitvoeren van meerdere taken - om verschillende redenen - FPGA's hun efficiƫntie bereikten door hoge prestaties, lage latentie, netwerkmogelijkheden en geheugen te bieden - uiteenlopende rekencapaciteiten van moderne FPGA SoC's, die praktisch volledige rekensystemen vertegenwoordigen. datacenters FPGA's kunnen echter ook goed samenwerken met andere apparaten in hybride systemen, en naar onze mening beginnen ze pas hun legitieme plaats in de hiƫrarchie van berekeningen te vinden.
Daarom hebben we op 22 januari de conferentie The Next FPGA Platform in San Jose georganiseerd. Natuurlijk is een van de belangrijkste FPGA-leveranciers ter wereld en een pionier op dit gebied het bedrijf Xilinx. Ivo Bolsens, senior vice president en CTO van Xilinx, had een presentatie op de conferentie en deelde zijn huidige gedachten over hoe Xilinx helpt bij het creƫren van aanpasbare rekensystemen voor datacenters.
Systemarchitecten en programmeurs hebben veel tijd gehad om te komen tot een heterogene datacenter, waarin verschillende soorten computerkracht aanwezig zijn die taken voor berekeningen, opslag en netwerkorganisatie kunnen uitvoeren. Dit lijkt noodzakelijk te zijn, gezien het steeds moeilijker wordt om de wet van Moore te volgen met het gebruik van verschillende CMOS. Terwijl onze focus nog steeds op de CPU ligt, praten we nog steeds over 'applicatieversnelling', waarbij we de verbeterde prestaties van software bedoelen in vergelijking met wat mogelijk is op alleen CPU's. Op een gegeven moment zullen datacenters veranderen in verzamelingen van rekencapaciteiten, datageheugen en protocollen die alles met elkaar verbinden, en we zullen terugkeren naar termen als 'computing' en 'applicaties'. Hybride computing zal net zo normaal worden als de huidige 'cloud' diensten, die gebaseerd zijn op gewone of virtuele machines, en op een gegeven moment zullen we gewoon het woord 'computing' gebruiken om hun werking te beschrijven. Op een gegeven moment - en waarschijnlijk zal de komst van deze era actief worden bevorderd door FPGA's - zullen we dit weer data processing noemen.
Voor de integratie van FPGA's in datacenters is een verandering van denkwijze nodig. 'Bij het nadenken over manieren om de huidige applicaties te versnellen, moet je teruggaan naar de basis van hoe ze worden uitgevoerd, welke middelen worden gebruikt, en waar de tijd naartoe gaat,' legt Bolsons uit. 'Je moet de algemene probleemstelling bestuderen die je probeert op te lossen. Veel applicaties die tegenwoordig in datacenters draaien, schalen op en verbruiken een groot aantal middelen. Laten we bijvoorbeeld machine learning nemen, dat een enorme hoeveelheid rekeneenheden gebruikt. Maar als we het over versnelling hebben, moeten we niet alleen denken aan het versnellen van berekeningen, maar ook aan het versnellen van de infrastructuur.'
Bijvoorbeeld, in de machine learning operaties die Bolsons in de praktijk heeft bestudeerd, wordt ongeveer 50% van de tijd besteed aan dataverkeer heen en weer tussen verspreide rekencapaciteiten, en slechts de resterende helft van de tijd wordt besteed aan de eigen berekeningen.
Hier lijkt FPGA te helpen, omdat we zowel de rekenaspecten als de dataverzending voor de applicatie kunnen optimaliseren. Dit kan zowel op het niveau van de infrastructuur als op het niveau van de chip. Dit is een van de grote voordelen van FPGA's, waarmee we netwerken kunnen creƫren die zijn afgestemd op de specifieke behoeften van de applicatie. Bij het observeren van de typische patronen in de gegevensstroom binnen AI-gerelateerde taken zie ik geen behoefte aan complexe schakelingen. We kunnen een netwerk bouwen met een hoge gegevensdoorstroming. Hetzelfde geldt voor taken die met het trainen van neurale netwerken te maken hebben; we kunnen een celnetwerk bouwen met pakketgroottes die zich aanpassen aan de specifieke taak. Met FPGA's kunnen we zeer nauwkeurig de protocollen voor gegevensoverdracht en de topologie van de schakeling afstemmen op de specifieke applicatie. En in het geval van machine learning is het ook duidelijk dat we geen dubbele precisie floating point-getallen nodig hebben, en dat kunnen we ook aanpassen.
Het verschil tussen FPGA en CPU of gespecialiseerde ASIC is dat de laatste worden geprogrammeerd tijdens de productie, en daarna kun je niet meer van gedachten veranderen over het type verwerkte gegevens of rekenelementen, of de aard van de gegevensstroom die door het apparaat gaat. FPGA's stellen je in staat om van gedachten te veranderen als de werkomstandigheden veranderen.
In het verleden was dit voordeel duur, omdat programmeren voor FPGA niet voor de zwakken was. Het is nodig om de compilers voor FPGA's te openen, zodat ze beter integreren met de tools die programmeurs gebruiken om applicaties met parallelle rekenprocessen voor CPU's te creƫren in C, C++ of Python, en een deel van het werk aan bibliotheken over te dragen die procedures op FPGA versnellen. Dit is waar de Vitis-stack voor machine learning voor zorgt, die de basis vormt voor platforms zoals Caffe en TensorFlow, en bibliotheken heeft voor het uitvoeren van algemene AI-modellen of voor het toevoegen van FPGA-functionaliteiten aan taken zoals video-encoding, objectherkenning in video, data-analyse, risicobeheer en andere externe bibliotheken.
Dit concept verschilt niet veel van het CUDA-project van Nvidia, dat tien jaar geleden is gelanceerd en parallelle berekeningen op GPU-versnellers overbrengt, of van de ROCm-tools van AMD, of van de beloften van het Intel-project OneAPI, dat zou moeten werken op verschillende CPU's, GPU's en FPGA's.
De vraag is alleen hoe al deze gereedschappen samen zullen worden verbonden, zodat iedereen een set rekencapaciteiten naar eigen inzicht kan programmeren. Dit is belangrijk omdat FPGA's complexer zijn geworden, veel complexer dan welke CPU dan ook. Ze worden vervaardigd met de meest geavanceerde technologieprocessen en met behulp van de meest moderne chips verpakkingsmethoden. En ze zullen hun niche vinden, aangezien we onze tijd, geld, energie en intelligentie niet meer kwijt kunnen raken - dit zijn allemaal te dure middelen.
"FPGA biedt technologische voordelen," zegt Bolsen. "En dit is niet gewoon een reclamepraatje over aanpasbaarheid en herprogrammering. In alle belangrijke toepassingen - machine learning, grafanalyse, high-frequency trading, enzovoort - hebben ze de mogelijkheid om niet alleen het datastromen te optimaliseren voor specifieke taken, maar ook de geheugarchitectuur - hoe de data binnen de chip bewegen. Bovendien hebben FPGA's veel meer geheugen ingebouwd dan andere apparaten. Ook moet in overweging worden genomen dat als een taak niet in ƩƩn FPGA past, het kan worden opgeschaald naar meerdere chips, zonder de tekortkomingen te ondervinden die je tegenkomt bij het opschalen van taken naar meerdere CPU's of GPU's."
Bron: habr.com
