Aller au contenu

Majestic Labs

Ingénieur Logiciel Systèmes

Traduction automatique. Consultez l’original.

À propos du poste

Nous sommes une startup IA américano-israélienne en pleine croissance, construisant une infrastructure de nouvelle génération pour les charges de travail IA les plus exigeantes au monde. Notre mission est d'accélérer le futur de l'intelligence et de la rendre universellement accessible en fournissant des serveurs IA personnalisés full stack optimisés pour l'inférence et l'entraînement à grande échelle.

Soutenus par des investisseurs de premier plan et dirigés par des vétérans de l'industrie, nous nous développons rapidement. Nous recherchons des ingénieurs et des opérateurs avant-gardistes qui s'épanouissent dans un environnement collaboratif et excellent dans la résolution de défis complexes à partir de principes fondamentaux. Si vous souhaitez construire une infrastructure qui change fondamentalement ce que le monde peut accomplir avec l'IA, rejoignez-nous !

Nous recherchons un ingénieur logiciel systèmes pour travailler sur les couches les plus basses de cette pile : le runtime, le firmware et le logiciel périphérique qui se situent entre les charges de travail IA de haut niveau et le matériel accélérateur personnalisé. Vous contribuerez à construire le logiciel responsable de la mise en service des périphériques, de la gestion du noyau (kernel dispatch), du mappage mémoire, de la mise en file d'attente, de la synchronisation, de la surveillance des performances et de l'infrastructure de débogage.

Ce n'est pas un rôle conventionnel de firmware embarqué. Le travail couvre le firmware, les interfaces du système d'exploitation, la mise en service du simulateur, la conception du runtime de l'accélérateur, les contrats matériel/logiciel et les chemins d'exécution critiques en termes de performance.

Nous recherchons des personnes intelligentes, curieuses et autonomes qui aiment la résolution créative de problèmes et l'apprentissage continu. Même si vous ne remplissez pas toutes les conditions, nous serions ravis d'avoir de vos nouvelles si vous avez l'état d'esprit nécessaire pour relever des défis complexes.

Responsabilités

  1. Prendre en charge les contrats critiques de démarrage et de runtime : disposition de l'image firmware, configuration, version principale, détection de présence (liveness detection), files d'attente partagées, formats de commandes/achèvement, mappages mémoire et ABI versionnés.
  1. Construire et optimiser les chemins de communication à faible latence entre le logiciel runtime hôte et les cœurs d'accélérateur, y compris les files d'attente de soumission/achèvement, les 'doorbells', les interruptions, les chemins de polling et les mécanismes de synchronisation.
  1. Travailler avec des cœurs de processeur personnalisés, la coordination multi-cœurs, les pièges/exceptions (traps/exceptions), les tables de pages, les mécanismes de protection, le MMIO, le DMA et les hiérarchies mémoire de l'accélérateur.
  1. Développer une infrastructure d'observabilité et de débogage pour un système d'accélérateur distribué complexe, y compris les métriques de démarrage, les compteurs matériels, la capture de traces, la surveillance des performances, les chemins de débogage et le diagnostic des défaillances pour les tâches bloquées ou lentes.
  1. Contribuer à définir l'architecture du logiciel périphérique de production : la frontière entre les composants en mode noyau (kernel-mode), les bibliothèques runtime en espace utilisateur (userspace), les backends de simulateur et les backends natifs matériels.
  1. Collaborer étroitement avec les architectes matériels, les ingénieurs compilateurs/runtimes, les développeurs noyau et les ingénieurs performance pour définir les contrats logiciel/matériel pour les futures puces.
  1. Déboguer les problèmes qui traversent les couches d'abstraction : exécution du graphe IA, ordonnancement du runtime, files d'attente du périphérique, firmware, traduction mémoire, interruptions, comportement du simulateur et état matériel.

