Review of
Stream Computing on Graphics Hardware
PhD Dissertation by Ian Buck
Department of Computer Science
Stanford University
September, 2006

Reviewed by
John Michalakes
CSCI 7900-903: Intro to the PhD program
University of Colorado at Boulder
Fall 2007

As the rate of increase of conventional processor speed tapers off, attention is turning to non-traditional architectures for increasing performance of computationally demanding applications. Ian Buck's doctoral dissertation focused on exploiting these new architectures by making graphics processors (GPUs) easier to program for general purpose applications. Buck developed a C-like language, Brook, for programming GPUs under the stream computing model. Buck's dissertation is relevant to my own research on application of heterogeneous architectures including GPUs, Cell, and FPGAs to atmospheric modeling.

Buck stated the problem in terms of challenges, opportunities, and obstacles. The challenge is that power, cooling, and complexity are limiting increases in performance of conventional processors but low cost, very fast, very specialized graphics processors present new opportunities if programmability obstacles can be overcome. Buck surveyed existing technology and prior work as a context for explaining the unique contribution of his own work. Programming GPUs was too tied to the details of graphics processing to be useful for general purpose computing. Stream programming is similar to the SIMD model of parallel computing but with concurrency and low-overhead context switching to better tolerate latency and limited bandwidth to memory.

Buck carefully enumerated the specific GPU stream programming issues and Brook's approach to addressing each issue. Brook provides data types, language constructs and built-in functions, and a run-time environment that encourage programmers to define programs as kernels operating on streams to exploit locality, parallelism, and to avoid introducing performance-inhibiting data dependencies.

Buck evaluated his language by benchmarking Brook-compiled programs and comparing performance against hand-coded GPU reference implementations and against performance of the codes running on a conventional CPU. The performance results were encouraging but not unequivocally good. Surprisingly, for example, none of the GPU implementations of the FFT benchmark outperformed the host CPU. Buck noted that the CPU implementation "performs an exhaustive search over a suite of known FFT implementations and chooses the fastest based on which is able to best utilize the CPU caches." In other words, to Buck's credit, he did not compare against a creampuff FFT implementation for the CPU. In his further defense, GPU technology continues to improve rapidly. The ATI and NVIDIA GPUs today are considerably more capable than the ones Buck tested for his dissertation.

I will conclude this review with some thoughts on the form of the dissertation itself. A dissertation is a tour de force, longer and with greater scope, detail, and complexity than a journal publication. A dissertation is divided into chapters and resembles a book more than a journal article. Buck organized each chapter as if it were a standalone paper, having its own introduction, statement of problem, survey of existing work, methodology, evaluation and conclusion. This was helpful, since few read a dissertation from beginning to end in one sitting.

The overall presentation proceeds from general to specific. As with any technical/scientific writing, but especially in a treatment of this depth, Buck necessarily encountered the classic writer's conundrum that arises when relationships between terms and concepts cycle back on each other but must be presented linearly. For example, Buck was forced to refer to stream computing frequently in introductory chapters before fully explaining the term in Chapter 4. I know from my own experience, it is difficult to organize one's writing this way, with faith in the reader's patience. It was instructive and reassuring to see this handled competently in Buck's dissertation.

Other things I noticed in this dissertation's style and presentation were (1) the writing was more technically focused and assumed the reader brought greater subject area knowledge than to a typical publication. (2) Buck contrasted his work frequently with prior work, repeatedly reminded the reader how "other work does this but Brook adds that ..." or "Brook is better because...." (3) Finally, and perhaps because of the pressure and all-consuming effort that his dissertation demanded, and because Buck knew his primary audience personally, the writing was a little sloppier and more informal than in a scientific or technical publication. I am told that this is typical of many dissertations.