On Thu, 2010-10-14 at 07:58 -0400, bearophile wrote: [ . . . ] > I agree, for some people 'high performance' means the automatic > slicing and tiling of loops as done by advanced Fortran compilers, > something that C/C++ compiler have just started to do a bit, and are > far from doing well still.
There is also the issue that much of the HPC community is hobbled with 1960s Fortran code that they have to make work in parallel as they cannot justify the expense of rewriting the codes. > High performance also means using the SIMD instructions efficiently, > and not even the Intel C++ compiler (that about this is better than G > ++) is doing that well yet. That's why high-performance kernels in GNU > radio, video decoders, Golomb ruler finders, etc often need to be > handwritten. [ . . . ] And there is the issue of the right level at which the programmer expresses things. Part of the problem for Fortran codes in the past was that programmers had written their loops using the tools available, and this made parallelization a nightmare. This rapidly let not just to some extremely clever compiler techniques, but also to the introduction of whole array operations at the language level. Something similar is happening in C++: Threading Building Blocks introduces what is effectively a functional DSL for describing parallel computations. In all the little microbenchmarks I have tried using C, C ++, Fortran, D, Go, Java, Scala, etc. C++ with TBB is currently the market leader for CPU bound systems on single machine multiple multicore processors. If D could get to the same level of performance, life would be much better. (NB "levels of performance" here is a complicated issue, the previous statement does have the danger of being taken as over-trivializing things.) -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:[email protected] 41 Buckmaster Road m: +44 7770 465 077 xmpp: [email protected] London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
signature.asc
Description: This is a digitally signed message part
