CONCEPT SOLUTIONS LLC
Majestic Labs
Ingeniero de Software de Sistemas
Sobre el puesto
Somos una startup israelí-estadounidense de IA en rápido crecimiento que está creando la próxima generación de infraestructura para las cargas de trabajo de IA más exigentes del mundo. Nuestra misión es acelerar el futuro de la inteligencia y hacerlo universalmente accesible mediante la entrega de servidores de IA personalizados full stack optimizados para inferencia y entrenamiento a gran escala.
Respaldados por inversores de primer nivel y liderados por veteranos de la industria, estamos creciendo rápidamente. Buscamos ingenieros y operadores con visión de futuro que prosperen en un entorno colaborativo y se destaquen en la resolución de desafíos complejos desde los primeros principios. Si desea construir una infraestructura que cambie fundamentalmente lo que el mundo puede lograr con la IA, ¡únase a nosotros!
Buscamos un ingeniero de software de sistemas para trabajar en las capas más bajas de esa pila: el tiempo de ejecución, el firmware y el software del dispositivo que se encuentran entre las cargas de trabajo de IA de alto nivel y el hardware acelerador personalizado. Ayudará a construir el software responsable de la puesta en marcha del dispositivo, la distribución del kernel, el mapeo de memoria, la cola, la sincronización, la monitorización del rendimiento y la infraestructura de depuración.
Este no es un puesto convencional de firmware embebido. El trabajo abarca firmware, interfaces del sistema operativo, puesta en marcha de simuladores, diseño de tiempo de ejecución del acelerador, contratos de hardware/software y rutas de ejecución críticas para el rendimiento.
Buscamos personas inteligentes, curiosas y automotivadas que disfruten de la resolución creativa de problemas y el aprendizaje continuo. Incluso si no cumple con todos los requisitos, nos encantaría saber de usted si tiene la mentalidad para abordar desafíos complejos.
Responsabilidades
- Ser responsable de contratos críticos de arranque y tiempo de ejecución: diseño de la imagen de firmware, configuración, lanzamiento principal, detección de actividad, colas compartidas, formatos de comandos/finalización, mapeos de memoria y ABIs versionadas.
- Construir y optimizar rutas de comunicación de baja latencia entre el software de tiempo de ejecución del host y los núcleos del acelerador, incluidas las colas de envío/finalización, los timbres (doorbells), las interrupciones, las rutas de sondeo y los mecanismos de sincronización.
- Trabajar con núcleos de procesador personalizados, coordinación multinúcleo, trampas/excepciones, tablas de páginas, mecanismos de protección, MMIO, DMA y jerarquías de memoria del acelerador.
- Desarrollar infraestructura de depuración y observabilidad para un sistema acelerador distribuido complejo, que incluye métricas de arranque, contadores de hardware, captura de trazas, monitorización del rendimiento, rutas de depuración y diagnóstico de fallos para trabajos colgados o lentos.
- Ayudar a dar forma a la arquitectura del software del dispositivo de producción: el límite entre los componentes del modo kernel, las bibliotecas de tiempo de ejecución en el espacio de usuario, los backends del simulador y los backends nativos del hardware.
- Colaborar estrechamente con arquitectos de hardware, ingenieros de compiladores/tiempos de ejecución, desarrolladores de kernel e ingenieros de rendimiento para definir los contratos de software/hardware para futuros chips.
- Depurar problemas que cruzan las capas de abstracción: ejecución de grafos de IA, planificación del tiempo de ejecución, colas de dispositivos, firmware, traducción de memoria, interrupciones, comportamiento del simulador y estado del hardware.
Requisitos
- 5-10 años de experiencia en la creación de software de sistemas de bajo nivel, firmware, tiempos de ejecución, sistemas operativos, controladores de dispositivos o software de acelerador.
- Sólidas habilidades de programación en C y comodidad para leer o escribir ensamblador cuando sea necesario.
- Profunda comprensión de los fundamentos de la arquitectura informática: modos de privilegio de CPU, memoria virtual, interrupciones, atómicos, cachés, ordenación de memoria, MMIO, DMA y contadores de rendimiento.
- Experiencia con uno o más de los siguientes: firmware de procesador, software de sistemas ARM o RISC-V, controladores Linux, firmware bare-metal, cargadores de arranque, hipervisores, internos de RTOS o tiempos de ejecución de aceleradores.
- Capacidad para diseñar y mantener interfaces binarias estables y contratos versionados entre componentes de software que evolucionan de forma independiente.
- Fuertes instintos de depuración en los límites de hardware/software, incluidos casos en los que la única evidencia disponible es un volcado de memoria, un búfer de traza, un contador de hardware, el estado de una cola o un registro del simulador.
- Comodidad trabajando en un entorno de rápido movimiento donde los simuladores, el firmware, los controladores, las bibliotecas de tiempo de ejecución y las especificaciones de hardware evolucionan juntos.
- Excelentes habilidades de comunicación y capacidad para colaborar con equipos de hardware, compiladores, tiempos de ejecución y producto.
Cualificaciones Preferidas
- Experiencia con aceleradores personalizados, GPUs, NPUs, SmartNICs, DPUs u otros SoCs complejos.
- Experiencia en firmware de bajo nivel, especialmente modos de privilegio, registros de control/estado, trampas, protección de memoria, memoria virtual, arranque multinúcleo o soporte de depuración de hardware.
- Experiencia con controladores Linux o controladores/tiempos de ejecución en espacio de usuario, incluyendo ioctl/mmap APIs, DMA, manejo de IRQ, compensaciones entre sondeo e interrupción, y rutas de copia cero.
- Experiencia con infraestructura de trazas de hardware y rendimiento como ARM CoreSight, ETM/ETF/ETR, embudos ATB, PMUs de hardware, codificadores de trazas o sistemas de observabilidad de SoC similares.
- Experiencia en el diseño de protocolos de cola, búferes de comandos, colas de finalización, timbres (doorbells), objetos de sincronización o sistemas productor/consumidor de baja latencia.
- Experiencia con puesta en marcha de simuladores y silicio: QEMU, plataformas virtuales, SystemC, simulación RTL, prototipado/FPGA, o depuración de primer silicio.
- Experiencia con sistemas de compilación modernos como Bazel, compilación cruzada, toolchains independientes (freestanding), scripts de enlazador y sistemas de compilación herméticos en general.
Majestic Labs es un empleador que ofrece igualdad de oportunidades y está profundamente comprometido con la diversidad de origen y pensamiento. Si está listo para atreverse a lo grande, aprender de los errores, participar en debates vigorosos y ayudar a crear un cambio radical en la capacidad técnica humana, ¡queremos conocerle!
