mathr / blog / #

mightymandel v12 - now twice as fast!

I've been working on mightymandel a lot the past few days, and finally got it in a clean enough state to make another release, and this one is worthy of an announcement. mightymandel is a GPU-based Mandelbrot Set explorer (currently based on OpenGL 4.1). It uses perturbation techniques with series optimisation to allow deep zooms without having to compute each pixel at high precision. It now has automatic glitch correction, and since v11 there is a massive speed boost: v12 is (almost) twice as fast as v11! (And now it's faster than Kalles Fraktaler 2.7.3 running in wine32.)

Embarassingly, most of the speed boost came from removing a bunch of code. Previously, I tried to find better reference points by atom location algorithms, which require a lot of iterations at high precision. Now, I just pick the center of the glitch blob. Much simpler! Images might need more reference points, but the overhead is reduced so much that it doesn't really matter, and most images will complete rendering much quicker.

There's now a large set of example parameters, if you don't know where to start looking when faced with the infinite. I can't claim credit for these, they're collected from a few online sources, links are in the README inside each subdirectory.

mightymandel now has a test suite, a crufty shell script that renders all the parameters in the examples directory, and gives you a directory of images and a long log file. It takes about 35mins to run on my system, and while it's running it's pretty much impossible to do anything else because of the new mightymandel windows opening every few seconds. But it's worth it, it's much easier to test regressions and improvements before making a new release. Current success rate is 57%, you can see the full details in the TESTING file in the repository. Here's the current set of non-failing images:

Getting mightymandel currently requires git (to get the source code) and compiling it manually. Here's the quick guide, more detail is in the README (including required packages for Debian-based distributions):

git clone http://code.mathr.co.uk/mightymandel.git
cd mightymandel
git checkout \$(git tag -l | sort -V | tail -n 1)
make -j6 -C src
./src/mightymandel

You can browse the mightymandel repository browse the mightymandel repository if you like, too. Happy fractal exploring!