Matthew Larsen, Jeremy S. Meredith, Paul A. Navratil, Hank Childs
Current architectural trends on supercomputers have dramatic in- creases in the number of cores and available computational power per die, but this power is increasingly difficult for programmers to harness effectively. High-level language constructs can simplify programming many-core devices, but this ease comes with a poten- tial loss of processing power, particularly for cross-platform con- structs. Recently, scientific visualization packages have embraced language constructs centering around data parallelism, with famil- iar operators such as map, reduce, gather, and scatter. Complete adoption of data parallelism will require that central visualization algorithms be revisited, and expressed in this new paradigm while preserving both functionality and performance. This investment has a large potential payoff: portable performance in software bases that can span over the many architectures that scientific visualiza- tion applications run on. With this work, we present a method for ray tracing consisting of entirely of data parallel primitives. Given the extreme computa- tional power on nodes now prevalent on supercomputers, we believe that ray tracing can supplant rasterization as the work-horse graph- ics solution for scientific visualization. Our ray tracing method is relatively efficient, and we describe its performance with a series of tests, and also compare to leading-edge ray tracers that are op- timized for specific platforms. We find that our data parallel ap- proach leads to results that are acceptable for many scientific visu- alization use cases, with the key benefit of providing a single code base that can run on many architectures.