article development led by
Heterogeneous systems allow us to target our
programming to the appropriate environment.
BY satnam sinGh
FrOM the PrOGraMMer’s perspective the distinction
between hardware and software is being blurred.
As programmers struggle to meet the performance
requirements of today’s systems they will face an
ever increasing need to exploit alternative computing
elements such as graphics processing units (GPUs),
which are graphics cards subverted for data-parallel
11 and field-programmable gate arrays
(FPGAs), or soft hardware.
The current iteration of mainstream computing
architectures is based on cache-coherent multicore
processors. Variations on this theme include Intel’s
experimental Single-Chip Cloud Computer, which
contains 48 cores that are not cache coherent. This
path, however, is dictated by the end of frequency
scaling rather than being driven by requirements
about how programmers wish to write software.
The conventional weapons available for writing
concurrent and parallel software for such multicore
systems are largely based on abstractions developed for writing operating
systems (for example, locks and monitors). However, these are not the correct abstractions to use for writing parallel applications.
There are better ways to bake all that
sand. Rather than composing many
elements that look like regular CPUs,
a better approach, from a latency and
energy-consumption perspective, is
to use a diverse collection of processing elements working in concert and
tuned to perform different types of
computation and communication.
Large coarse-grain tasks are suitable
for implementation on multicore processors. Thousands of fine-grain data-parallel computations are suitable for
implementation on GPUs. Irregular