
FPGA jaoks programmeerimiseks ei pea olema kiibiarendaja, nagu ei pea olema C++ arendaja, et Java koodi kirjutada. Kuid mõlemal juhul võib see ilmselt olla kasulik.
Nende kahe tehnoloogia, Java ja FPGA, kommertsialiseerimise eesmärk on tõestada viimast väidet. Head uudised FPGA jaoks – õige abstraktsioonitasemete ja tööriistakomplektide kasutamisega on viimase 35 aasta jooksul, alates programmeeritava loogikaseadmest, algoritmide ja andmevoogude loomine FPGA-dele muutunud kergemaks kui CPU, DSP, GPU või iga muu spetsiaalse ASIC-i kasutamine.
Nende loomise märkimisväärne ajastus seisneb selles, et just siis, kui CPU ei saanud enam jääda ainsaks arvutusmoduliks andmekeskustes mitmete erinevate põhjuste tõttu, saavutas FPGA oma tõhususe, pakkudes kõrge jõudluse, madalat latentsust, võrguvõimalusi ja mälu – kaasaegsete FPGA SoC-de mitmekesised arvutusvõimaused, mis peaaegu kujutavad endast täielikke arvutussüsteeme. Samuti sobivad FPGA hästi ka teiste seadmetega hübriidsüsteemides ja meie arvates hakkavad nad alles leidma oma õigustatud kohta arvutuste hierarhias.
Seetõttu korraldasime konverentsi The Next FPGA Platform San José's 22. jaanuaril. Loomulikult on üks maailma peamisi FPGA tarnijaid ja selle valdkonna pioneere ettevõte Xilinx. Ivo Bolsens, ettevõtte Xilinx vanemdirektor ja tehniline direktor, esines konverentsil ettekandega ja jagas oma mõtteid selle kohta, kuidas Xilinx aitab luua muudetavaid arvutussüsteeme andmekeskustele.
Süsteemiarhitektide ja programmeerijate on kulunud piisavalt aega, et jõuda mitmekesise andmekeskuseni, kus on esindatud erinevat tüüpi arvutusvõimsus, mis lahendab arvutamise, salvestamise ja võrgu korraldamise ülesandeid. See näib olevat vajalik, kuna Moore'i seaduse järgimine erinevate CMOS-ide kasutamisel on üha raskem. Kunagi meie keel on endiselt seotud CPU-ga, ja me räägime endiselt "rakenduste kiirusest", pidades silmas programmide töö parendamist võrreldes sellega, mida saab teha üksnes CPU-dega. Aja jooksul muutuvad andmekeskused arvutusvõimsuste, andmesalade ja nende kõigi ühendavate protokollide kogumiks ning me naaseme selliste terminite juurde nagu "arvutused" ja "rakendused". Hübriidarvutused saavad olema sama normaalsed kui tänased "pilveteenused", mis põhinevad tavalisel või virtuaalmasinate, ja mingil hetkel kasutame lihtsalt sõna "arvutused", et kirjeldada nende tööd. Mingil hetkel – ja tõenäoliselt aitavad sellele ajastule aktiivselt kaasa FPGA-d – nimetame seda jälle andmete töötlemiseks.
FPGA-de juurutamiseks andmekeskustesse on vajalik muuta mõtteviisi. "Mõeldes tänapäevaste rakenduste kiirendamise viisidele, tuleb süüvida nende aluspõhimõtetesse, kuidas need täidetakse, milliseid ressursse kasutatakse, millele kulub aega, "selgitab Bolesens. – On vaja uurida üldprobleemi, mida üritate lahendada. Paljud rakendused, mis tänapäeval andmekeskustes töötavad, skaleeruvad, haarates suures koguses ressursse. Võtame näiteks masinõppe, mis kasutab tohutult palju arvutusnode. Kuid rääkides kiirusest, tuleb mõelda mitte ainult arvutuste kiirendamisele, vaid ka infrastruktuuri kiirendamisele."
Näiteks nende masinõppe operatsioonide puhul, mida Bolesens on praktiliselt uurinud, kulub umbes 50% ajast andmete edastamiseks edasi-tagasi hajutatud arvutusvõimsuste vahel ja ainult ülejäänud pool aega kulub arvutustele endile.
Just here, it seems to me, FPGA can help, as we can optimize both the computational aspects and the data transmission aspects for the application. And we can do this at the level of the overall infrastructure and at the chip level. This is one of the great advantages of FPGA, allowing for the creation of communication networks tailored to the specific needs of the application. Observing typical patterns of data movement in tasks related to artificial intelligence, I don't see the need for a complex architecture based on switches. A network with high data flow can be built. The same applies to neural network training tasks – a mesh network can be constructed with packet sizes adapting to the specific task. Using FPGA, data transmission protocols and circuit topology can be scaled and adapted very precisely for a specific application. And in the case of machine learning, it is also clear that we do not need double-precision floating-point numbers, and we can adjust this as well.
The difference between FPGA and CPU or specialized ASIC is that the latter are programmed during production, and after that, you cannot reconsider the types of computed data or computed elements, or the nature of the data flow through the device. FPGAs allow you to rethink if the operating conditions change.
In the past, this advantage came at a high cost when programming for FPGA was not for the faint-hearted. It is necessary to open FPGA compilers so that they integrate better with the tools used by programmers to create applications with parallel computations for CPU in C, C++, or Python, and to delegate part of the work to libraries that accelerate procedures on FPGA. This is precisely what the Vitis machine learning stack does, which underlies machine learning platforms like Caffe and TensorFlow, and has libraries for executing standard AI models or adding FPGA capabilities to tasks such as video transcoding, object recognition in video, data analysis, financial risk management, and any third-party libraries.
See kontseptsioon ei erine oluliselt Nvidia CUDA projektist, mis käivitus kümme aastat tagasi ja suunab paralleelsed arvutused GPU-kiirenditele, samuti AMD ROCm tööriistakomplektist või Inteli OneAPI projektist, mis lubab töötada erinevate CPU-de, GPU-de ja FPGA-dega.
Küsimus on vaid selles, kuidas kõik need tööriistad omavahel seostuvad, et igaüks saaks programmeerida arvutusvõimet vastavalt oma soovidele. See on oluline, kuna FPGA-d on muutunud keerukamaks, palju keerukamaks kui ükski olemasolev CPU. Neid toodetakse kõige arenenumate tehnoloogiliste protsesside abil ja kõige kaasaegsemaid kiibi pakendamise tehnoloogiaid kasutades. Nad leiavad oma niši, kuna me ei saa enam raisata aega, raha, energiat ja intelligentsust – kõik need on liiga kallid ressursid.
„FPGA pakuvad tehnoloogilisi eeliseid,” ütleb Bolsens. „Ja see ei ole lihtsalt tavaline reklaam kohandatavuse ja ümberseadmise kohta. Kõigis olulistes rakendustes – masinõpe, graafide analüüs, kõrge sagedusega kauplemine ja nii edasi – on neil võimalus kohandada mitte ainult andmete edastusviisi, vaid ka mälu arhitektuuri – kuidas andmed liikuvad kiibi sees. Ja FPGA-des on oluliselt rohkem mälu kui teistes seadmetes. Samuti tuleb arvestada, et kui ülesanne ei mahu ühte FPGA-sse, saab seda skaleerida mitmele kiibile, vältides neid puudusi, millega kokku puutute, skaleerides ülesandeid mitme CPU või GPU peale.“
Allikas: habr.com
