Summary
Overview
Work History
Education
Skills
Software
Interests
Timeline
Software

Boyana Norris

Sr Staff Software Engineer
Eugene,OR

Summary

Organized and dependable candidate successful at managing multiple priorities with a positive attitude. Willingness to take on added responsibilities to meet team goals. Experience in designing and developing ML compilers for parallel accelerator architectures. Extensive experience in high-performance computing (HPC) research, focusing on methodologies and tools for performance reasoning and automated optimization of scientific applications while ensuring continued or better usability of HPC tools and libraries and improving developer productivity. Most past projects employ both supervised and unsupervised machine learning methods. Developed multiple open-source software packages and coauthored over 100 peer-reviewed publications on topics including performance modeling, compiler-based performance optimization (autotuning), the embedding of domain-specific languages into legacy codes, source-transformation-based automatic differentiation, adaptive algorithms for HPC, and component-based software engineering.

Overview

24
24
years of professional experience
8
8
years of post-secondary education
6
6
Languages

Work History

Sr Staff Software Engineer

Luminous Computing Inc
Santa Clara, CA
04.2022 - Current

Leading design and development of Luminous parallelizing compiler infrastructure for compiling TensorFlow and PyTorch models, including eager PyTorch support

Assistant/Associate Professor

University Of Oregon
Eugene, OR
09.2013 - 09.2023
  • Established the High Performance Computing Laboratory, with research in performance analysis and optimization, compiler-based autotuning, and software engineering (funding: NSF, DOE, NIH, and industry).
  • Created and taught undergraduate and graduate computer science courses, including CS1, CS2, Unix, C, C++, parallel computing, data science, and program analysis and transformation (advanced compilers).

Computer Scientist

Argonne National Laboratory
Argonne, IL
11.1999 - 08.2013

Led the performance engineering group in the Mathematics and Computer Science Division and conducted research in performance analysis and optimization, automatic differentiation, and component-based software engineering.

Education

Ph.D. - Computer Science

University of Illinois At Urbana-Champaign, Champaign, IL
08.1995 - 01.2000

Advisor: Prof. Michael T. Heath

Thesis title: An Environment For Interactive Parallel Numerical Computing

Bachelor of Science - Computer Science

Wake Forest University, Winston-Salem, NC
08.1993 - 05.1995

No Degree - Computer Science

Southwest State University, Marshall, MN
08.1991 - 05.1993

Skills

    Compiler design and implementation

undefined

Software

TensorFlow

PyTorch

Linux

MPI

Interests

Compilers

Domain-specific programming languages

Performance analysis and optimization

Machine learning

Software development productivity

Timeline

Sr Staff Software Engineer - Luminous Computing Inc
04.2022 - Current
Assistant/Associate Professor - University Of Oregon
09.2013 - 09.2023
Computer Scientist - Argonne National Laboratory
11.1999 - 08.2013
University of Illinois At Urbana-Champaign - Ph.D., Computer Science
08.1995 - 01.2000
Wake Forest University - Bachelor of Science, Computer Science
08.1993 - 05.1995
Southwest State University - No Degree, Computer Science
08.1991 - 05.1993

Software

  • Luminous ML compiler is a parallelizing compiler with support for both AOT and eager compilation of ML models implemented in TensorFlow or PyTorch (or any ML framework that can produce MLIR representations of model graphs). The MLIR pipeline includes both custom and open-source dialects and transformations and produces scalable parallel code targeting the Luminous accelerators.
  • Orio (http://brnorris03.github.io/Orio/) is a lightweight, extensible open-source framework that supports the definition of embeddable domain languages and empirical performance tuning of C and Fortran applications. Orio employs a source code annotation approach that enables key computations to be expressed at a high level and embedded in existing code as comments, from which Orio generates many optimized versions, which are then evaluated empirically to select the best versions to use for production runs. Because the search space for nontrivial computations is prohibitively large, Orio incorporates several numerical optimization methods, including Nelder-Mead Simplex-based methods, genetic algorithms, and machine learning and has been cited hundreds of times and used in many different domains.
  • PBound, Mira, and Meliora. Compiler-based static performance modeling tools: estimate the number of floating-point operations and memory accesses through source code analysis (C and C++), and provide upper bounds on the performance of an application; high-level user performance annotations for generating highly optimized code with the goal of increasing developer productivity, application performance, and performance portability on high-end architectures. The latest tool, Meliora (https://github.com/HPCL/meliora), uses LLVM to extract a control flow graph-based program representation, augmented with instruction and memory use details at the basic block level, then uses a CNN to create an embedding that can be used to match codes to previously optimized implementations.
  • Lighthouse (http://code.google.com/p/lighthouse-taxonomy/) is a framework for creating, maintaining, and using a taxonomy of available software that can be used to build highly optimized matrix algebra computations. Lighthouse includes a Django web application with novice and expert search interfaces to several widely used parallel numerical packages. In addition, Lighthouse incorporates a machine learning-based approach to modeling the performance of iterative solvers to support automatic selection of the best-performing method based on the input problem features (e.g., selected matrix properties for linear system solution).
  • Bocca is a tool for automating the management and build of SIDL-based multi-language projects, including Common Component Architecture (CCA) components (http://trac.mcs.anl.gov/projects/cca/wiki/bocca). Bocca is still being used as part of the Community Surface Dynamics Modeling Systems Workbench (https://csdms.colorado.edu/wiki/Workbench), where earth system scientists create and run complex simulations composed of models written in different programming languages. I also contributed significantly to other CCA middleware.
  • ADIC is a source transformation automatic differentiation of ANSI C and C++ programs (http:// www.mcs.anl.gov/adic). ADIC implements a technique for automatically transforming a computer code implementing an arbitrary mathematical function into another code that computes the function and its derivatives without incurring truncation error and often resulting in better performance than numerical approximation approaches, such as finite differences. ADIC has been downloaded thousands of times and has been used in numerical optimization, sensitivity analysis, climate modeling, computational fluid dynamics, and other application areas.



Boyana NorrisSr Staff Software Engineer