High-performance computing (HPC) application developers can no longer affor
d the luxury of programming to just one platform. The usefulness and longev
ity of software now depend on portability as well as performance. This pape
r examines the appropriateness of existing tools in developing and tuning a
pplications that must be both efficient and portable. A series of design tr
adeoffs have been made, with the result that today's tools are slanted towa
rd one goal or the other but do not respond adequately to both. These trade
offs are explored through a series of examples drawn from current tools. Su
ggestions are presented for how tools might better support the evolving nee
ds of HPC programmers. (C) 2001 Elsevier Science B.V. All rights reserved.