Am Mittwoch, den 02.01.2008, 21:30 +0000 schrieb Paulo Costa: > At 18:46 02/01/2008, willem wrote: > >Vincent has made an improved Mandelbrot benchmark. > > > >i did run the original mandelbrot benchmark with N =5000. It took 2: 20 > >minutes. > > > >The improved version took 2:00 minutes. > > > If you see the gcc version you'll see that it relies on SSE2 instructions > to perform two double computations with one instruction: > > http://shootout.alioth.debian.org/gp4/benchmark.php?test=mandelbrotā©=gcc&id=3 > > " > Uses SSE packed doubles to run the inner loop computations in parallel. > I don't have a machine with SSE to test with, but the assembly looks > pretty nice. With gcc-3.4.2 there's no difference in the assembly > between -msse2 and -msse3, YMMV. It uses gcc's vector extentions > ( http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Vector-Extensions.html ), > so it will run (slowly) on hardware without SSE. > " > That is why it is twice as fast. The "-funroll-loops" may help a bit also, > because it is very aggressive and can eradicate some loop variables... > > I think that the only "easy" way for fpc to be competitive in cases like > these is to have explicit types for MMX and SSEn data and the "functions" > to operate with them, like gcc does... > And, no I'm not the one who can send those patches :(
FYI: There is a pascal compiler (no objects IIRC) available that generates SIMD code for various CPUs. Maybe some code from there can be reused. Look there: <http://www.dcs.gla.ac.uk/%7Ewpc/reports/compilers/compilerindex/x25.html> HTH and a lucky new year, Marc _________________________________________________________________ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives