Wir suchen einen erfahrenen Software Engineer, der an einem spannenden Projekt zur Entwicklung eines neuen, in-tree, Open-Source-GPU-Treibers für Linux arbeitet, der in Rust geschrieben ist. Diese Position ist Teil eines langfristigen Projekts, das die bestehende Kernel-Modus-Komponente des aktuellen Linux-GPU-Stacks ersetzt. Die Rolle umfasst die kontinuierliche Arbeit an der Infrastruktur des Linux-Subsystems, die auf Rust basiert und von dem neuen Treiber sowie anderen gemeinsam entwickelten Rust-Treibern genutzt wird. Der Treiber wird öffentlich im Hauptkernel von Linux entwickelt und die Entwicklung erfolgt durch Diskussionen in den Kernel-Mailing-Threads. Unser Team ist verantwortlich für die Entwicklung der Kernel-seitigen Abstraktionen, die einen modernen GPU-Treiber in Rust ermöglichen, einschließlich Treiberkern, PCI-Konfiguration, DMA-Adressenübersetzung, Geräte-Eingabe/Ausgabe und IRQ, Devres, Hilfsbus und Firmware-Lader. Als Mitglied unseres Teams wenden Sie Ihr Design- und Programmier-Know-how an, um die Grundlage für den Open-Source-GPU-Stack zu schaffen. Sie werden sowohl den Treiber selbst als auch das breitere Rust-Kernel-Ökosystem entwickeln. Zu Ihren Aufgaben gehört die Architektur und Implementierung von Funktionen im neuen Treiber, die auf bestehende und kommende NVIDIA-GPUs abzielen, sowie die technische Ausrichtung des Projekts zu gestalten, einschließlich Patch-Überprüfung und Koordination von Releases in den Mailing-Listen. Zudem arbeiten Sie eng mit der Rust-Community und den Prüfern des Projekts zusammen, um Design-Diskussionen zu führen.
Senior Software Engineer - Rust für Linux
Beschreibung
Anforderungen
Der ideale Kandidat verfügt über einen Bachelor- oder Masterabschluss in Informatik, Elektrotechnik oder einem verwandten Bereich oder über vergleichbare Erfahrungen. Er sollte über fundierte Kenntnisse in Rust und C verfügen, wobei Grundkenntnisse in C++ von Vorteil sind. Zudem sind mindestens 10 Jahre relevante Entwicklungserfahrung erforderlich. Erfahrung im Umgang mit großen Codebasen, vorzugsweise im upstream Linux-Kernel, ist ebenfalls notwendig. Der Kandidat sollte mit dem Kernel-Gerätemodell, dem Treiberkern und den Betriebssystem-Schnittstellen für Speicherverwaltung, IRQ-Verarbeitung und Synchronisation vertraut sein. Erfahrung im Schreiben und Debuggen von Kernel-Code in multithreaded, Interrupt- und DMA-Kontexten ist unerlässlich. Starke schriftliche Kommunikationsfähigkeiten sind wichtig, da die Arbeit öffentlich in Open-Source-Mailing-Threads erfolgt. Ein bestehendes Maintainer-Engagement im Linux-Kernel, insbesondere in Bezug auf Rust, sowie ein nachweislicher Beitrag zu relevanten Treibern sind von Vorteil. Kenntnisse über die DRM-Rust-Infrastruktur und Erfahrung mit der Inbetriebnahme von PCI-Geräten oder GPU-Hardware sind ebenfalls wünschenswert.