Retym
Majestic Labs
Systems Software Engineer
Über die Stelle
Wir sind ein schnell wachsendes, US-israelisches KI-Startup, das Infrastrukturen der nächsten Generation für die anspruchsvollsten KI-Workloads der Welt entwickelt. Unsere Mission ist es, die Zukunft der Intelligenz zu beschleunigen und sie allgegenwärtig zugänglich zu machen, indem wir full stack maßgeschneiderte KI-Server liefern, die für Inferenz und Training im großen Maßstab optimiert sind.
Unterstützt von erstklassigen Investoren und geführt von Branchenveteranen, wachsen wir rasant. Wir suchen vorausschauende Ingenieure und Betreiber, die in einer kollaborativen Umgebung gedeihen und komplexe Herausforderungen von Grund auf lösen. Wenn Sie Infrastrukturen aufbauen möchten, die grundlegend verändern, was die Welt mit KI erreichen kann, dann kommen Sie zu uns!
Über die Position
Wir suchen einen Systems Software Engineer, der an den untersten Ebenen dieses Stacks arbeitet: der Laufzeitumgebung, der Firmware und der Gerätesoftware, die zwischen High-Level-KI-Workloads und kundenspezifischer Beschleuniger-Hardware liegen. Sie werden helfen, die Software für Geräte-Bring-up, Kernel-Dispatch, Speicherabbildung, Warteschlangen, Synchronisation, Leistungsüberwachung und Debugging-Infrastruktur zu entwickeln.
Dies ist keine konventionelle Embedded-Firmware-Rolle. Die Arbeit umfasst Firmware, Betriebssystem-Schnittstellen, Simulator-Bring-up, Design der Beschleuniger-Laufzeitumgebung, Hardware/Software-Verträge und leistungskritische Ausführungspfade.
Wir suchen intelligente, neugierige, eigenmotivierte Personen, die Freude an kreativer Problemlösung und kontinuierlichem Lernen haben. Auch wenn Sie nicht alle Anforderungen erfüllen, würden wir uns freuen, von Ihnen zu hören, wenn Sie die richtige Einstellung haben, um komplexe Herausforderungen anzugehen.
Majestic Labs ist ein Arbeitgeber, der Chancengleichheit fördert und sich tiefgehend für Vielfalt in Bezug auf Herkunft und Denkweise einsetzt. Wenn Sie bereit sind, Großes zu wagen, aus Fehlern zu lernen, lebhafte Debatten zu führen und dazu beizutragen, einen sprunghaften Anstieg der menschlichen technischen Fähigkeiten zu bewirken, dann wollen wir Sie kennenlernen!
Aufgaben
- Verantwortung für kritische Boot- und Laufzeitverträge: Firmware-Image-Layout, Konfiguration, Kernfreigabe, Liveness-Erkennung, gemeinsame Warteschlangen, Befehls-/Abschlussformate, Speicherabbildungen und versionierte ABIs.
- Entwicklung und Optimierung von Low-Latency-Kommunikationspfaden zwischen Host-Laufzeitsoftware und Beschleunigerkernen, einschließlich Einreichungs-/Abschlusswarteschlangen, Doorbell-Signalen, Interrupts, Polling-Pfaden und Synchronisationsmechanismen.
- Arbeit mit kundenspezifischen Prozessorkernen, Multi-Core-Koordination, Traps/Exceptions, Seitentabellen, Schutzmechanismen, MMIO, DMA und Speicherhierarchien von Beschleunigern.
- Entwicklung von Observability- und Debugging-Infrastruktur für ein komplexes verteiltes Beschleunigersystem, einschließlich Boot-Metriken, Hardware-Zählern, Trace-Erfassung, Leistungsüberwachung, Debugging-Pfaden und Fehlerdiagnose für hängende oder langsame Jobs.
- Mitarbeit bei der Gestaltung der Produktions-Gerätesoftwarearchitektur: die Grenze zwischen Kernel-Modus-Komponenten, Userspace-Laufzeitbibliotheken, Simulator backend s und Hardware-nativen backend s.
- Enge Zusammenarbeit mit Hardware-Architekten, Compiler/Runtime-Ingenieuren, Kernel-Entwicklern und Performance-Ingenieuren zur Definition der Software/Hardware-Verträge für zukünftige Chips.
- Debugging von Problemen, die Abstraktionsebenen überschreiten: KI-Graph-Ausführung, Laufzeitplanung, Geräte-Warteschlangen, Firmware, Speicherübersetzung, Interrupts, Simulatorverhalten und Hardwarezustand.
Anforderungen
- 5-10 Jahre Erfahrung in der Entwicklung von Low-Level-Systemsoftware, Firmware, Laufzeitumgebungen, Betriebssystemen, Gerätetreibern oder Beschleuniger-Software.
- Starke C Programmierkenntnisse und Komfort beim Lesen oder Schreiben von Assembler, wo erforderlich.
- Tiefes Verständnis der Grundlagen der Computerarchitektur: CPU-Privilegienmodi, virtueller Speicher, Interrupts, Atomare Operationen, Caches, Speicherordnung, MMIO, DMA und Performance-Zähler.
- Erfahrung mit einem oder mehreren der folgenden Bereiche: Prozessor-Firmware, ARM- oder RISC-V-Systemsoftware, Linux Kernel-Treiber, Bare-Metal-Firmware, Bootloader, Hypervisoren, RTOS-Interna oder Beschleuniger-Laufzeitumgebungen.
- Fähigkeit, stabile binäre Schnittstellen und versionierte Verträge zwischen sich unabhängig entwickelnden Softwarekomponenten zu entwerfen und zu pflegen.
- Starke Debugging-Instinkte über Hardware/Software-Grenzen hinweg, einschließlich Fällen, in denen der einzige verfügbare Beweis ein Speicherabbild, ein Trace-Puffer, Hardware-Zähler, der Warteschlangenstatus oder ein Simulator-Log ist.
- Komfortable Arbeit in einer sich schnell entwickelnden Umgebung, in der Simulatoren, Firmware, Treiber, Laufzeitbibliotheken und Hardwarespezifikationen gemeinsam weiterentwickelt werden.
- Ausgezeichnete Kommunikationsfähigkeiten und die Fähigkeit zur Zusammenarbeit mit Hardware-, Compiler-, Runtime- und Produktteams.
Bevorzugte Qualifikationen
- Erfahrung mit kundenspezifischen Beschleunigern, GPUs, NPUs, SmartNICs, DPUs oder anderen komplexen SoCs.
- Low-Level-Firmware-Erfahrung, insbesondere mit Privilegienmodi, Steuer-/Statusregistern, Traps, Speicherschutz, virtuellem Speicher, Multi-Core-Boot oder Hardware-Debugging-Unterstützung.
- Linux Treiber- oder Userspace-Treiber-/Runtime-Erfahrung, einschließlich ioctl/mmap APIs, DMA, IRQ-Handling, Tradeoffs zwischen Polling und Interrupts sowie Zero-Copy-Pfade.
- Erfahrung mit Hardware-Trace- und Performance-Infrastrukturen wie ARM CoreSight, ETM/ETF/ETR, ATB-Funnels, Hardware-PMUs, Trace-Encodern oder ähnlichen SoC-Observability-Systemen.
- Erfahrung im Design von Warteschlangenprotokollen, Befehlspuffern, Abschlusswarteschlangen, Doorbell-Signalen, Synchronisationsobjekten oder Low-Latency-Producer/Consumer-Systemen.
- Erfahrung mit Simulator- und Silizium-Bring-up: QEMU, virtuelle Plattformen, SystemC, RTL-Simulation, FPGA/Prototyping oder First-Silicon-Debugging.
- Erfahrung mit modernen Build-Systemen wie Bazel, Cross-Compilierung, Standalone-Toolchains, Linkerskripten und hermetischen Build-Systemen im Allgemeinen.
