Klepsydra ROS2 Multi Core Ring Buffer Executor
Informace o produktu
Specifikace
- Lehký, modulární a kompatibilní s většinou používaných operačních systémů
- Plugin ROS2 Executor schopný zpracovat až 10krát více dat s až 50% snížením spotřeby CPU
- GPU (Graphic Processing Unit) pro vysokou paralelizaci a zvýšenou rychlost zpracování dat a využití GPU
- Klepsydra AI
- Klepsydra SDK
- GPU Klepsydra
- Možnost streamování
- Celosvětová aplikace exekutorského pluginu Klepsydra ROS2
Návod k použití produktu
- Kontext: Paralelní zpracování
Tento produkt je navržen tak, aby řešil problémy související s palubním zpracováním ve vesmírných aplikacích, kde jde o využití CPU, objem dat a požadavky na napájení. Nabízí řešení pro moderní hardware a starý software efektivním zpracováním středních objemů dat. - Porovnat a vyměnit
„Compare and Swap“ je algoritmus používaný v multithreadingu k dosažení synchronizace. Porovnává obsah paměťového místa s danou hodnotou a pouze pokud jsou stejné, upravuje obsah tohoto paměťového místa na novou danou hodnotu. Tato operace se provádí jako jediná atomová operace. Produkt implementuje tento algoritmus jako součást své funkčnosti.
Výhody a nevýhody programování bez zámku
Produkt využívá techniky programování bez zámku, které mají výhodytages a disadvantages
- Pro:
- Snížené využití procesoru
- Efektivní manipulace s objemem dat
- nevýhody:
- Složitost při realizaci
- Vyžaduje podporu základního hardwaru (většina moderního hardwaru podporuje programování bez zámku)
Exekutor ROS2
Produkt obsahuje ROS2 Executor, který naplánuje aplikaci ROS2 pomocí správy zpětných volání předplatných, zpráv, služeb, časovačů a uzlů. Spotřebovává zprávy ze základních front DDS middlewaru a odesílá je ke spuštění do jednoho z vláken. Exekutor může být nakonfigurován tak, aby spouštěl zpětná volání postupně nebo paralelně.
Nejmodernější exekutory ROS2
Produkt obsahuje nejmodernější ROS2 Executory, které poskytují různé strategie provádění
- Jednovláknový exekutor: Postupně provádí zpětná volání a pravidelně prohledává strukturu aplikace za účelem aktualizace uzlů, předplatných, služeb atd.
- Vícevláknový exekutor: Paralelně provádí zpětná volání a pravidelně kontroluje strukturu aplikace, aby aktualizoval popis problému.
Streamovací exekutor
Produkt představuje streamovací spouštěč, který se liší od spouštěče s vlákny v několika aspektech
- Nerekonstruuje seznam spustitelných souborů pro každou iteraci.
- Všechny uzly, skupiny zpětných volání, časovače, předplatná atd. jsou vytvořeny v době výstavby.
- Všechna předplatná uvnitř uzlu se spouštějí ve stejném vláknu, bez ohledu na počet jader použitých pro nastavení streamování.
- Klepsydra Streaming Executor
Spouštěcí program pro streamování produktu je speciálně navržen pro zpracování témat streamování pomocí párů vydavatel-odběratel. Efektivně doručuje zprávy předplatitelům ve všech uzlech, přijaté z middlewaru přes rmw. Smyčka událostí spravuje tato témata a zajišťuje hladký tok dat. - Říše Klepsydra
Klepsydra Realm je součást streamovacího exekutoru, který funguje jako plánovač. Koordinuje provádění producentů a spotřebitelů v rámci nastavení streamování. - Výrobce
Výrobce je odpovědný za generování dat, která budou spotřebována předplatiteli. Produkt podporuje více výrobců v nastavení streamování. - Spotřebitel
Spotřebitel je odpovědný za zpracování a využití dat generovaných výrobci. Produkt podporuje více spotřebitelů v nastavení streamování.
Často kladené otázky (FAQ)
- Jaké operační systémy jsou kompatibilní s produktem?
Produkt je kompatibilní s většinou běžně používaných operačních systémů. - Kolik dat dokáže produkt zpracovat ve srovnání s tradičními metodami?
Produkt je schopen zpracovat až 10x více dat při až 50% snížení spotřeby CPU ve srovnání s tradičními metodami. - Využívá produkt paralelizaci GPU?
Ano, produkt využívá GPU (Graphic Processing Unit) pro vysokou paralelizaci, což zvyšuje rychlost zpracování dat a využití GPU.
Offline optimalizační přístup pro vícejádrové aplikace ROS2: Multi-Core Ring-Buffer ROS2 Executor
ROS Meetup Stuttgart 2023
doktor Pablo Ghiglino ( pablo.ghiglino@klepsydra.com )
ROS2 Streaming Executor
KONTEXT: PARALELNÍ ZPRACOVÁNÍ
- Výzvy týkající se zpracování na palubě
- Moderní hardware a starý software:
- Počítače max. s nízkým až středním objemem dat
- Neefektivní využívání zdrojů
- Nadměrný výkon pro nízké zpracování dat
Důsledky pro vesmírné aplikace
- Opakované selhání mise kvůli softwaru
- Přístup k datům senzorů ze Země je časově náročný.
- Satelity se snaží splnit požadavky na napájení
POROVNAT A VYMĚNIT
- Compare-and-swap (CAS) je instrukce používaná v multithreadingu k dosažení synchronizace. Porovnává obsah paměťového místa s danou hodnotou a pouze pokud jsou stejné, upravuje obsah paměťového místa na novou danou hodnotu. To se provádí jako jediná atomová operace.
- Porovnat a vyměnit je nedílnou součástí architektur IBM 370 od roku 1970.
- Maurice Herlihy (1991) dokázal, že CAS může implementovat více těchto algoritmů než atomické čtení, zápis a načítání a přidávání.
VÝHODY A NEZÁMY PROGRAMOVÁNÍ BEZ ZÁMKU
Pros
- Vyžaduje menší spotřebu CPU
- Nižší latence a vyšší datová propustnost
- Podstatný nárůst determinismu
Nevýhody
- Extrémně obtížná programovací technika
- Vyžaduje procesor s instrukcemi CAS (90 % trhu je však má)
Klepsydra kruhový pufr
PRODUKT
Lehký, modulární a kompatibilní s většinou používaných operačních systémů
- SDK – Software Development Kit
Posilte zpracování dat na okraji pro obecné aplikace a algoritmy náročné na procesor - AI – umělá inteligence
Vysoce výkonný engine hluboké neuronové sítě (DNN) pro nasazení jakéhokoli AI nebo modulu strojového učení na okraji - Plugin ROS2 Executor
Executor pro ROS2 schopný zpracovat až 10x více dat s až 50% snížením spotřeby CPU. - GPU (jednotka grafického zpracování)
Vysoká paralelizace GPU pro zvýšení rychlosti zpracování dat a využití GPU
Kontext: ROS1 ve vesmíru
- Výhody:
- Umožňuje autonomii, vnímání a kontrolu v prostoru
- Flexibilní, modulární a podporované velkou komunitou.
- Examples:
- Robonaut z NASA 2 (R2) – Asistence astronautům na ISS
- Astrobee z NASA – Autonomní operace na ISS
- KULE – Sférické družice pro výzkum na ISS
- Dextre – Robotické rameno pro manipulaci a opravy na ISS
- Google Lunar XPRIZE - Používá se pro mise lunárních roverů
Kontext: Space-ROS
- Rámec ROS v průzkumu vesmíru a robotice
- Částečně kvalifikované pro vesmírné použití
- Examples:
- Robotičtí asistenti pro astronauty
- Planetární průzkum s autonomními rovery
- Satelitní provoz a ovládání
- Autonomní dokování kosmické lodi
- Servis a opravy na oběžné dráze
- Výhody:
- Umožňuje samostatnost, komunikaci a vnímání
- Urychluje vývoj a provoz vesmírných misí.
Exekutor ROS2 vysvětlil
Exekutor koordinuje a plánuje aplikaci ROS2 řízením zpětných volání předplatných, zpráv, služeb, časovačů a uzlů. V ROS2 si exekutor neuchovává svou vlastní frontu zpráv a zpětných volání, ale místo toho spotřebovává zprávy z fronty middlewaru DDS a poté je odešle ke spuštění do jednoho z vláken.
Nejmodernější
Exekutoři ROS2
- Jednovláknový exekutor: Jedno vlákno se dotazuje na middleware a provádí zpětná volání postupně. Poté prohledá strukturu a aktualizuje uzly, předplatná, služby atd.
- Statický jednovláknový exekutor, kde se skenování a definice struktury provádí pouze jednou, během výstavby. Všechny uzly, skupiny zpětných volání, časovače, předplatná atd. jsou vytvořeny před voláním spin().
- Vícevláknový exekutor vytvoří řadu vláken, která budou paralelně provádět zpětná volání. Podobně jako jednovláknový exekutor bude pravidelně skenovat strukturu aplikace a aktualizovat popis problému.
Vykonavatel streamování Overview
- Streaming Executor používá Klepsydra Event Loop k doručování zpráv předplatitelům ve všech uzlech, které přicházejí z middlewaru přes rmw. Smyčka událostí spravuje tato témata pomocí párů vydavatel-odběratel.
- Streamovací exekutor se v několika aspektech chová podobně jako statický jednovláknový exekutor. Za prvé, nerekonstruuje seznam spustitelných souborů pro každou iteraci. Všechny uzly, skupiny zpětných volání, časovače, předplatná atd. jsou vytvářeny v době výstavby. Za druhé, všechna předplatná uvnitř uzlu jsou prováděna na stejném vlákně, bez ohledu na počet jader použitých pro nastavení streamování.
Klepsydra Streaming Executor
Vykonavatel streamování
Jak to funguje?
- Pro každé téma požadované daným uzlem ROS2 se vytvoří dvojice vydavatel-odběratel.
- Interně je každý pár vydavatel-předplatitel identifikován dvěma parametry: názvem uzlu a názvem tématu. Jinými slovy, dva různé uzly publikující na stejné téma budou spravovány nezávisle.
- Všechny dvojice vydavatel-odběratel přidružené k tématům, která patří ke stejnému uzlu, jsou spravovány stejnou smyčkou událostí.
Streamovací exekutor Jednojádrový vs vícejádrový
- Advantage streamingového exekutoru je, že není potřeba vícevláknové řízení předplatitelů, protože všichni jsou spravováni vláknem přidružené smyčky událostí, která je společná jak pro jednojádrové, tak pro vícejádrové.
- První funguje podobným způsobem jako statický jednovláknový exekutor, protože všichni účastníci ve všech uzlech jsou vyvoláni stejným vláknem
Výkonnostní měřítko: Ref-System
- Posláním skupiny Real-Time Working Group je obhajovat a pracovat na správě paměti, pub/sub v reálném čase, DDS v reálném čase a nástroje, které umožňují sledování, profilování a optimalizaci ( https://github.com/ros-realtime )
- Balíček reference_system byl vyvinut, aby poskytoval základní stavební bloky pro vytváření komplexních systémů, které pak lze použít k hodnocení funkcí nebo výkonu standardizovaným a opakovatelným způsobem. ( https://github.com/ros-realtime/reference-system )
- První projekt, který používá tento referenční_systém, je autoware_reference_system ( https://github.com/ros-realtime/referencesystem/blob/main/autoware_reference_system/README.md )
Výkonnostní benchmark
- Nastavení srovnávacích testů streamování Klepsydra:
- Benchmark byl založen na referenčním systému Autoware. Napodobuje realistickou řidičskou aplikaci.
- Všechna měření byla provedena pomocí Raspberry Pi 4B s: ROS galactic, Ubuntu 20.04 a 4 GB RAM, konstantní frekvence 1.50 GHz
- Kompatibilní nastavení referenčního systému a bez izolace CPU
- Testované procesory:
- Raspberry PI 4 (referenční procesor pro RTWG)
- Unibap iX10 (NASA a Blue Origin Testbed)
- Teledyne e2v LS1046
Výkonnostní benchmark
- Cílem genetického algoritmu je minimalizovat průměrnou latenci kritické cesty.
- To znamená dobu, která trvá od zveřejnění dat Lidar, než nástroj pro odhad kolize objektů dokončí svou práci.
- Obrázek ukazuje kritickou cestu, kterou se náš výzkum pokusil optimalizovat
Vykonavatel streamování
Klepsydra Streaming Distribution Optimizer (SDO)
- Vícejádrová varianta streamovacího exekutoru funguje nejlépe, když je optimalizováno rozložení zátěže uzlů mezi jádra a může mít podstatný rozdíl, pokud jde o latenci, spotřebu energie a datovou propustnost.
- Mapování jader však není triviální a vyžaduje systematický přístup. Možným přístupem je definování cílové funkce, která měří výkon systému na základě základní konfigurace.
- Genetický algoritmus pak může být použit k optimalizaci základní konfigurace opakovaným testováním různých konfigurací a výběrem těch, které fungují dobře podle cílové funkce. Tento proces pokračuje, dokud není nalezena optimální konfigurace.
- Tento přístup umožňuje efektivnější využití vícejádrového systému a zajišťuje, že zátěž je rozložena nejoptimálnějším způsobem.
Souhrn výsledků
- Pro práci s malými uzly se přidaná složitost nepromítá do lepších výsledků. Statický jednovláknový, je extrémně jednoduchý, překonává ostatní exekutory.
- Pro zvýšení pracovní zátěže je Streaming Executor nejlepším exekutorem následovaným Static Single Threaded Executor.
- Očekávalo se, že Streaming Executor bude fungovat trvale lépe než jednovláknový, protože aplikace během běhu nemění svou topologii. Ukazuje se, že tomu tak skutečně je
- Výsledky pro Raspberry PI4
- Podobné zvýšení výkonu bylo dosaženo pro Unibap iX10 a Teledyne LS1046
Závěry
Shrnutí
- Tento článek představuje nový přístup k optimalizaci modelu provádění ROS2, který kombinuje implementaci ROS2 exekutoru na bázi ring-bufferu bez zámku a použití genetických algoritmů k optimalizaci distribuce zátěže robotické aplikace do dostupných jader v cílovém počítači.
- Ukázalo se, že tato kombinace funguje velmi efektivně pro systém s velkou výpočetní zátěží, jako je výše vysvětlený referenční systém. Klíčovým přínosem prezentovaného výzkumu je jeho adaptabilita na různé aplikace: různé topologie uzlů ROS2 lze urychlit pomocí streamovacího exekutoru plus genetické optimalizace, což je jedna z nejdiskutovanějších výzev v ROS2.
Budoucí práce
Shrnutí
- Pokud jde o budoucí práci tohoto výzkumu, existuje několik funkcí, které je třeba zahrnout do spouštěcího programu streamování:
- podpora pokory a válení,
- open source vydání jednojádrového streamovacího exekutoru a
- použití senzorového multiplexeru a také smyčky událostí pro témata s několika účastníky.
- Testování architektury RISC-V
Dokumenty / zdroje
![]() |
Klepsydra ROS2 Multi Core Ring Buffer Executor [pdfUživatelská příručka ROS2 Multi Core Ring Buffer Executor, ROS2, Multi Core Ring Buffer Executor, Ring Buffer Executor, Buffer Executor, Executor |