Welcome to Fractal Forums

Fractal Art => Images Showcase (Rate My Fractal) => Topic started by: kubinator4321 on December 24, 2014, 11:00:34 PM




Title: Awesome Buddhabrot
Post by: kubinator4321 on December 24, 2014, 11:00:34 PM
Hello fellow fractallers,
I decided, that since christmass is coming and I'll be having lots of housework, I'll launch up a render with a high resolution and point ammount. Time passed, and when I came back to my PC, it was nearly done - it took 11 hours total. I am very pleased with the results though.  Even after I checked the exact settings before going for the long render, the image came out clearer than I thought it would, but I'll need to get some work with multithreading.
Any C++ people familiar with CUDA or windows.h multithreading willing to help?

The image:
(http://nocache-nocookies.digitalgott.com/gallery/16/11316_24_12_14_10_48_44.png)

Full-res image (hosted on mediafire) (beware old PC users, 4096x4096):
http://www.mediafire.com/view/6eohbbvi7bnnb3l/BuddhaBest3Watermark.png

Hope you enjoy the fractals, and merry christmass to you all!


Title: Re: Awesome Buddhabrot
Post by: hobold on December 25, 2014, 03:09:36 AM
A comment on multithreaded programming: I recently tried the boost library (http://www.boost.org (http://www.boost.org)) and found its multithreading support fairly easy to use. It may not be the best threading API in existence, but for massively parallel tasks such as graphics, it is convenient and sufficient.

(I parallelized some renderer across rows of an image. I had a global atomic variable as row counter; each thread would increment it with boost::atomic::fetch_add() to obtain the row number to be computed next (and to terminate the thread if the number was > imgHeight). I used a boost::thread_group to wait for all threads to be finished.

For a Buddhabrot style accumulation of trajectories, it will probably be better to have an exclusive memory buffer per thread, and only merge all buffers at the end of the rendering. That way, the threads don't step on each other's data.)