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.

Job Responsibilities

  • 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

Required Skills

  • 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 networking stacks (Ethernet, TCP/IP, Application) Layers 1-7, UDP, multicast
  • Understanding of latency optimizations for programming and networking
  • Writing user and reference documentation
  • At least one scripting language such as: Python and/or JavaScript, shell (bash, csh, etc.) scripting, Makefiles

Preferred Skills

  • 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.)

To apply, please submit an employment inquiry.