What is an HTA?
A Hierarchically Tiled Array or HTA is an array that is subdivided into tiles. Each tile can be either a regular array or another HTA, hence the recursive nature of this data type.
What are HTAs good for?
HTAs are very useful to exploit locality and parallelism in a program. The reason is that HTAs lead the programmer to manipulate arrays, either implicitly or explicitly, by tiles. Tiles by themselves express locality, but they also express parallelism because operations on the different tiles of an HTAs are parallel. HTAs provide mechanism to perform standard operations on its arrays, as well as user-defined operations, so they are very flexible.
For which languages and parallel environments are HTAs available?
We have developed HTAs for MATLAB and C++, although we are currently only distributing the C++ HTA. Two separate releases of C++ HTA are currently available from our download page:
  • Version 0.1 of the HTA provides support for sequential programs as well as parallel programs, the latter running on top of MPI. Thus this is the way to go for distributed memory environments.
  • Version smp.0.1 is designed for shared memory environments. Namely, it is a derivation of version 0.1 that runs on top of the Intel® Threading Building Blocks (TBB). This way, this HTA library is ideal to make parallel programs for multicore / SMP environments.
How do I program with HTAs in C++?
Follow the instructions of the README.txt file after downloading the HTA library to set up your environment. Then you can find the documentation in the doc directory, where the summary is a useful cheat sheet for programming with HTAs. The testcases directory contains a series of small programs with HTAs used to test the library, so they can also give you a very good idea on how to program with HTAs. Of course, our publications are another excellent source of information on HTAs.