česky english Vítejte, dnes je sobota 16. listopad 2024

Využití FPGA a GPU při průmyslovém zpracování obrazu

DPS 2/2016 | Články
Autor: Ing. Jaroslav Vlach, Ph.D.

V případech zpracování velkého množství obrazových dat nebo při časově náročných úlohách je zcela legitimním požadavkem co nejméně zatěžovat CPU výpočetního systému a přenést některé části úlohy na jeho jinou část. V současné době lze v oblasti zpracování obrazu pozorovat dva hlavní možné směry:

  • v použití dostupných FPGA systémů,
  • v použití grafických procesorů a akcelerátorů (GPU).

Hlavní myšlenkou v obou případech je rozdělení úlohy na několik paralelně vykonávaných úloh. Výsledkem je zrychlení celkového výkonu systému. Při aplikaci FPGA se přenese část úlohy do obvodu typu FPGA, kde lze velmi rychle formou logických funkcí realizovat potřebné úlohy. Při aplikaci GPU se přenese část úlohy do specializovaného grafického procesoru.

Pro maximální efektivitu přípravy úlohy, její realizaci i další vývoj je důležité pracovat pokud možno v jednom programovém prostředí. Nástroje NI LabVIEW díky silnému vývojovému zázemí sledují tyto trendy a nabízí podporu pro implementaci těchto nástrojů. Jde ovšem o techniku, která je stále ve vývoji a její aplikování v průmyslu je vždy o několik let posunuto.

Systémy s FPGA

Významným technickým prostředkem pro realizaci logických funkcí a ke zrychlení řízení průmyslových aplikací jsou systémy využívající obvody FPGA. Tato platforma umožňuje přesunout velkou skupinu aplikací dosud řešených programovými (a z pohledu časové náročnosti pomalejšími) prostředky do oblasti technické, časově mnohem rychlejší. Tento kvalitativní krok byl umožněn zejména implementací a integrací vývojových systémů přímo do prostředí pro návrh řídicích systémů. Uživatel tak má k dispozici silné nástroje pro návrh konkrétní aplikace s využitím obvodu FPGA, aniž by musel podrobně znát jeho strukturu a vlastnosti, takže je schopen využívat algoritmy pro implementaci logických funkcí do komplexní struktury programového řešení.

Karty s obvody FPGA

Příkladem aplikace obvodů FPGA pro použití při zpracování obrazu je karta firmy NI PCIe-1473R – obr. 1a), která integruje uživatelsky programovatelný obvod FPGA a rozhraní CameraLink pro připojení kamery. Aplikace v FPGA tak může řešit zejména spouštění kamery (trigger) a synchronizaci s osvětlovačem.

Výhodou tohoto řešení je poměrně elegantní a komplexní řešení jak programové, tak obvodové části úlohy. Celá úloha se pak řeší jako jeden projekt.

Průmyslové systémy CompactRIO a SingleBoardRIO

Rozsáhlejší a náročnější aplikace lze řešit využitím průmyslových řídicích systémů typu PAC (Programmable Automation Controler) od firmy National Instruments – CompactRIO (Reconfigurable Input/Output) a SingleBoard- RIO. Tyto systémy představují vysokoúrovňovou platformu pro vývoj aplikací v reálném čase a pořizování dat.

Obr. 1

Robustnější systém CompactRIO – obr. 1b) pracuje s procesorem reálného času s architekturou PowerPC ve spojení s rekonfigurovatelným obvodem FPGA Xilinx. Malý, jednodeskový systém SingleBoardRIO – obr. 1c) je určen zejména pro vývoj uživatelských řešení a je také cenově výhodnější. Vychází z architektury CompactRIO, kde na jednu desku plošného spoje jsou integrovány všechny tři základní součásti: procesor reálného času + obvod FPGA + vstupy/výstupy, a neobsahuje kovové pouzdro.

Obr. 2, Tab.

Na obr. 2 je znázorněno blokové schéma systému CompactRIO. Je odtud patrné, že komunikaci mezi základní řídicí jednotkou a moduly vstupu/výstupů (I/O) zprostředkovává programovatelné pole FPGA.

Řídicí jednotky jsou osazeny procesorem s jádrem x86, resp. procesory Freescale MPC5200 (400 MHz) nebo MPC8347 (533 MHz) a pracují s operačním systémem reálného času RTS (Real-Time OS), resp. VxWorks (operační systém reálného času vyvíjený firmou Wind River). Systémy CompactRIO, resp. SingleBoardRIO, jsou osazeny obvodem FPGA (obvody firmy Xilinx řady Spartan-3, resp. Virtex- II nebo Virtex-5), který umožňuje řídit časově náročné děje a současně je programově obsloužit v grafickém programovacím prostředí LabVIEW. K tomu je však třeba přidat programové moduly LabVIEW FPGA a LabVIEW Real-Time.

