[math-fun] Huge Mandelbrot set
As a computational tour-de-force, I decided to draw a large image of the Mandelbrot set and save it as a macrocell file. The iteration limit was 1000 iterations per pixel, and the bounding box is 258687 by 221688. https://docs.google.com/open?id=0B7zc3Wqisi4jenRfQmlmQTJ4LXM There's some slight mutilation, unfortunately, due to the lazy recursive sampling method I used. I think the worst (only?) case of this is the southernmost minuscule 'copy' of the Mandelbrot set, which does not appear reflected in the real axis. I've used machine-precision complex numbers to accelerate the process; hence, there is some very minute asymmetry. Oh well. The computation took 20427 seconds on my old 1.3 GHz single-core machine from 2001. Individual 32 by 32 squares are computed in efficient C code and assembled by Mathematica 8. I then optimised the quadtree (resulting in a reduction in file size by almost an order of magnitude from 722MB to 85MB) using a C++ program. The GZipped version (25MB) is available for download from the above link. Sincerely, Adam P. Goucher
Can't modern GPU's (nVidia Kepler, etc.) compute Mandelbrot in "real time" -- i.e., the time it takes to display that portion of the screen ? If not, aren't modern GPU's getting pretty close to this capability ? www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdf At 01:21 PM 8/18/2012, Adam P. Goucher wrote:
As a computational tour-de-force, I decided to draw a large image of the Mandelbrot set and save it as a macrocell file. The iteration limit was 1000 iterations per pixel, and the bounding box is 258687 by 221688.
https://docs.google.com/open?id=0B7zc3Wqisi4jenRfQmlmQTJ4LXM
There's some slight mutilation, unfortunately, due to the lazy recursive sampling method I used. I think the worst (only?) case of this is the southernmost minuscule 'copy' of the Mandelbrot set, which does not appear reflected in the real axis. I've used machine-precision complex numbers to accelerate the process; hence, there is some very minute asymmetry. Oh well.
The computation took 20427 seconds on my old 1.3 GHz single-core machine from 2001. Individual 32 by 32 squares are computed in efficient C code and assembled by Mathematica 8. I then optimised the quadtree (resulting in a reduction in file size by almost an order of magnitude from 722MB to 85MB) using a C++ program. The GZipped version (25MB) is available for download from the above link.
Sincerely,
Adam P. Goucher
For all the sense I could make of it, this document might just as well have been an extract from a storyboard for Star Wars --- and I used to teach computer architecture a few years ago! WFL On 8/18/12, Henry Baker <hbaker1@pipeline.com> wrote:
Can't modern GPU's (nVidia Kepler, etc.) compute Mandelbrot in "real time" -- i.e., the time it takes to display that portion of the screen ? If not, aren't modern GPU's getting pretty close to this capability ?
www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdf
Henry Baker wrote:
Can't modern GPU's (nVidia Kepler, etc.) compute Mandelbrot in "real time" -- i.e., the time it takes to display that portion of the screen ? If not, aren't modern GPU's getting pretty close to this capability ?
Yes, real-time rendering on a GPU is pretty trivial these days. I implemented it as a screen-saver a couple years ago, see: http://mrob.com/pub/comp/screensavers/index.html#GLMZ As an added bonus, I was able to use the GPU to interpret hand-gestures on the webcam as a hands-free input technique to zoom in and out. I got 1024x1024x11500 iterations per second on an Radeon HD 6750M. (On my Radeon HD 5770 it's about 1.8x faster). This is more than adequate for most users, even without smart techniques (as used by XaoS, [5]) to avoid re-computing pixels, etc. But on a GPU, to zoom in to the really interesting stuff, you need "fast double precision" that is unlocked, as in the hyper-expensive Nvidia Tesla cards, or something like the Radeon 6900 or 7900 series. And for the really *really* interesting stuff, as seen at [6] (scroll down), you need much better than double precision. Adam P. Goucher wrote:
As a computational tour-de-force, I decided to draw a large image of the Mandelbrot set and save it as a macrocell file. The iteration limit was 1000 iterations per pixel, and the bounding box is 258687 by 221688. [...]
The biggest Mandelbrot images that have been *computed* (as far as I know) are 2097152 x 2097152 in size. They were done by Thorsten Förstemann on his dual Radeon HD 5970 system, as described at [1]. Each 5970 has two GPU chips, each with 1600 shader cores, for a total of 6400 cores (see [2]). It took him 3028136 seconds (about 35 days) to do the calculation 20 times using almost identical but slightly different grids. They were iterated to a maximum of 8589934592 (2^33) iterations. However, he did not store the results (the purpose was to measure the area of the Mandelbrot set, so only a count of pixels was needed.) The Radeon 5970 is pretty old now, see [3] to put its stats in perspective and [4] for a comparison to Nvidia. - Robert [1] http://www.foerstemann.name/dokuwiki/doku.php/area:start [2] http://www.foerstemann.name/dokuwiki/lib/exe/fetch.php/area:2012-02-22-sysin... [3] http://en.wikipedia.org/wiki/Comparison_of_AMD_graphics_processing_units [4] http://en.wikipedia.org/wiki/Comparison_of_Nvidia_graphics_processing_units [5] http://wmi.math.u-szeged.hu/xaos/doku.php [6] http://mrob.com/pub/muency/secondorderembeddedjuliase.html -- Robert Munafo -- mrob.com Follow me at: gplus.to/mrob - fb.com/mrob27 - twitter.com/mrob_27 - mrob27.wordpress.com - youtube.com/user/mrob143 - rilybot.blogspot.com
On Sat, 18 Aug 2012 13:30:22 -0700 Henry Baker <hbaker1@pipeline.com> wrote:
Can't modern GPU's (nVidia Kepler, etc.) compute Mandelbrot in "real time" -- i.e., the time it takes to display that portion of the screen ? If not, aren't modern GPU's getting pretty close to this capability ?
As far as I know there isn't a fixed-time algorithm to compute whether an arbitrary point belongs to the Mandelbrot set or not, so no GPU can guarantee "real time" rendering, at least not at arbitrary zoom levels (even if the display resolution is fixed). - Maks.
That's true, but the GPU Mandelbrot program can continue to refine the picture as it's being displayed. At 09:09 AM 8/19/2012, Maks Verver wrote:
On Sat, 18 Aug 2012 13:30:22 -0700 Henry Baker <hbaker1@pipeline.com> wrote:
Can't modern GPU's (nVidia Kepler, etc.) compute Mandelbrot in "real time" -- i.e., the time it takes to display that portion of the screen ? If not, aren't modern GPU's getting pretty close to this capability ?
As far as I know there isn't a fixed-time algorithm to compute whether an arbitrary point belongs to the Mandelbrot set or not, so no GPU can guarantee "real time" rendering, at least not at arbitrary zoom levels (even if the display resolution is fixed).
- Maks.
I downloaded this file (listed on the Google Docs page as the .gz file, no choice available) and what I find in my download folder (on my recent iMac) is a file with an .mc extension, which my computer claims not to know how to open. (Nor do I.) Any suggestions? Thanks, Dan On 2012-08-18, at 1:21 PM, Adam P. Goucher wrote:
As a computational tour-de-force, I decided to draw a large image of the Mandelbrot set and save it as a macrocell file. The iteration limit was 1000 iterations per pixel, and the bounding box is 258687 by 221688.
https://docs.google.com/open?id=0B7zc3Wqisi4jenRfQmlmQTJ4LXM
On 8/18/12, Dan Asimov <dasimov@earthlink.net> wrote:
I downloaded this file (listed on the Google Docs page as the .gz file, no choice available) and what I find in my download folder (on my recent iMac) is a file with an .mc extension, which my computer claims not to know how to open. (Nor do I.)
Any suggestions? Thanks,
It's a Golly pattern file in macrocell format. Get Golly here: http://sourceforge.net/projects/golly/files/golly/golly-2.4/ Unzip "mandelbrot3.gz" and call the result "mandelbrot3.mc". Drag this file onto Golly. It will take 10 to 20 seconds to open. It is a monochrome image of the Mandelbrot set, about 260,000 pixels wide and 220,000 pixels high. Click the mouse in the image to zoom in 2x. Shift-click to zoom out 2x. Use the "View > Fit Pattern" command (command-F or alt-F) if you get lost. If you're really patient, hit the spacebar (or tab or Return or command-R or...), and it will try to perform Conway's Game of Life on the pattern... all 10 billion cells. I think this is meant more as a proof of concept of the ability of macrocell compression, rather than a useful way to do the Mandelbrot set. I'm super-hyper-patient and have an 8-core workstation with 26 GB of memory. I am trying to switch the algorithm to HashLife... we'll see if that works.
On 2012-08-18, at 1:21 PM, Adam P. Goucher wrote:
As a computational tour-de-force, I decided to draw a large image of the Mandelbrot set and save it as a macrocell file. The iteration limit was 1000 iterations per pixel, and the bounding box is 258687 by 221688.
https://docs.google.com/open?id=0B7zc3Wqisi4jenRfQmlmQTJ4LXM
-- Robert Munafo -- mrob.com Follow me at: gplus.to/mrob - fb.com/mrob27 - twitter.com/mrob_27 - mrob27.wordpress.com - youtube.com/user/mrob143 - rilybot.blogspot.com
I downloaded this file (listed on the Google Docs page as the .gz file, no choice available) and what I find in my download folder (on my recent iMac) is a file with an .mc extension, which my computer claims not to know how to open. (Nor do I.)
Any suggestions? Thanks,
It's a Golly pattern file in macrocell format. Get Golly here:
http://sourceforge.net/projects/golly/files/golly/golly-2.4/
Unzip "mandelbrot3.gz" and call the result "mandelbrot3.mc". Drag this file onto Golly. It will take 10 to 20 seconds to open.
Golly can open compressed .mc.gz files directly.
It is a monochrome image of the Mandelbrot set, about 260,000 pixels wide and 220,000 pixels high.
Click the mouse in the image to zoom in 2x. Shift-click to zoom out 2x. Use the "View > Fit Pattern" command (command-F or alt-F) if you get lost.
If you're really patient, hit the spacebar (or tab or Return or command-R or...), and it will try to perform Conway's Game of Life on the pattern... all 10 billion cells.
I think this is meant more as a proof of concept of the ability of macrocell compression, rather than a useful way to do the Mandelbrot set.
Indeed. It demonstrates that macrocell compression applies even to very chaotic and irregular patterns.
I'm super-hyper-patient and have an 8-core workstation with 26 GB of memory. I am trying to switch the algorithm to HashLife... we'll see if that works.
The algorithm ('RuleTable') is already multi-state HashLife, so it can compute GoL on the initial pattern efficiently. It takes about a minute (at which point the Mandelbrot set becomes 'hollow'), after which we can switch to QuickLife and run it at about one generation per second. Sincerely, Adam P. Goucher
participants (6)
-
Adam P. Goucher -
Dan Asimov -
Fred lunnon -
Henry Baker -
Maks Verver -
Robert Munafo