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.