As the diversity, complexity, and scale of
advanced computing hardware has increased,
the complexity and difficulty ofdeveloping applications has increased
as well, with many operating functions
now subsumed by applications. Application
complexity has been further
exacerbated by the increasingly multidisciplinary
nature of applications that
combine algorithms and models spanning
a range of spatiotemporal scales
and algorithmic approaches.