Nathan Brunelle

Learn More
The Levenshtein Nondeterministic Finite state Automaton (NFA) recognizes input strings within a set edit distance of a configured pattern in linear time. This automaton can be pipelined to recognize all substrings of an input text in linear time with additional use of nondeterminism. In general , von Neumann hardware cannot directly execute NFAs without(More)
Micron's Automata Processor (AP) efficiently emulates non-deterministic finite automata and has been shown to provide large speedups over traditional von Neumann execution for massively parallel, rule-based, data-mining and pattern matching applications. We demonstrate the AP's ability to generate high-quality and energy efficient pseudo-random behavior for(More)
We study compression-aware algorithms, i.e. algorithms that can exploit regularity in their input data by directly operating on compressed data. While popular with string algorithms, we consider this idea for algorithms operating on numeric sequences and graphs that have been compressed using a variety of schemes including LZ77, grammar-based compression, a(More)
Micron's new Automata Processor (AP) architecture exploits the very high and natural level of parallelism found in DRAM technologies to achieve native-hardware implementation of non-deterministic finite automata (NFAs). The use of DRAM technology to implement the NTA states provides high capacity and therefore provide extraordinary parallelism for pattern(More)
Constructed and executed the undergraduate Theory of Computation course, required for all undergraduate majors. Required writing and giving lectures, giving exams, holding problem solving sessions, and managing a team of Teaching Assistants. Intentional is building an innovative software platform that will transform application development. We think all(More)
—High-performance automata-processing engines are traditionally evaluated using a limited set of regular expression-rulesets. While regular expression rulesets are valid real-world examples of use cases for automata processing, they represent a small proportion of all use cases for automata-based computing. With the recent availability of architectures and(More)
While massive datasets are often stored in compressed format, most algorithms are designed to operate on uncompressed data. We address this growing disconnect by developing a framework for compression-aware algorithms that operate directly on compressed datasets. Synergistically, we also propose new algorithmically-aware compression schemes that enable(More)
We consider the task of sorting and performing kth order statistics on a list that is stored in compressed form. The most common approach to this problem is to first decompress the array (usually in linear time), and then apply standard algorithmic tools. This approach, however , ignores the rich information about the input that is implicit in the(More)
When writing a program, the programmers may wish to verify certain properties of this program. For example, will my variable X always be an integer? To answer these questions we use program analysis. Constraint-based program analysis is a form of static program analysis. This means that all of these questions about the program's run-time behavior are(More)
  • 1