Tensor Contraction Engine

From HPCRL Wiki
(Difference between revisions)
Jump to: navigation, search
(New page: == Tensor Contraction Engine == The majority of software for scientific computations is written in the low-level languages FORTRAN and C. The computational structure of some of this softw...)
 
m (Reverted edits by 194.8.74.235 (Talk); changed back to last version by 164.107.116.212)
 
(One intermediate revision by one user not shown)

Latest revision as of 06:14, 25 November 2008

Contents

Tensor Contraction Engine

The majority of software for scientific computations is written in the low-level languages FORTRAN and C. The computational structure of some of this software, however, has sufficient underlying structure that it could benefit from special-purpose software engineering tools or domain-specific programming languages. E.g., electronic structure calculations in quantum chemistry and in physics involve large collections of tensor contractions (generalized matrix multiplications). Currently, chemists spend weeks or months manipulating formulas containing dozens or hundreds of terms with Mathematica, hand-optimizing the computation, and writing FORTRAN code by hand. The computation can take on the order of 1 TFLOP week or more and can require multiple TBs of storage.

We are developing a domain-specific language that allows chemists to specify the computation in a high-level Mathematica-style language. The compiler for this language, the Tensor Contraction Engine (TCE), searches for an optimal implementation and generates FORTRAN code. First, algebraic transformations are used to reduce the number of operations. We then minimize the storage requirements to fit the computation within the disk limits by fusing loops. We have designed an algorithm that finds the optimal evaluation order if intermediate arrays are allocated dynamically and are working on combining loop fusion with dynamic memory allocation. If the computation does not fit within the disk limits, recomputation must be traded off for a reduction in storage requirements. If the target machine is a multi-processor machine, we optimize the communication cost together with finding a fusion configuration for minimizing storage. Finally, we minimize the data access times by minimizing disk-to-memory and memory-to-cache traffic and generate FORTRAN code. We have completed a first prototype of the TCE and are working on implementing the communication minimization and data access optimization algorithms. In future research, we will extend this approach to handle common subexpressions, symmetric matrices, and sparse matrices.

Investigators

Publications

For an overview of the project, see our Proceedings of the IEEE paper. A complete list of publications can be found here.

Software

There are several components available as part of the TCE software. Details can be found here.

Funding

NSF Information Technology Research Program, Award #0121676, Sept. 2001 - Aug. 2006

Personal tools