Prérequis

  1. 5-10 années d'expérience dans la construction de logiciels systèmes bas niveau, de firmware, de runtimes, de systèmes d'exploitation, de pilotes de périphériques ou de logiciels d'accélérateur.
  1. Solides compétences en programmation C et aisance à lire ou écrire de l'assembleur si nécessaire.
  1. Compréhension approfondie des fondamentaux de l'architecture informatique : modes de privilège CPU, mémoire virtuelle, interruptions, opérations atomiques, caches, ordonnancement mémoire, MMIO, DMA et compteurs de performance.
  1. Expérience avec un ou plusieurs des éléments suivants : firmware de processeur, logiciel système ARM ou RISC-V, pilotes Linux, firmware bare-metal, chargeurs de démarrage (bootloaders), hyperviseurs, internes de RTOS ou runtimes d'accélérateur.
  1. Capacité à concevoir et maintenir des interfaces binaires stables et des contrats versionnés entre des composants logiciels évoluant indépendamment.
  1. Fortes aptitudes au débogage aux frontières matériel/logiciel, y compris les cas où la seule preuve disponible est une image mémoire (memory dump), un tampon de trace, un compteur matériel, l'état d'une file d'attente ou un log de simulateur.
  1. Aisance à travailler dans un environnement en évolution rapide où les simulateurs, le firmware, les pilotes, les bibliothèques runtime et les spécifications matérielles évoluent conjointement.
  1. Excellentes compétences en communication et capacité à collaborer avec les équipes matérielles, compilateurs, runtimes et produit.

Qualifications Souhaitées

  1. Expérience avec des accélérateurs personnalisés, des GPU, des NPU, des SmartNICs, des DPU ou d'autres SoC complexes.
  1. Expérience en firmware bas niveau, en particulier les modes de privilège, les registres de contrôle/statut (CSRs), les interruptions (traps), la protection mémoire, la mémoire virtuelle, le démarrage multi-cœurs ou le support de débogage matériel.
  1. Expérience avec les pilotes Linux ou les pilotes/runtimes en espace utilisateur, y compris les APIs ioctl/mmap, le DMA, la gestion des IRQ, les compromis polling vs interruptions, et les chemins zero-copy.
  1. Expérience avec l'infrastructure de trace matérielle et de performance telle que ARM CoreSight, ETM/ETF/ETR, les 'funnels' ATB, les PMU matériels, les encodeurs de trace ou des systèmes d'observabilité SoC similaires.
  1. Expérience dans la conception de protocoles de files d'attente, de tampons de commandes (command buffers), de files d'achèvement (completion queues), de 'doorbells', d'objets de synchronisation ou de systèmes producteur/consommateur à faible latence.
  1. Expérience avec la mise en service de simulateurs et de silicium : QEMU, plateformes virtuelles, SystemC, simulation RTL, FPGA/prototypage, ou débogage de premier silicium.
  1. Expérience avec les systèmes de build modernes comme Bazel, la compilation croisée (cross-compilation), les chaînes d'outils autonomes (freestanding toolchains), les scripts de lieur (linker scripts) et les systèmes de build hermétiques en général.

Majestic Labs est un employeur garantissant l'égalité des chances, profondément engagé envers la diversité des origines et des pensées. Si vous êtes prêt à oser, à apprendre de vos erreurs, à vous engager dans des débats vigoureux et à contribuer à un changement fondamental des capacités techniques humaines, nous voulons vous rencontrer !

Plus d’opportunités avec un seul profil

Vous souhaitez accéder à plus de postes sans répéter tout le processus ? Créez votre profil pour être trouvé par les entreprises utilisant Nort.

Créer mon profil

Vagas Dev est maintenu gratuitement par l’équipe NortJobs.

Votre prochain emploiest peut-être sur NortJobs.

Vagas Dev

Des emplois pour développeurs et programmeurs. Le Brésil en priorité. Votre prochaine opportunité.

NortJobs · soutien du projetInstagramLinkedInTwitter
Mentions légalesÀ propos du projetConfidentialitéVagas Dev © 2026