I 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...
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.
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...