ACM Transactions on Graphics· 2019Q1
Taichi
- 255citations
- Q1SCImago
- 2019year
Short summary
Taichi is a new data-oriented programming language that allows users to write high-level computation code while independently specifying and composing sparse data structures, achieving 4.55x higher performance than hand-optimized implementations with 10x fewer lines of code.
AI-generated from the title and abstract; the full text is not read.
Key points
- Taichi is a data-oriented programming language for efficiently handling sparse data structures in 3D visual computing.
- It decouples computation from data structure specification, allowing high-level, data-structure-agnostic code.
- Users compose elementary sparse components to build custom multi-level sparse data structures.
- The compiler automatically optimizes for performance, sparsity, and memory, generating parallel code for CPUs and GPUs.
- Taichi achieved 4.55x higher performance on average compared to hand-optimized implementations, using 10% of the code.
AI-generated from the title and abstract; the full text is not read.
Abstract
3D visual computing data are often spatially sparse. To exploit such sparsity, people have developed hierarchical sparse data structures, such as multi-level sparse voxel grids, particles, and 3D hash tables. However, developing and using these high-performance sparse data structures is challenging, due to their intrinsic complexity and overhead. We propose Taichi , a new data-oriented programming language for efficiently authoring, accessing, and maintaining such data structures. The language offers a high-level, data structure-agnostic interface for writing computation code. The user independently specifies the data structure. We provide several elementary components with different sparsity properties that can be arbitrarily composed to create a wide range of multi-level sparse data structures. This decoupling of data structures from computation makes it easy to experiment with different data structures without changing computation code, and allows users to write computation as if they are working with a dense array. Our compiler then uses the semantics of the data structure and index analysis to automatically optimize for locality, remove redundant operations for coherent accesses, maintain sparsity and memory allocations, and generate efficient parallel and vectorized instructions for CPUs and GPUs. Our approach yields competitive performance on common computational kernels such as stencil applications, neighbor lookups, and particle scattering. We demonstrate our language by implementing simulation, rendering, and vision tasks including a material point method simulation, finite element analysis, a multigrid Poisson solver for pressure projection, volumetric path tracing, and 3D convolution on sparse grids. Our computation-data structure decoupling allows us to quickly experiment with different data arrangements, and to develop high-performance data structures tailored for specific computational tasks. With 1 <u> 1 </u> 0 th as many lines of code, we achieve 4.55× higher performance on average, compared to hand-optimized reference implementations.
The authors' abstract, as published at the source. ACM Transactions on Graphics, 2019 · DOI ↗
Continue with a free account
Ask the paper: 3 free questions a day about this paper; save it, get its citation, new summaries every day for your field. Takeaways are Premium.
Continue free on the webSign in with Google or Apple; no card needed. You come back to this paper.
On your phone:
Field: Computer Graphics and Computer-Aided Design
Computer Graphics and Computer-Aided DesignComputer Science