Basis Technology is dedicated to engineering a safer and more productive world by building proven AI solutions for analyzing text, connecting data silos, and uncovering digital evidence. From making governments smarter to national security to fighting financial fraud, we make sense of messy, voluminous data by applying our AI, machine learning, and cyber forensics to power the most important systems on earth. It’s challenging work, but we love it. Because we’re wholehearted believers in the power of persistence to solve any problem, and we solve problems that matter.
If you’ve got ingenuity, ambition, and heart, and you want to come to a company where you can make a difference, then you’ll feel right at home among our diverse team of creators. From engineers to graphic designers, we empower every person in our company to make their mark. So don’t come here for a desk job. Show up ready to build.
As a Performance Software Architect, you will analyze existing performance and lead improvement strategy, including architectural product changes, to increase speed and reduce memory usage of components of Basis’ Rosette platform. This role will require a strong theoretical background in computer science fundamentals, including data structures and algorithmic complexity (Big-O analysis). Equally, the candidate must be able to apply these theoretical principles for intensely practical tasks, where a few-percentage-point improvement in performance may translate to a big impact in a product’s reception in the market. The range of performance-critical factors is large so candidates should have the ability to research the performance literature to understand and analyze new domains.
- Analyze performance of software with profiling and data-flow tracing tools, through all stages of disk, memory, CPU caches, FPU, and GPU or TPU operations
- Identify bottlenecks at each of these stages and propose improvements, both as series of small increments, and through fundamental algorithmic and architectural advances
- Understand key performance structures and algorithms, such as hash and B-tree data structures, Bloom filters, and linear algebraic processing
- Investigate high-dimensional indexing approaches such as Locality Sensitive Hashing for Approximate Nearest Neighbor queries
- Investigate and apply object-size optimization to fit caches
- Apply linear algebra library optimizations including loop unrolling and quantization
- Analyze output from hardware-level analytic tools such as NVIDIA Nsight, determining optimizations to fully load FPU and GPU
- Analyze runtime data structures, thread dumps, flame graphs, and garbage creation/collection histories, to quantify and improve drivers of both initial and sustained throughput
- Create test harnesses for code performance analysis and automated regression testing
- Be responsible and accountable for performance specification and optimization across the software lifecycle, from R&D and initial design, through maintenance
- Be a mentor and role model for design reviews, code, and test cases
- Participate in agile sprint and release planning
- 5+ years experience in modern programming languages
- Broad familiarity with computer language theory as applied across Java, C++, Python, deep learning frameworks such as TensorFlow, PyTorch, and Deeplearning4j, and data/retrieval systems such as Lucene and MongoDB
- Be able to apply linear algebra, probability and statistics, and calculus to machine learning techniques as diverse as Hidden Markov Models and Convolutional Neural Networks
- Familiarity with deep learning frameworks such as TensorFlow, PyTorch, and Deeplearning4j is a plus
- Able to quickly adopt new languages, tools, and techniques by reading manuals and searching and reading scholarly literature
- Experience using profiling and other performance tools
- Experience working with a team to deliver software
- Master’s degree in Computer Science, or equivalent self-study and experience
- A passion to design, build, and improve software applications
We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.
We are also committed to the full inclusion of all qualified individuals. As part of this commitment, we will ensure that persons with disabilities are provided with reasonable accommodations. If reasonable accommodation is needed to participate in the job application or interview process, to perform essential job functions, and/or to receive other benefits and privileges of employment, please contact email@example.com.