IA-64 Performance-oriented programming
IA-64
has a rich instruction set with a great potential for good performance. I have
identified a set of what I call "Key Performance Enablers"
that could make the difference between
and
as
far as performance is concerned. The list is as follows:
One
natural domain for using these Key Performance Enablers is, for instance, a
mathematical kernel. I have chosen Random Number Generators (RNGs). These can
be programmed very effectively on IA-64 by generating arrays of random numbers
in one go. As a proof of concept, at CERN I have coded up both RANMAR48 and the
Mersenne Twister in IA-64 assembly, so that each needs only 4 cycles for
producing a Random Number and storing it in an output array. Doing the same without enabling Key Performance Enablers,
such as Predication, Software Pipelining and Wide Execution, can easily take
10-20 times longer.
The
whole
concept was presented, for instance, at the Itanium Developers’ Conference in
Amsterdam in Nov. 2000.
There
are many other programming domains that seem to offer similar performance
advantages, such as:
Last updated: 25 June
2001 - Sverre Jarp