The IBM-Z Compiler and Toolchain team is looking for an engineer with good Linux systems & C++ skills for the Linux User-Space Device Driver Team.
The user space driver for the AI accelerator provides a high-performance interface between upper software layers—such as AI applications or libraries—and the underlying specialized hardware.
The role involves analyzing, modifying, maintaining, building, benchmarking device driver code & its test suite,
packaging patched Linux kernel source and device performance monitoring on the s390x architecture.
You are expected to be good at looking into device driver code, comfortable with Linux OS-device interaction concepts and C++.
Minimum 3+ years of total work experience (exceptions can be made).
Strong in C & C++ (STLs, smart pointers ...).
Comfortable with shell scripting, Python.
Good with VCS like Git and familiarity with Github.
Good understanding of Linux OS concepts and internals.
Hands on experience with Linux OS tools, build process etc.
Knowledge about PCIe devices and their management.
Knowledge about HAL, DMA, MSI, MSI-X, MMIO, IOMMU.
Experience working with devices (or better with ASIC/SoCs) on general purpose Linux distributions.
Experience working on various Linux distros & knowledge about packaging for various Linux distros like RHEL, Ubuntu etc.
Experience working with accelerators or GPUs.
Good understanding of the Linux vfio/vfio-pci framework.
Knowledge/previous experience working on Linux user mode drivers like dpdk, libusb etc.
Linux kernel programming and device driver development experience.
Knowledge about Virtualization techniques, hypervisors and VMs.
Knowledge about SR-IOV.
Knowledge about containers and Kubernetes.
Experience creating and deploying CI/CD pipelines.
Experience working with the open source software community.
Exposure to interoperability between C++ and Python (exposing C++ types and functions within Python).