
Nie musisz być projektantem chipów, aby programować dla FPGA, tak samo jak nie musisz być programistą Java, aby pisać kod w C++. Jednak w obu przypadkach prawdopodobnie nie zaszkodzi mieć pewne umiejętności.
Celem komercjalizacji obu technologii, Java i FPGA, jest obalenie ostatniego stwierdzenia. Dobre wiadomości dla FPGA – przy odpowiednich poziomach abstrakcji i zestawach narzędzi przez ostatnie 35 lat, odkąd wynaleziono programowalne urządzenia logiczne, coraz łatwiej jest tworzyć algorytmy i strumienie danych dla FPGA zamiast CPU, DSP, GPU lub jakiejkolwiek innej formy specjalnych ASIC.
Niesamowita aktualność ich stworzenia polega na tym, że w chwili, gdy CPU nie mogły być już jedynym modułem obliczeniowym, data-centra aby wykonywać wiele zadań – z różnych powodów – FPGA osiągnęły swoją efektywność, oferując wysoką wydajność, niskie opóźnienie, możliwości sieciowe i pamięć – różnorodne możliwości obliczeniowe nowoczesnych systemów FPGA SoC, które stanowią praktycznie pełnoprawne systemy obliczeniowe. Jednak FPGA doskonale współpracują także z innymi urządzeniami w systemach hybrydowych i naszym zdaniem dopiero zaczynają znajdować swoje zasłużone miejsce w hierarchii obliczeń.
Dlatego zorganizowaliśmy konferencję The Next FPGA Platform w San Jose 22 stycznia. Oczywiście jednym z głównych dostawców FPGA na świecie i pionierem w tej dziedzinie jest firma Xilinx. Ivo Bolsens, starszy wiceprezydent i dyrektor techniczny Xilinx, wystąpił na konferencji z prezentacją i podzielił się z nami swoimi dzisiejszymi przemyśleniami na temat tego, w jaki sposób Xilinx pomaga w tworzeniu elastycznych systemów obliczeniowych dla centrów danych.
Architekci systemów i programiści spędzili wystarczająco dużo czasu, aby dojść do zróżnicowanego centrum danych, które będzie oferować różne rodzaje mocy obliczeniowej, rozwiązującej problemy związane z obliczeniami, przechowywaniem i organizowaniem sieci. Wydaje się to konieczne, ponieważ coraz trudniej jest nadążyć za prawem Moore'a przy użyciu różnych technologii CMOS. Nasz język nadal opiera się na CPU, a wciąż mówimy o "przyspieszaniu aplikacji", mając na myśli poprawę działania programów w porównaniu do tego, co można osiągnąć tylko przy użyciu CPU. Po pewnym czasie centra danych przekształcą się w zestawy mocy obliczeniowej, pamięci masowej i protokołów łączących wszystko w całość, a ponownie powrócimy do takich terminów jak "obliczenia" i "aplikacje". Obliczenia hybrydowe staną się tak samo powszechne jak dzisiejsze usługi "chmurowe", działające na bazie zwykłych lub maszyn wirtualnych, a w pewnym momencie po prostu użyjemy słowa „obliczenia”, aby opisać ich działanie. W pewnym momencie – i prawdopodobnie w nadejściu tej ery wezmą czynny udział FPGA – ponownie nazwiemy to przetwarzaniem danych.
Aby wprowadzić FPGA do centrów danych, konieczna będzie zmiana sposobu myślenia. "Myśląc o sposobach przyspieszania dzisiejszych aplikacji, musisz dotrzeć do podstaw tego, jak są one realizowane, jakie zasoby są używane, na co marnuje się czas, wyjaśnia Bolesens. – Trzeba badać ogólny problem, który próbujesz rozwiązać. Wiele aplikacji działających dziś w centrach danych skaluje się, zajmując dużą ilość zasobów. Weźmy na przykład uczenie maszynowe, które wykorzystuje ogromną ilość węzłów obliczeniowych. Ale mówiąc o przyspieszaniu, musisz myśleć nie tylko o przyspieszaniu obliczeń, ale także o przyspieszaniu infrastruktury."
Na przykład, w przypadku operacji związanych z uczeniem maszynowym, które Bolesens badał w praktyce, około 50% czasu poświęca się na przesyłanie danych tam i z powrotem między rozproszonymi mocami obliczeniowymi, a tylko pozostała połowa czasu jest przeznaczona na same obliczenia.
To właśnie tutaj, wydaje mi się, FPGA może pomóc, ponieważ możemy zapewnić optymalizację zarówno aspektów obliczeniowych, jak i transferu danych w aplikacji. Możemy to robić na poziomie ogólnej infrastruktury oraz na poziomie chipu. To jedna z dużych zalet FPGA, pozwalających na tworzenie sieci komunikacyjnych dostosowanych do konkretnych potrzeb aplikacji. Obserwując typowe wzorce przesyłania danych w zadaniach związanych z pracą sztucznej inteligencji, nie widzę potrzeby skomplikowanej architektury opartej na przełącznikach. Można zbudować sieć z dużym przepływem danych. To samo dotyczy zadań związanych z uczeniem się sieci neuronowych – można zbudować sieć komórkową o rozmiarach pakietów dostosowujących się do konkretnych zadań. Korzystając z FPGA, można bardzo dokładnie skalować i dostosowywać protokoły przesyłania danych oraz topologię schematu dla konkretnej aplikacji. A w przypadku uczenia maszynowego również jest jasne, że nie potrzebujemy liczb zmiennoprzecinkowych o podwójnej precyzji, co także możemy dostosować.
Różnica między FPGA a CPU lub specjalizowaną ASIC polega na tym, że te ostatnie są programowane w czasie produkcji, a po tym etapie nie można już zmienić typów danych obliczeniowych ani elementów obliczeniowych, ani natury przepływu danych przez urządzenie. FPGA pozwalają ci na zmianę zdania, jeśli warunki pracy się zmienią.
W przeszłości ta zaleta była kosztowna, gdy programowanie pod FPGA było przeznaczone nie dla osób o słabym duchu. Należy otworzyć kompilatory dla FPGA, aby lepiej integrowały się z narzędziami używanymi przez programistów do tworzenia aplikacji z równolegle prowadzonymi obliczeniami na językach C, C++ lub Python, oraz zlecić część pracy bibliotekom przyspieszającym procedury na FPGA. Tym właśnie zajmuje się stos do uczenia maszynowego Vitis, który stanowi podstawę takich platform MO, jak Caffe i TensorFlow, i posiada biblioteki do uruchamiania zwykłych modeli AI lub dodawania możliwości FPGA do takich zadań, jak transkodowanie wideo, rozpoznawanie obiektów na wideo, analiza danych, zarządzanie ryzykiem finansowym oraz wszelkimi zewnętrznymi bibliotekami.
Koncepcja ta niewiele różni się od projektu CUDA firmy Nvidia, uruchomionego dziesięć lat temu, który przenosi obliczenia równoległe na akceleratory GPU, ani od zestawu narzędzi ROCm firmy AMD, czy od obietnic projektu Intel, OneAPI, który ma działać na różnych CPU, GPU i FPGA.
Pytanie dotyczy tylko tego, jak wszystkie te narzędzia będą ze sobą powiązane, aby każdy mógł zaprogramować zestaw mocy obliczeniowej według własnych potrzeb. To istotne, ponieważ FPGA stały się znacznie bardziej skomplikowane niż jakiekolwiek dostępne CPU. Wytwarzane są z najnowocześniejszych procesów technologicznych oraz przy użyciu najnowszych technologii pakowania chipów. Znajdą swoją niszę, ponieważ nie możemy już marnować czasu, pieniędzy, energii i intelektu – to wszystko zbyt kosztowne zasoby.
„FPGA oferuje zalety technologiczne – mówi Bolesens. – I to nie jest tylko zwykła reklama dotycząca elastyczności i konfigurowalności. We wszystkich istotnych aplikacjach – uczenie maszynowe, analiza grafów, handel wysokiej częstotliwości itd. – mają możliwość dostosowania nie tylko ścieżki przesyłu danych do konkretnego zadania, ale również architekturę pamięci – sposób, w jaki dane poruszają się w ramach chipu. A co więcej, w FPGA jest znacznie więcej pamięci niż w innych urządzeniach. Należy też pamiętać, że jeśli zadanie nie mieści się w jednym FPGA, można je skalować na kilka chipów, unikając tych problemów, które napotykasz przy skalowaniu zadań na kilka CPU lub GPU.”
Źródło: habr.com
