-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bench Mandelbrot for algebraic speed assessment #190
Comments
I have finally some good news! Here's the latest YADE benchmark, The trick was to use a different compiler! clang++ 19.1.7,
g++ 14.2,
So all other types perform at nearly the same speeds for both compilers. The only exception is And here are the results for clang++ 19.1.7,
g++ 14.2,
Again, g++ is 6 times slower than clang for So Chris, if you used a different compiler for your Mandelbrot |
This is indeed going in the right direction. But the mystery on g++ confuses us still (sadly).
This is our last real big open issue. In the next post I provide my mandelbrot benches |
Hi Janek (@cosurgi) I've prepared the Mandelbrot benhmark and you can hopefully successfully run it locally. In ckormanyos/mandelbrot, you will find the On commit 40004acef31953f4b25eeb38e452446990ad55f9, the benchmark is ready for your consumption. You will need to make a few tiny adjustments when calling BuildingFirst locate
You can change the compiler and boost location(s) and language standards on the command line. The order of the parameters does not matter. The default checked in is for In order to change to, let's say,
|
My timings on WSL2 are as follows: Using g++
Using clang++
|
Wow, Chris, I did not expect a fully fledged software package like your awesome https://github.com/ckormanyos/mandelbrot ! :-) And simple to use too! The mystery is solved: g++ does not play well with my 11 year old CPU, while clang somehow manages to squeeze some optimizations in. Having seen the bad results, I decided to try on my wife's PC, which was recently upgraded. And it turns out that g++ plays well with a modern CPU. Have a look at these results: CPU Intel Xeon E5-2687W v2 (11 years old CPU)clang++ 14.0.6
g++ 12.2.0
clang++ 19.1.7
g++ 14.2.0
CPU Intel i7-14700KF (2 years old CPU)clang++ 19.1.4
g++ 12.2.0
I am skeptical if we could convince g++ developers to suddenly add better support for better optimization for an 11 year old CPU. But we know what goes on here and the mystery is solved. |
Yeah Janek (@cosurgi), way to stick with it! I am really glad we resolved this little bump-in-the-road-style mystery. Thank you for driving forward with this. I was getting a bit scared. So here is what we are going to do.
There is a lot of optimization potential down the road for double-floating-point. I just addressed the basic, obvious optimization points at the moment. So this thing will get even faster later. It is, however, somewhat ominous how potentially non-portable the performance boost on this thing may be. So that might lead to some interesting issues down the road. Anyway, I see no further blocking points regarding forward motion on Cc: @sinandredemption and @jzmaddock |
Yeah Janek (@cosurgi) that thing is one of my retirement toys (in a couple years). I want to put some of the iterative schemes on GPU and really hammer down on iterations and fractals. Personally, I struggle with finding good orbits and interesting points to dive down into. But I have a few nice ones. |
OK algebraic aclculations are fast. We got this. So I am closing this issue. |
As a kid I was playing a lot with fractint software. I see it is still here as a debian package xfractint. It has a decent graphical interface, so you can just point and click to zoom on interesting areas. It has arbitrary precision too, so you can zoom in really deep. And it gives the exact coordinates. So with the graphical interface you can find interesting coordinates quickly. |
Very cool Thank you for the tip Janek.
You might want to try my "MandelbrotDiscovery" in the same repo. But it is Windows only at the moment. |
The purpose of this issue is to do some dedicated algebraic performance testing of the double-float backend versus various similar competitors. This issue might have a bit of depth, so we make a separate issue here for the diedicated discussion.
Cc: @cosurgi
The text was updated successfully, but these errors were encountered: