Algo-Logic Systems is seeking an experienced Linux kernel device driver and user API developer to support next-generation CPU/FPGA hybrid systems for data centers, key-value stores, Internet of Things, accelerated finance, and other application domains.
Algo-Logic IP cores have been proven in real-time embedded systems and we are extending them to fulfill the needs of next-generation applications in other domains. We are seeking an experienced software developer to design and implement versatile, forward-looking device drivers to support continuously evolving FPGA logic on a variety of system architectures. In most cases this will be new functionality, not an incremental modernization that must maintain backward compatibility.
Algo-Logic FPGA based accelerators are implemented in both discrete PCI cards and cache-coherent tightly coupled CPU/FPGA hybrids, meaning the drivers must support both a classical PCI interface (MMIO and interrupts) as well as modern cache-coherent interfaces (read-modify-write atomic operations). Experience with coherent memory models like IBM's CAPI and Intel's CCI-P/QPI are highly desirable.
- Develop Linux kernel driver to interact with reconfigurable (FPGA based) devices
- Develop API libraries for user software applications to offload tasks and/or data to a FPGA accelerator
- Correctness and Performance testing of FPGA/CPU interface
- Working directly with customers and vendors to define and interpret requirements and specifications
- Functional and performance regression testing of FPGA application logic, kernel driver, and user API library
- Linux kernel internals, especially memory model issues (huge pages, persistent memory, physical addressing, etc.)
- Understanding of x86 memory controller and PCI interactions
- Debugging of hybrid hardware/software systems
- Strong C/C++ programming skills
- Understanding of IP Layers 1 & 2, UDP, multicast
- Understanding of latency optimizations for programming and networking
- Writing user and reference documentation
- Working with reconfigurable systems based on FPGAs
- Experience with Linux Huge Pages
- MMIO, DMA, and MSI-X over PCIe
- Multithreaded programming
- Git repositories
- Key-value stores (MongoDB, Redis, Memcache, etc.)