Logo Klepsydra

Klepsydra ROS2 Multi Core Ring Buffer Executor

Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-product-image

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

  1. 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.
  2. 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í.
  1. 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.
  2. Říš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í.
  3. 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í.
  4. 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)

  1. 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ů.
  2. 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.
  3. 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ěKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (1)
  • 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íKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (2)

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í.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (3)

VÝHODY A NEZÁMY PROGRAMOVÁNÍ BEZ ZÁMKUKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (4)

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

Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (5)

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í GPUKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (6)

Kontext: ROS1 ve vesmíru

  • Výhody:
  • Umožňuje autonomii, vnímání a kontrolu v prostoruKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (1)
  • Flexibilní, modulární a podporované velkou komunitou.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (2)
  • 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ůKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (3)

Kontext: Space-ROS

  • Rámec ROS v průzkumu vesmíru a robotice
    Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (4)
  • Částečně kvalifikované pro vesmírné použití
  •  Examples:
    Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (5)
    • Robotičtí asistenti pro astronauty
    • Planetární průzkum s autonomními rovery
    • Satelitní provoz a ovládání
      Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (6)
    • Autonomní dokování kosmické lodi
    • Servis a opravy na oběžné dráze
      Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (7)
  • Výhody:
    • Umožňuje samostatnost, komunikaci a vnímání
    • Urychluje vývoj a provoz vesmírných misí.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (8)

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.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (9)

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

Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (7)

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í.Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (10)

Streamovací exekutor Jednojádrový vs vícejádrovýKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (8)

  • 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

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

Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (9)

Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (10)

Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (12)

  • 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ě jeKlepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (13)
  • Výsledky pro Raspberry PI4
  • Podobné zvýšení výkonu bylo dosaženo pro Unibap iX10 a Teledyne LS1046Klepsydra-ROS2-Multi-Core-Ring-Buffer-Executor-01 (14)

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

Reference

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Povinná pole jsou označena *