Visualizing the Mandelbrot Set with Chlorine
tinycranes.comI hadn't heard of Chlorine, so this is effective as an intro/demo.
The implementation you use is the textbook "toy" one, though, which is a bit oversimplified and probably biases the perceived speedup. Simple and brute force often favors GPU implementation, whereas the communication can really hurt you in a more realistic algorithm.
It would be interesting to see what your comparison looks like with at least a spatial subdivision and connectivity analysis (the most obvious algorithmic speed up), proper anti-aliasing and a functional zoom. Even better if you did interior/exterior distance estimation...
I was contemplating doing a FFT as a demo, but Mandelbrot was low hanging fruit that made for pretty pictures. Keep in mind this was student work.
If you have a specific problem in mind, I'd be happy to work on adding it as an example.
I'm in search of my first "customer" so to speak. :)
Above I was suggesting additions to the existing demo, the straightforward computation of Mandelbrot membership isn't how you would really do it if you care about performance or accuracy.
Do any of those modifications appeal? I understand it was student work, but everything I suggested is fairly straightforward.
They certainly do appeal, but are likely a little outside my expertise to go implement, at least right now. Definitely something I'll look into, time permitting!
I was aiming more for "simpler" to start with I think.
In my own experience, using cuda when you have access to an NVIDIA card increases the speed even more so. Perhaps you might want to add a comparison to that too. I used to make fractals too and went through the same steps :D
It would be an interesting comparison, yeah. I haven't worked with CUDA much lately though. I was thinking of adding CUDA support so that Chlorine would default to CUDA on Nvidia cards, but it seemed of limited value. The real goal is 1) portability and 2) ease of use, rather than absolute performance.
I wrote this blog post a while ago, and decided to revisit it over the weekend to generate/add some benchmarking data. Figured I'd post it here and see if anyone has any feedback.