Obr. 3

Na obr. 3 je znázorněna architektura programových prostředků CompactRIO, resp. Single- BoardRIO. Nadřazený počítač komunikuje síťovými prostředky s částí programu řešící úlohu běžné, tedy nízké priority. Úlohou FPGA je zejména vykonávat časově kritické smyčky, kdy se výhodně uplatňuje technické řešení zadané úlohy namísto programového řešení.

Aplikování obvodů FPGA pro zpracování obrazu

Zajímavou a perspektivní se jeví možnost aplikování obvodů FPGA při zpracování obrazových informací s cílem zvýšit výpočetní rychlost zejména u časově náročných dějů. Je však třeba říci, že aplikování obvodů FPGA pro zpracování obrazu bude třeba ještě dále studovat a získat další zkušenosti. Přes jistá očekávání není dosud aplikování těchto prostředků běžné pro průmyslové aplikace.

Aplikace GPU a CUDA

Poslední dobou získávají stále na větším významu grafické procesory (GPU), resp. grafické akcelerátory, které přebírají velkou část potřebného výkonu pro zpracování dat určených pro vykreslování na zobrazovacím zařízení. Se stoupající náročností úlohy pro grafickou prezentaci výsledku se tak ulehčí a zrychlí běh hlavního programu, který má na starosti CPU počítače. Grafický procesor se pak stará o specializované úlohy, kterými dnes jsou obvykle 3D animace.

Firma NVIDIA (www.nvidia.com) je jedním z významných hráčů v oblasti vývoje GPU, která v roce 2006 přišla s konceptem architektury CUDA. Tato architektura definující programové rozhraní, řízení v reálném čase a podporu ovladačů rozhraní (PCIe) dovoluje na GPU spouštět programy napsané v různých jazycích, např. C, C++ apod., a cílově pak přenést část výpočetního výkonu na grafickou kartu. To se zdá být velmi nadějné pro zrychlení aplikací pracujících v reálném čase, neboť tyto výkonné procesory lze využít i k jiným výpočtům, než jsou výpočty nutné pro zobrazování dat.

V následujícím přehledu v tabulce 1 je uvedeno srovnání některých parametrů procesoru (CPU) Intel i7 (s 6 jádry) používaného u výkonných počítačů PC s parametry grafického procesoru (GPU) NVIDIA GeForce GTX 970 určeného pro náročné grafické aplikace (tedy zejména herní).

Parametr FLOPS popisuje výpočetní výkon procesoru a udává se v počtu operací v pohyblivé řádové čárce za sekundu.

Obr. 4

Je tedy patrné, že i přes větší výkonovou ztrátu nabízí GPU výrazně větší výpočetní výkon, který lze využít právě pro urychlení práce s grafickými a dalšími daty. Obr. 4 znázorňuje zařazení GPU na sběrnici PCIe.

Filozofie GPU vychází z principu aplikace velkého množství jednoduchých jader (procesorů) rozdělených do bloků v podobě mřížky, ve kterém každé jádro výpočtu (tzv. kernel) má programem nadefinovanou úlohu jednoho výpočetního vlákna (thread). Jednotlivé procesory (Stream Processor) tak umožňují paralelizaci úlohy, čímž se dosahuje vysokého výpočetního výkonu.

Závěr

Implementace prostředků FPGA a GPU do výpočetního systému je pro zrychlení a optimalizaci výpočetního výkonu zcela nepochybně výrazným krokem vpřed. Porovnáním používaných technologií (vícejádrové CPU, FPGA, resp. GPU) lze stručně popsat nejdůležitější výhody – viz tabulka 2.

Je patrné, že aplikace vícejádrového procesoru (Multi-Core CPU) umožňuje provádět operace v pohyblivé řádové čárce, rozdělení úloh (mezi jádra) i určitou formu paralelizmu (několik souběžně běžících úloh).

Aplikace FPGA dovoluje přímé připojení na vstupy a výstupy řízeného procesu, vysokou míru paralelizmu (souběžně běžící úlohy), přičemž lze obvykle pracovat s matematikou v pevné řádové čárce. Tím se požadované řešení výrazně zrychlí (řízení spouštění a synchronizace, přenosy dat, zpracování datových toků).

Použití grafického procesoru GPU vede k výraznému zrychlení paralelismu a souběžného zpracování velkého množství malých datových bloků. Pro zpracování obrazu v průmyslu může být tento postup velmi přínosný. Naznačený směr využití GPU pro urychlení a optimalizaci výpočtů při zpracování obrazu je natolik zajímavý, že se v poslední době objevila celá řada článků a modelových aplikací jak pro „akademické“ prostředí MATLAB, tak pro technické aplikace v prostředí LabVIEW.