Welcome to Fractal Forums

Fractal Software => Mandel Machine => Topic started by: Botond Kósa on February 11, 2014, 03:28:28 AM




Title: Mandel Machine
Post by: Botond Kósa on February 11, 2014, 03:28:28 AM
Mandel Machine is a highly efficient Mandelbrot set explorer application.
http://web.t-online.hu/kbotond/mandelmachine (http://web.t-online.hu/kbotond/mandelmachine)

(http://web.t-online.hu/kbotond/mandelmachine/mm_screenshot_large.png)

Main features:
  • Up to 536 MP (~23000x23000) image size
  • Up to 32x32 supersampling
  • Magnification up to 8000 zooms (image size ~4E-2408)
  • Max iterations up to 400 millions
  • Iteration counts histogram
  • Detailed statistics
  • Full history of changes
  • Save/load location and rendering attributes
  • Save images as PNG files
  • Copy image to clipboard

Intuitive mouse navigation:
  • Zoom in and out with the mouse wheel
  • Zoom in faster by double-clicking
  • Click-and-drag to select area to zoom into
  • Selection rectangle can be moved, resized and rotated
  • Right click and drag to pan (experimental)

Coloring options:
  • 3 palette presets
  • Palette can be extracted from any jpg/png/bmp image
  • 8 different iteration transfer functions
  • Color density & offset adjustable
  • Smooth/solid/inverted dwell bands

Optimizations to speed up calculations:
  • Extensive use of SIMD instruction sets (SSE2, SSE3, AVX) with single and double precision floating point data types
  • Inner loops implemented in assembly language
  • Arbitrary precision fixed point arithmetic using 64-bit integer data types, fully unrolled loops
  • Perturbation algorithm with series approximation, automatic correction of blobs
  • Tweaked Mariani/Silver algorithm to guess areas with monotonic iteration counts
  • Multi-core support (up to 32 threads)
  • Pixel grouping to fully saturate the execution units of modern CPUs (up to 16 pixels with SSE2, up to 32 with AVX-capable CPUs)

Upcoming features:
  • Calculate distance estimates
  • Palette editor
  • Movie maker
  • ...and more...

Special thanks to Michael Condron, Bruce Dawson, Kevin Martin and Karl Runmo for sharing their ideas.

Any comments are welcome.


Title: Re: Mandel Machine
Post by: lycium on February 11, 2014, 04:05:12 AM
Looks very impressive for a first release, nice work! Did you write the optimised iteration kernels yourself using intrinsics, or is this via some JIT compiler?


Title: Re: Mandel Machine
Post by: cKleinhuis on February 11, 2014, 08:20:22 AM
nice first shot, most interesting is that you feature the pertubation methods, will take a look later on!


Title: Re: Mandel Machine
Post by: panzerboy on February 11, 2014, 08:55:38 AM
Just started playing, LOVE  :joy: the load image to build a palette function.
You can use this to grab the colours from any JPG or PNG to build your palette.
I've used it below to grab a palette from a multi layered Kalles Fraktaler image (14 layers!)


Title: Re: Mandel Machine
Post by: Botond Kósa on February 11, 2014, 10:04:08 AM
Looks very impressive for a first release, nice work! Did you write the optimised iteration kernels yourself using intrinsics, or is this via some JIT compiler?

The iteration kernels were written in assembly language directly, and there is some code in C that prepares the data for the ASM procedures. All this is compiled with MSVC 2010 into a dll file. The application is Java-based, and the native routines are called via JNI.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 11, 2014, 10:12:42 AM
Just started playing, LOVE  :joy: the load image to build a palette function.
You can use this to grab the colours from any JPG or PNG to build your palette.
I've used it below to grab a palette from a multi layered Kalles Fraktaler image (14 layers!)

You can also open Kalles Fraktaler files (*.kfr) directly from the Load fractal definition dialog. The palette stored in KFR files is also loaded, albeit some manual adjustments on Color offset might be required (and also on Color density if Divide iteration in KFR was set larger than 1).


Title: Re: Mandel Machine
Post by: blob on February 11, 2014, 10:27:14 AM
Any chance for a 32bit version?


Title: Re: Mandel Machine
Post by: Botond Kósa on February 11, 2014, 10:43:06 AM
Any chance for a 32bit version?

I plan to release one. It would be about 2 times slower than the 64-bit version, but still significantly faster than any software without perturbation algorithm.


Title: Re: Mandel Machine
Post by: blob on February 11, 2014, 10:47:06 AM
Great! Looking forward to it.  :beer:


Title: Re: Mandel Machine
Post by: youhn on February 11, 2014, 02:39:49 PM
Just installed on Windows 7 64 bit. User interface feels nice.

Can I compile this on Linux ... ?


Title: Re: Mandel Machine
Post by: Botond Kósa on February 11, 2014, 03:51:19 PM
Can I compile this on Linux ... ?

Compilation would require rewriting some parts of the C and ASM code since they were written according to the needs of the MSVC compiler. Under Linux I had to use gcc or some other compiler with potentially different calling conventions.

I tried to run the installer using Wine but with no success so far. Maybe I should distribute the software as a standalone application with no installer. That could be run using Wine. I will give it a try.


Title: Re: Mandel Machine
Post by: ellarien on February 11, 2014, 04:44:49 PM
Very nice! But I have a comment and a question, as my former supervisor used to say.

The comment: the image often scrambles on panning (but a recompute fixes it.)

The question: Is there anything I can do to get the details filled in on deeper zooms? I've tried increasing the iterations and the precision and the scale, but beyond about magnification 100 the denser areas are often missing and previously filled-in areas will go flat on zooming in or out -- though zooming in further will sometimes fill them in. Do I just have to wait for the glitch-solving functionality?

I'm running Windows 8.1 on a Core i5 laptop with 8Gb of RAM, if it helps.


Title: Re: Mandel Machine
Post by: youhn on February 11, 2014, 05:06:52 PM
Care to share the exact location, no. of iterations, etc ... ? Then we can have a look at it.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 11, 2014, 05:31:40 PM
The comment: the image often scrambles on panning (but a recompute fixes it.)

That's why the panning function is marked as experimental, it still needs some corrections.

The question: Is there anything I can do to get the details filled in on deeper zooms? I've tried increasing the iterations and the precision and the scale, but beyond about magnification 100 the denser areas are often missing and previously filled-in areas will go flat on zooming in or out -- though zooming in further will sometimes fill them in. Do I just have to wait for the glitch-solving functionality?

This is caused by the lack of any type of glitch solving (manual or automatic). Until I add these functions try to zoom in on parts with high contrast. The reference point is found by a hillclimbing method looking for the highest iteration value, starting from the center of the image. High contrast parts usually contain a local maximum that is suitable for most parts of the image.


Title: Re: Mandel Machine
Post by: youhn on February 11, 2014, 06:33:59 PM
Turn off the pertubation theory to decrease these glitches (but increase duration of computation) ... ?


Title: Re: Mandel Machine
Post by: ellarien on February 11, 2014, 07:09:49 PM
Thanks! I thought it might be a case of waiting for the glitch fixes, so I'll try to be patient. I've attached the .mmf file (with a .txt extension added) for a location that's been giving me trouble. The minibrot a few zooms further down works fine. Turning off perturbation mode does seem to make it work, if slowly.



Title: Re: Mandel Machine
Post by: youhn on February 11, 2014, 08:34:41 PM
When I try your location, I see what you mean if pertubation theory is turned on. My understanding of this theory and the way it is coded is not very deep. But I understand it uses a single point to predicts the shapes around it ... or something like that. So it might be good to know which point is picked in what way. Probably something to do with the way you zoom and where you click. For example; when you click on a blue area to zoom in ... the next view could be totaly blue. Turn off pertubation for a deeper calculation, then turn it back off to navigate faster.

Another tip is to decrease the color density or pick log color method. Maybe just a personal preference, but it allows you to see the mandelbrot set border more clearly.


Title: Re: Mandel Machine
Post by: ellarien on February 11, 2014, 08:46:50 PM
Yes, it does seem to be very sensitive to the exact location -- and once the detail is lost it's hard to see where the pointer needs to be!  Thanks for drawing my attention to the different colouring modes -- I hadn't noticed that, and it does make it easier to see what's what.


Title: Re: Mandel Machine
Post by: Dinkydau on February 11, 2014, 10:45:16 PM
Very interesting program! I'm looking forward to the future versions. Is this a collaboration between Michael Condron, Bruce Dawson, Kevin Martin and Karl Runmo? The program feels to be based on ultra fractal, is that true?


Title: Re: Mandel Machine
Post by: ellarien on February 11, 2014, 11:19:16 PM
I've been playing a bit more and discovered that I like the histogram colouring mode ... and I think I may have found a bug. When in histogram mode, changing the interation limit causes the program to go into what looks suspiciously like an infinite loop, with the elapsed time increasing but nothing else happening, and I then have to kill the program. (At least it responds to the close-window button and isn't using a lot of resources while stuck.) If I switch to another mode, make the iteration change and switch back, all is fine.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 11, 2014, 11:27:17 PM
Is this a collaboration between Michael Condron, Bruce Dawson, Kevin Martin and Karl Runmo? The program feels to be based on ultra fractal, is that true?

That kind of collaboration would be very nice, but this is not the case. As I put together my own implementation I simply used the know-how they made publicly available on their web sites (Michael Condron's bignum article, Bruce Dawson's 64bit ASM implementation details, Kevin Martin's paper on Superfractalthing maths and Karl Runmo's posts about his findings related to perturbation & series approximation).

The Ultra Fractal-like appearance is intentional, but the two programs are completely unrelated. I found their GUI to be quite ergonomic, so I borrowed some ideas. Their default color palette is also very beautiful.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 12, 2014, 12:39:33 AM
Mandel Machine v1.0.1 is available (http://web.t-online.hu/kbotond/mandelmachine/ (http://web.t-online.hu/kbotond/mandelmachine/)). Changes:
  • FIXED: Application hangs when increasing iteration limit with histogram coloring
  • FIXED: Application hangs when using perturbation method after a benchmark run
  • IMPROVED: Reduced memory usage when using perturbation method and high iteration limit (millions)


Title: Re: Mandel Machine
Post by: Dinkydau on February 12, 2014, 02:01:03 AM
Recently I loaded the my location Tick Tock from Kalles' collection of locations on my computer with 32 cores. The result was the following:
Tick tock renders in 1,5 seconds.

I now made it a serious benchmark with nothing else running and I took the average of a few runs. This makes it 1,269 seconds.

Now, with mandel machine, using 8 threads: 0,226 seconds!!!

The intuitive interface makes it easy to do very large renders with the most amazing speed, and the gradient options look very promising.


Title: Re: Mandel Machine
Post by: panzerboy on February 12, 2014, 03:11:10 AM
Real nice being able to map and offset my Kalles Fraktaler Palettes.

(http://farm8.staticflickr.com/7453/12470052975_181e90337f_b.jpg)
http://www.flickr.com/photos/panzerboy/12470052975/ (http://www.flickr.com/photos/panzerboy/12470052975/)
Shame about the center lacking detail, I guess glitch correction will be forthcoming.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 12, 2014, 10:27:15 AM
:thumbsup1:
I doubt that it is only because of the use of assembler that made your Mandel Machine more than 6 times faster than mine Kalles Fraktaler.
Are you able to skip more pixels with Series Approximation? Or did you find other ways to optimize the render?

Yeah, glitch solving... I guess that's where I spent more than 90% of the time of my program.
Because even if you find the pixel with the highest iteration to use as reference, deeper locations cannot be rendered with one reference only...
I hope you can succeed with that too better than me :)


Title: Re: Mandel Machine
Post by: Chillheimer on February 12, 2014, 12:37:51 PM
Hello!

Very nice program!
I love the many options and the nice user interface.

Especially the colour-extraction from other images is incredibly useful!

Very good work!

Now I just have to wait for the movie maker :) Looking forward to that..


I have to mention that the program freezes quit a lot.
I'll try to find out if these freezes happen at specific actions and will post it here.


Title: Re: Mandel Machine
Post by: ellarien on February 12, 2014, 01:06:51 PM
Mandel Machine v1.0.1 is available (http://web.t-online.hu/kbotond/mandelmachine/ (http://web.t-online.hu/kbotond/mandelmachine/)). Changes:
  • FIXED: Application hangs when increasing iteration limit with histogram coloring

That was fast! Thanks.

Unfortunately, with the new version I'm getting  a different kind of hang quite frequently. Usually it happens when panning, but occasionally when zooming; the rendering freezes showing the status message "Initializing series approximation." In this condition it is still possible to save the definition file and carry on after restarting the program and loading the saved parameters.

I tried turning off series approximation, and then it hung with "Computing ..." and the progress bar about half an inch along. I haven't yet managed to trigger this with perturbation theory turned off.

(And just to prove that I'm enjoying the program as well as finding problems, here's a pretty picture: http://www.flickr.com/photos/ellarien/12477720693/)


Title: Re: Mandel Machine
Post by: Botond Kósa on February 12, 2014, 01:47:36 PM
Unfortunately, with the new version I'm getting  a different kind of hang quite frequently. Usually it happens when panning, but occasionally when zooming; the rendering freezes showing the status message "Initializing series approximation." In this condition it is still possible to save the definition file and carry on after restarting the program and loading the saved parameters.

Can you post the parameter file you saved after the program froze?


Title: Re: Mandel Machine
Post by: ellarien on February 12, 2014, 01:50:22 PM
Can you post the parameter file you saved after the program froze?

Sure.


Title: Re: Mandel Machine
Post by: Dinkydau on February 12, 2014, 05:23:05 PM
My computer rendered this at night with mandel machine. It's 9216×5760 with 2×2 anti-aliasing and it took 7 hours.

(http://th01.deviantart.net/fs70/PRE/f/2014/043/5/8/sssssurvival_of_the_fittest___evolution__3_by_dinkydauset-d76595j.png) (http://fav.me/d76595j)


Title: Re: Mandel Machine
Post by: Botond Kósa on February 12, 2014, 08:28:47 PM
I doubt that it is only because of the use of assembler that made your Mandel Machine more than 6 times faster than mine Kalles Fraktaler.
Are you able to skip more pixels with Series Approximation?

I see that Kalles Fraktaler skips 33097 iterations on Dinkydau's Tick-tock location, while Mandel Machine skips 38608. With an average iteration count of 43390 for the whole image, that means an average of 10293 computed iterations per pixel in KFR vs. 4782 in MM. This alone accounts for a twofold speed improvement.

Series approximation in MM is based on 5 coefficient series instead of 3 suggested by Kevin Martin's original article. The first 4 series are used to approximate the deltas, the fifth is for finding the maximum skippable iterations: when any of the first four terms in equation (2) becomes only one magnitude or less greater than the fifth term, we cannot skip more iterations. (There are some additional conditions to check, but this is the main principle.) I also experimented with 6 coefficient series, and it produced only insignificant gains, but made the initialization of series approximation more time consuming.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 12, 2014, 08:51:34 PM
Or did you find other ways to optimize the render?

One simple way to speed up the calculations is what I named "Ignore small addends" feature under the Heuristics options. Analysis of the dn series in perturbation method shows that the magnitude of dn grows more or less linearly from d0 to the bailout value. Since dn is represented in double precision, when dn is more than 1016 times larger than d0, d0 can be omitted from equation (1) without affecting the value of dn+1. This can be done almost always if series approx is used, except in the vicinity of minibrots.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 12, 2014, 09:05:27 PM
Recently I loaded the my location Tick Tock from Kalles' collection of locations on my computer with 32 cores.

Wow, your computer is quite a beast! I will have to alter Mandel Machine to fully utilize all the cores.
What kind CPUs do you exactly have?


Title: Re: Mandel Machine
Post by: Dinkydau on February 12, 2014, 09:23:18 PM
Yes, I bought this almost 2 years ago to render faster with fractal extreme. (Back then I actually paid €2200 for a 5,5-fold speed-up compared to my previous computer, and now there's a more than 100-fold speed-up for free.) It's two amd opteron 6272 CPUs.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 12, 2014, 09:37:45 PM
Thanks for your tips!
I just tried your program and it is impressive.
I guess you split up the image and do serial approximation on every parts to find more pixels to skip?

I don't think I could have contributed much on what you already achieved. But maybe I can contribute more on glitch-solving. I put a series of images in my thread, showing the behaviour of the smoothing coefficients, that I hope can be useful.
http://www.fractalforums.com/index.php?topic=16402.msg69818#msg69818


Title: Re: Mandel Machine
Post by: Botond Kósa on February 12, 2014, 10:07:36 PM
I guess you split up the image and do serial approximation on every parts to find more pixels to skip?

Do you mean skip pixels or skip iterations? Pixel skipping is done by "Pixel guessing", the result can be seen by clicking the "Hide guessed pixels" checkbox under Rendering. Pixel guessing also works when perturbation method is not used, and even on areas that are not flat but monotonic. This is made possible by the Mariani/Silver algorithm (see http://mrob.com/pub/muency/marianisilveralgorithm.html (http://mrob.com/pub/muency/marianisilveralgorithm.html)), a divide-and-conquer algorithm. Guessed pixels are filled with interpolated values.

Iteration skipping is done by series approximation. I use one skip value for the whole image, the value is displayed under Statistics -> Iterations/Pixel -> Skipped. Iteration skipping could be done locally for smaller parts of the image. I plan to investigate that in the future.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 12, 2014, 10:14:05 PM
Sure.

ellarien, I couldn't make the program hang at the location you sent. Could you reproduce it and describe the exact circumstances? A screen capture showing the Statistics and History panels would also help.


Title: Re: Mandel Machine
Post by: youhn on February 12, 2014, 10:28:41 PM
Last two evenings the program's first version crashed several times. Any debugging function we can turn on to assist in finding and killing them?

Latest version still to be tried here for a decent amount of time. Now back on Linux ... so not possible. I'm not a programmer, but maybe I can help in any other way to create a Linux version?


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 12, 2014, 11:17:28 PM
Series approximation in MM is based on 5 coefficient series instead of 3 suggested by Kevin Martin's original article. The first 4 series are used to approximate the deltas, the fifth is for finding the maximum skippable iterations: when any of the first four terms in equation (2) becomes only one magnitude or less greater than the fifth term, we cannot skip more iterations. (There are some additional conditions to check, but this is the main principle.) I also experimented with 6 coefficient series, and it produced only insignificant gains, but made the initialization of series approximation more time consuming.
So how does the formula for D[n+1] and E[n+1] look like?
I am sorry but I don't fully understand the theory behind this, so I am not able to find these...  :embarrass:


Title: Re: Mandel Machine
Post by: ellarien on February 12, 2014, 11:21:51 PM
ellarien, I couldn't make the program hang at the location you sent. Could you reproduce it and describe the exact circumstances? A screen capture showing the Statistics and History panels would also help.

I just loaded the location, zoomed out a few times, then panned twice (while the screen was exhibiting a large 'glitched' area of flat colour) and it froze on the second time. Screen-snips attached. (768-pixel high screen, so I had to do it in pieces.)


It happened just the same when I started clean and zoomed in until the perturbation theory started to fail, then tried to pan; after a bit of experimentation I think it only happens when panning after a glitch has appeared, and not always the first time -- sometimes it takes two or three tries. Interestingly, it seems to be only the computation that hangs -- everything else can be interacted with, including dragging the partial image around with a right-click and moving the scroll bars to look at the history and statistics.



Title: Re: Mandel Machine
Post by: Botond Kósa on February 12, 2014, 11:27:26 PM
So how does the formula for D[n+1] and E[n+1] look like?

Dn+1 = 2XnDn + 2AnCn + Bn2
En+1 = 2XnEn + 2AnDn + 2BnCn


Title: Re: Mandel Machine
Post by: Botond Kósa on February 12, 2014, 11:38:19 PM
I just loaded the location, zoomed out a few times, then panned twice (while the screen was exhibiting a large 'glitched' area of flat colour) and it froze on the second time. Screen-snips attached. (768-pixel high screen, so I had to do it in pieces.)

It happened just the same when I started clean and zoomed in until the perturbation theory started to fail, then tried to pan; after a bit of experimentation I think it only happens when panning after a glitch has appeared, and not always the first time -- sometimes it takes two or three tries.

Thanks, I am now able to reproduce the hang, I'm going to investigate it.

Interestingly, it seems to be only the computation that hangs -- everything else can be interacted with, including dragging the partial image around with a right-click and moving the scroll bars to look at the history and statistics.

That's because the GUI is handled in a separate thread, in order to be able to interact with it during a computation.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 13, 2014, 10:10:34 AM
Mandel Machine v1.0.2 is now available. Changes:
  • FIXED: Application hangs when using perturbation method with such a low iteration limit that the whole image becomes one-colored
  • FIXED: Computation cannot be aborted with ESC key during reference orbit calculation and series approx. initialization


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 13, 2014, 05:26:08 PM
Dn+1 = 2XnDn + 2AnCn + Bn2
En+1 = 2XnEn + 2AnDn + 2BnCn
Cool, thanks alot. I was told that more terms on (2) would not yield anything but obviously it does.


Title: Re: Mandel Machine
Post by: youhn on February 13, 2014, 10:57:30 PM
Finally rendered a somewhat bigger picture without crashes or freezes:

(http://i765.photobucket.com/albums/xx297/jeroenrijckaert/mandelmachine-0002_zps2da38786.png) (http://s765.photobucket.com/user/jeroenrijckaert/media/mandelmachine-0002_zps2da38786.png.html)


Title: Re: Mandel Machine
Post by: Botond Kósa on February 14, 2014, 12:00:45 AM
Finally rendered a somewhat bigger picture without crashes or freezes:

Nice image, but this was rendered without perturbation. When the precision (displayed under Statistics) is double or extended, that is below zoom level ~52, perturbation method is not used. If you set the precision on your location manually to bignum03, you can see how much faster the perturbation algorithm is. The center becomes flat though, this is a bug I am currently working on.

When automatic glitch correction is ready, I will turn on perturbation at all precision levels.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 15, 2014, 03:19:48 PM
Dn+1 = 2XnDn + 2AnCn + Bn2
En+1 = 2XnEn + 2AnDn + 2BnCn
I had some time to test this, and it works - beyond expectation! I am able to use all 5 terms and approximate even a few more iterations than you do. I need to use my 'floatexp' class that use a double as mantissa and the exponent as a separate integer, since the exponents exceeds far beyond e300 but still have impact.
Instead of comparing the term 5 with others, as you explained you do, I compare the result from approximation with the pertubation function for a couple of pixels, and if bailout is large I can allow up to 1% difference.
Next time I have time I will test even more terms... ;)


Title: Re: Mandel Machine
Post by: Botond Kósa on February 16, 2014, 01:09:24 AM
Mandel Machine v1.0.3 is now available, containing mainly bugfixes in the SSE codepaths. Users with no AVX-capable CPUs should see improved speed and fewer crashes.
  • FIXED: Small addends are never ignored when using perturbation method with scaled double and SSE2/SSE3 codepaths
  • FIXED: Application crashes when using perturbation method with scaled double, SSE2/SSE3 codepaths and pixel grouping of at least 6
  • IMPROVED: Detailed history labels when zooming in/out or panning

Glitch correction is in the works, stay tuned!  :dink:


Title: Re: Mandel Machine
Post by: Botond Kósa on February 17, 2014, 01:58:58 AM
Mandel Machine v1.0.4 is available, with an experimental manual blob correction function. KFR palettes and many-core systems are now better supported.
Full list of changes:
  • NEW: Correct blobs manually by right clicking inside the blob to add a new reference point (experimental)
  • CHANGED: Initial reference point is the center pixel; hillclimbing algorithm for finding a reference with highest iteration count is no longer used
  • FIXED: Image becomes distorted when approaching a minibrot using perturbation method with scaled double
  • IMPROVED: Maximum number of working threads increased from 8 to 32
  • IMPROVED: Palette size increased from 4K to 1M to support KFR files with a high number of key colors
  • IMPROVED: Minimum color density extended from -300 to -400 to support KFR files with high iteration division
  • IMPROVED: Fractal window can be iconified to eliminate repaint overhead when rendering with high supersampling


Title: Re: Mandel Machine
Post by: Dinkydau on February 17, 2014, 11:53:10 PM
On my laptop it crashes at startup but on my desktop it doesn't, apparently, so I'm gonna check it out right now.


Title: Re: Mandel Machine
Post by: youhn on February 19, 2014, 08:57:52 PM
The latest version 1.0.4 crashes more often than the previous version. But I have to say I use the palette extraction tool more often. Not sure if this is related with the crashes though.

Last crash was while I was dragging the color offset slider.

Next crash was while dragging the internal image window.

When the program has a good way to recover from crash, I don't mind the instability. Autosave param function easier than improved stability?


Title: Re: Mandel Machine
Post by: Dinkydau on February 19, 2014, 09:43:13 PM
The program is very sensitive to doing things while it is computing, such as changing the resolution. Sometimes it doesn't work, other times the program crashes.

The extra long gradients are awesome, I think that's just what is needed to make beautiful images. The image tool is very nice.

It would be nice to be able to zoom with the mousewheel when the render is not finished yet. Zooming with double-click or the frame already works all the time. The short zoom-animation between each performed zoom is very useful; it helps to keep track of where you are and where you're going.

When rendering large images the program almost doesn't respond. It responds normally again when the render is finished. Then it can even change the gradient offset and speed in realtime while dragging the sliders. That's very good. Fractal extreme experiences that as tough operations and lags a lot.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 21, 2014, 01:32:22 AM
Mandel Machine v1.0.5 is available (http://web.t-online.hu/kbotond/mandelmachine/ (http://web.t-online.hu/kbotond/mandelmachine/), refreshing the page might be required). It is now a standalone application, no install procedure required. (The old version can be uninstalled from Control Panel.) The JNI calling framework is completely revamped, the program should crash less frequently.

From now on I will provide two packages: a full package containing the whole application that can be extracted anywhere, and an upgrade package containing the changed files only. The upgrade package can be used to overwrite files previously extracted from the full package.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 21, 2014, 11:58:56 AM
When rendering large images the program almost doesn't respond. It responds normally again when the render is finished.

The image refresh interval is increased from 0.1 to 1 second when supersampling is turned on. The reason behind this is to reduce the repaint overhead during a computation. Currently the program downsamples the full supersampled image at every refresh, not just the parts that changed since the last refresh. This area still needs some improvement.

Maybe this is why you feel the program lagging when rendering large images. Or is the handling of mouse events lagging as well?


Title: Re: Mandel Machine
Post by: hapf on February 21, 2014, 03:01:16 PM
Hello Botond.
This looks like a real nice program.  :thanks1:
Blindingly fast.
Can you tell us how exactly you decide what reference(s) to use when perturbation
is active?
The center pixel it you said, right? What if it escapes before most of the rest of the image?
I have tested the program with one of my test regions and all I get is one big blob with perturbation.
No perturbation looks fine. It seems pixels are guessed but wrong. When I try to turn pixel guessing off the program locks up and no more rendering happens. Have to shoot it down.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 21, 2014, 05:25:30 PM
Currently the center pixel is the reference. All pixels that would escape later get the same iteration count as the center, so large blobs can appear if the image is not centered on a minibrot or Misiurewicz point. This won't be a problem as soon as automatic blob correction is ready. Until then you can manually enter a new reference by right-clicking inside a blob, preferably in its center.

Could you post the coordinates for your test location? Does the program lock up with both perturbation and pixel guessing off?


Title: Re: Mandel Machine
Post by: hapf on February 21, 2014, 07:35:07 PM
Currently the center pixel is the reference. All pixels that would escape later get the same iteration count as the center, so large blobs can appear if the image is not centered on a minibrot or Misiurewicz point. This won't be a problem as soon as automatic blob correction is ready. Until then you can manually enter a new reference by right-clicking inside a blob, preferably in its center.

Could you post the coordinates for your test location? Does the program lock up with both perturbation and pixel guessing off?
position.re=-0.742930911953482867009836919181955123556848082588456919
position.im=-0.290570984967522148371001605993216722722946314930253398
position.magnification=181

It locked when perturbation was on and guessing off.
New references with right clicking helps. How do you decide which pixels to update? All that got stuck when the previous reference escaped?


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 22, 2014, 01:32:17 PM
How do you decide which pixels to update?

All pixels that would escape later get the same iteration count as the center, so large blobs can appear...

As Botond Kósa write - all pixels in the blob get the same iteration count.
But - But!!!!!
This is only a special case, when only the main Mandelbrot have influence, i.e. no minibrot.
If your zoom path pass close to one (or several...) minibrot there are many variations:
* The blobs can contain a couple of iteration values, randomly spread through the blob
* The blobs can contain an iteration count value that is lower than other ares in the same view
* The blobs can have gradient content
* The blobs can have structured pattern
* etc etc etc

Botond Kósa I have a question for you - do you use only double datatype for calculating the pixels? It seems you use more precision than what is possible with the double datatype, since Mandel Machine get fewer glitches than Kalles Fraktaler when one reference only is used...


Title: Re: Mandel Machine
Post by: hapf on February 22, 2014, 02:48:03 PM
As Botond Kósa write - all pixels in the blob get the same iteration count.
Yes. Only updating these is an option. Use a second reference and update all these pixels with the same iteration count. Again
some will likely hit the ceiling if the reference is not in the set. If it is, none will unless they are in the set too (ignoring potential issues with insufficient iteration limit for the image). Repeat and rinse. Only:
- there is no guarantee whatsoever that the pixels not hitting the ceiling in any iteration of the procedure (reference in the set or not) are correct
- there is no guarantee whatsoever that pixels hitting the ceiling (reference in the set or not) do so correctly
If one considers not just updating the pixels that hit the ceiling but all others that reach (for example) a higher escape iteration value then again
- there is no guarantee that this higher value is (more) correct (than the value before).

Basically, blob detection and blob busting is a bitch, even when done manually with human intelligence orchestrating the efforts.
More so leaving it to machine intelligence. The deeper one zooms potentially the worse it gets with corruption stacked within corruption etc. I have not found so far a solid mathematical (or even only ad hoc practical) foundation for identifying ALL corrupted pixels with certainty (not some likelyhood). But I'm no mathematician. It may exist after all. Lacking one everything is on shaky grounds.


Title: Re: Mandel Machine
Post by: knighty on February 22, 2014, 05:15:09 PM
Looks good!
Any 32bit version? please.  :spgloomy:


Title: Re: Mandel Machine
Post by: Botond Kósa on February 22, 2014, 07:04:59 PM
A 32bit version is planned, but there are some features I am currently working on and have to be finished first (automatic blob correction being the most important one).


Title: Re: Mandel Machine
Post by: Botond Kósa on February 22, 2014, 07:47:21 PM
As Botond Kósa write - all pixels in the blob get the same iteration count.
But - But!!!!!
This is only a special case, when only the main Mandelbrot have influence, i.e. no minibrot.
If your zoom path pass close to one (or several...) minibrot there are many variations:
* The blobs can contain a couple of iteration values, randomly spread through the blob
* The blobs can contain an iteration count value that is lower than other ares in the same view
* The blobs can have gradient content
* The blobs can have structured pattern
* etc etc etc

I have also experienced all these types of blobs, but I think the 3rd type with a gradient content is actually the same as the 4th, and the gradient is just part of a structured pattern.

Botond Kósa I have a question for you - do you use only double datatype for calculating the pixels? It seems you use more precision than what is possible with the double datatype, since Mandel Machine get fewer glitches than Kalles Fraktaler when one reference only is used...

I use the regular double datatype, so this can't be an explanation for the fewer glitches is Mandel Machine. But I did a little investigation regarding the 3rd type blobs (the ones with structured pattern) and came up with some interesting conclusion. The following images are part of Dinkydau's "Flake" location, rendered with Kalles Fraktaler and Mandel Machine in different modes. (The reference is in the minibrot in the lower right quarter, which was the center of the image, but I cropped the images to highlight the differences between them.)

Kalles Fraktaler with double data type. The large light green areas look like ordinary structures but are actually blobs.
(http://web.t-online.hu/kbotond/mandelmachine/img/flake_test_kfr_double.jpg)

Kalles Fraktaler with long double data type. The blobs' color is different (the iteration values inside them are a little higher), the structure inside looks the same, but a strange abrupt shift appears in the gradient.
(http://web.t-online.hu/kbotond/mandelmachine/img/flake_test_kfr_long_double.jpg)

Mandel Machine with perturbation. Very similar to KFR with long double (not counting the slight palette offset), the abrupt shift is also present, but in a different location.
(http://web.t-online.hu/kbotond/mandelmachine/img/flake_test_mm.jpg)

Mandel Machine without perturbation. No blobs, this is how the image should look. (Rendering took 23 minutes 44 seconds compared to 1.5 seconds with perturbation).
(http://web.t-online.hu/kbotond/mandelmachine/img/flake_test_mm_noPT.jpg)


Kalle, when "Use long double always" is turned on in KFR, do you also store the reference orbit in long double precision, or do you use it for the calculations only?


Title: Re: Mandel Machine
Post by: Botond Kósa on February 22, 2014, 09:43:49 PM
Kalle & hapf, could you post some locations where you found blobs that cannot be corrected by using additional references? It would be extremely helpful.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 22, 2014, 11:01:42 PM
Kalle, when "Use long double always" is turned on in KFR, do you also store the reference orbit in long double precision, or do you use it for the calculations only?
Yes, I store the reference as long double values when long double is used (but the main reason for that was that otherwise the large exponents would get lost).
And when I have compared, MM get as few glitches as KF with long double, with one reference.
Kalle & hapf, could you post some locations where you found blobs that cannot be corrected by using additional references? It would be extremely helpful.
So far it is only the nasty flake location that I couldn't solve at all, at least not when using long double.

One more glitch to add to the list - the view that has the exact same iteration count value on areas that are already correctly rendered, and that will be incorrect if the new reference is simply applied on all pixels with the same value. That is when I had to add the "Solve glitch with near pixel method" , which is just a simple flood fill.


Title: Re: Mandel Machine
Post by: hapf on February 23, 2014, 12:41:22 AM
Kalle & hapf, could you post some locations where you found blobs that cannot be corrected by using additional references? It would be extremely helpful.
I don't think there are locations that can not be rendered correctly with additional reference points, in theory. There are certainly locations that would require a new reference point for every pixel, at which point the perturbation method degrades to a computation with full precision and becomes slower than that one. This would only be the case for locations that are so deep that it won't be practical to even try to go there for the time being, I guess. For locations that are routinely done these days a couple of reference points should suffice, if necessary some dozens, even hundreds. It depends on the resolution of the image too. The more pixels the more reference points are needed as a general rule. It all depends a lot on the exact region, of course.
With regions that have a minibrot in the center the structures where blobs usually show up are in circles around the center minibrot. The blobs ares in these circles. Different circles need different reference points. References in inner circles render more correctly pixels in outer circles than references in outer circles those in in inner circles. They often corrupt a whole disk around the center and parts of the circles closer to the center. Depends on location. A reference in a circle may render the whole circle correctly or just part of it. Again the more pixels the more likely parts of the circle will show blobs within blobs (e.g. fix the main blob and it splits in a fixed part and one or several still blobby parts). Without a reliable test if a pixel is corrupted or not the deblobbing is more an art form than anything else.
The flaky location from above is a nasty one since the corruption enters the picture on toes and presents itself as if it were genuine structure. The real structure gently dissolves into something else.
The location can be rendered pretty nicely with one reference point, but lots of small spirals further away from the center will still dissolve prematurely. They need additional references. I suspect one or 2 might do the trick. The problem is to decide which pixels these additional references should process. They will ruin the center part of the image again when they are applied there.
And vice versa.
Update: A clean version of this region. 3 references used.
(http://imageshack.com/a/img841/3747/yyen.jpg)


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 23, 2014, 07:51:27 PM
Update: A clean version of this region. 3 references used.
Nice, and I know how you did it ;) (because I done it too here http://www.fractalforums.com/movies-showcase-(rate-my-movie)/flake-second-attempt/ (http://www.fractalforums.com/movies-showcase-(rate-my-movie)/flake-second-attempt/))
If you begin with a point not in the center of this view - then the glitches wont contain the structure and can easier solved with just a few extra references :)
But to automatically decide in a program is impossible I think, unless someone find a mathematically way to certainly identify glitches.

KF latest version is able to skip 23653 iterations in this view (min 29674), how many can you skip :)


Title: Re: Mandel Machine
Post by: hapf on February 24, 2014, 12:44:16 AM
Nice, and I know how you did it ;) (because I done it too here http://www.fractalforums.com/movies-showcase-(rate-my-movie)/flake-second-attempt/ (http://www.fractalforums.com/movies-showcase-(rate-my-movie)/flake-second-attempt/))
If you begin with a point not in the center of this view - then the glitches wont contain the structure and can easier solved with just a few extra references :)
But to automatically decide in a program is impossible I think, unless someone find a mathematically way to certainly identify glitches.
The first reference used does indeed decide what corruption you get. None or easier to detect or harder/impossible (?) to detect.
Quote
KF latest version is able to skip 23653 iterations in this view (min 29674), how many can you skip :)
I checked for a test image and average iterations were ~30500. Skipped 8358. It depends how much error you allow.
23653 looks impossible for 3 terms. What's your max error and average error here? Do you use 5 terms instead of 3?
I looked into more than 3 terms but found it not helpful. Maybe I overlooked something and should retest it.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 24, 2014, 04:00:43 PM
I checked for a test image and average iterations were ~30500. Skipped 8358. It depends how much error you allow.
23653 looks impossible for 3 terms. What's your max error and average error here? Do you use 5 terms instead of 3?
I looked into more than 3 terms but found it not helpful. Maybe I overlooked something and should retest it.

Yes, it is using 5 terms and allowing 0.1% error.
The 4th and 5th terms of Series Approximation get intermediates with extreme exponents, perhaps not even possible to express in long double. I need to use my floatexp class that takes an integer as exponent and double as mantissa to calculate this.
But with the previous version, using 3 terms and only allowing 0.0001% error, and using double datatype only, I could still skip 15769 iterations, so 8358 sounds very low.

I've also tried 6 and 7 terms but it did not yield anything, at least not for the tick-tock location, not even though I used long double as mantissa.
On locations with millions of iterations I could see a small gain, but I thought it was not worth it.
If the view is divided in sections it may be possible to be able to skip more pixels in centered sections, but I doubt it is worth the effort since from what I have seen so far it is tens out of tens of thousands


Title: Re: Mandel Machine
Post by: hapf on February 24, 2014, 05:53:03 PM
Yes, it is using 5 terms and allowing 0.1% error.
The 4th and 5th terms of Series Approximation get intermediates with extreme exponents, perhaps not even possible to express in long double. I need to use my floatexp class that takes an integer as exponent and double as mantissa to calculate this.
I compute the skip start value with arbitrary precision so this would not stop me.
Quote
But with the previous version, using 3 terms and only allowing 0.0001% error, and using double datatype only, I could still skip 15769 iterations, so 8358 sounds very low.
Are you testing the whole picture?


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 24, 2014, 08:05:18 PM
Are you testing the whole picture?
No, only the 4 pixels in the corners.
I thought they would give the most errors since they are farthest away from the reference.


Title: Re: Mandel Machine
Post by: hapf on February 25, 2014, 09:00:08 AM
No, only the 4 pixels in the corners.
I thought they would give the most errors since they are farthest away from the reference.
Could you test the whole picture for comparison? Like 0.1 % of all pixels, regularly sampled?


Title: Re: Mandel Machine
Post by: Botond Kósa on February 25, 2014, 11:13:37 AM
No, only the 4 pixels in the corners.
I thought they would give the most errors since they are farthest away from the reference.

The error does not primarily depend on the pixel's distance from the reference. It depends on the pixel's orbit's distance from the reference orbit. If a pixel is in a dense region, the likelihood of an error is higher than for a pixel that is inside a slowly changing gradient. I found that testing the 4 corners is not always enough. If the corners are in sparse regions you could get visible error in the dense parts of the image. The more pixels are tested, the less is the chance of having all of them in sparse regions.

Mandel Machine tests for the 4 corners and the 4 edge midpoints, for performance reasons. Ideally all edge pixels should be tested.


Title: Re: Mandel Machine
Post by: lycium on February 25, 2014, 11:53:59 AM
I kind of expected this situation when the perturbation method was first described: you have a new chaotic system approximating another chaotic system, and until there's a lot of mathematical analysis and heuristic half-fixes etc, there will be random spurious problems.

I've resisted asking until now: is this really worth the headache and uncertainty? What exactly is wrong with the existing (trustworthy!) methods, that do not require any kind of checking to make sure the result is correct? If it's purely a matter of computation, then surely GPUs are up to the task...


Title: Re: Mandel Machine
Post by: hapf on February 25, 2014, 12:07:48 PM
I kind of expected this situation when the perturbation method was first described: you have a new chaotic system approximating another chaotic system, and until there's a lot of mathematical analysis and heuristic half-fixes etc, there will be random spurious problems.
I've resisted asking until now: is this really worth the headache and uncertainty? What exactly is wrong with the existing (trustworthy!) methods, that do not require any kind of checking to make sure the result is correct? If it's purely a matter of computation, then surely GPUs are up to the task...
GPUs are limited to double precision. Rather restrictive for zoom depths. There is nothing wrong with older methods if you want to go deep and don't mind waiting a couple of hunded times or more longer.  ;D


Title: Re: Mandel Machine
Post by: hapf on February 25, 2014, 12:15:27 PM
The error does not primarily depend on the pixel's distance from the reference. It depends on the pixel's orbit's distance from the reference orbit. If a pixel is in a dense region, the likelihood of an error is higher than for a pixel that is inside a slowly changing gradient. I found that testing the 4 corners is not always enough. If the corners are in sparse regions you could get visible error in the dense parts of the image. The more pixels are tested, the less is the chance of having all of them in sparse regions.
Mandel Machine tests for the 4 corners and the 4 edge midpoints, for performance reasons. Ideally all edge pixels should be tested.
All edge makes sure you hit close to the set since the set is connected (unless it's an uproblematic featureless region). But how can you be sure there is nothing inside the image that requires additional reduction of skipping? Of course a few pixels way off can be ignored if the rest stays well behaved.


Title: Re: Mandel Machine
Post by: lycium on February 25, 2014, 12:19:06 PM
Yes, I understand of course that GPUs don't do higher than FP64 internally (and that at greatly reduced speed compared to FP32), but as with CPUs a GPU is Turing complete and can surely do any higher precision computation the CPU can do.

That to me seems like a far better investment of time and energy (known outcome!) than heuristic and approximating methods. As computers get faster and faster, human time becomes more valuable relative to computation time - having to fret over whether you got all the on/off switches and tuning numbers right after every render, versus simply letting it render a bit longer, doesn't seem like a winning long-term strategy.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 25, 2014, 01:37:01 PM
GPUs are limited to double precision. Rather restrictive for zoom depths. There is nothing wrong with older methods if you want to go deep and don't mind waiting a couple of hunded times or more longer.  ;D
I do mind waiting. Tick-tock would take 10 minutes to render in 640x360 with fractal extreme on my machine. Kalles fraktaler 2.2.* took 8,5 seconds. That is 70 times faster! With version 2.3.1 it is now rendered in 2 seconds! That is almost 300 times faster! And mandel machine renders this in just less than 1 second, that is 600 times faster. Can you ever do that with GPU? And if you could, how fast could you do it with perturbation on GPU?
So I think it is definitely worth the efforts!


Title: Re: Mandel Machine
Post by: lycium on February 25, 2014, 01:54:48 PM
I can't understand why you focus on the 8.5 seconds or 2 seconds and totally refuse to account for the tons of human inspection time (likely on the order of minutes) that something didn't go wrong. And what if you miss a bit that looks a little different? Don't even get me started with apples-to-oranges (completely different programs) comparisons...

Hey man, have your fun of course, I just don't see this as being terribly practical if you can't have faith in the output, no matter how few nanoseconds or whatever the render took...

"A million miles an hour in the wrong direction helps nobody" - American saying?


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 25, 2014, 02:08:58 PM
I can't understand why you focus on the 8.5 seconds or 2 seconds and totally refuse to account for the tons of human inspection time (likely on the order of minutes) that something didn't go wrong. And what if you miss a bit that looks a little different? Don't even get me started with apples-to-oranges (completely different programs) comparisons...

Hey man, have your fun of course, I just don't see this as being terribly practical if you can't have faith in the output, no matter how few nanoseconds or whatever the render took...

"A million miles an hour in the wrong direction helps nobody" - American saying?
In practice the differencies are almost always none or not visible.
And I would not be impressed anymore of a e228 animation rendered in 6 months on 12 cores, I would just think it would be a waste of time.
But of course anyone can do whatever they want, I only speak for myself.
Tick-tock is just an example and a simple such, other locations takes hours or minutes, or 30 days or 7 hours.
I would never pay for FX or UF and wait for hours/days instead of wait for a minute and do a manual correction in another minute... ;-)


Title: Re: Mandel Machine
Post by: lycium on February 25, 2014, 02:12:33 PM
almost always

I guess you're still missing my point about how "almost" is actually really a problem. "It's a million trillion times faster! Except when you notice something is wrong and have to fiddle and make re-renders, so just check every frame of your animation by hand!" Seriously... if that's acceptable to you then fine, but I am just constantly surprised at how that is regarded as a step forward...

Anyway sorry for the skepticism here, but as as a developer of commercial software, I can't imagine myself ever saying to users "yeahhhh well sometimes the output can be bogus in subtle ways, just always check everything with a bunch of test renders and if it's wrong here's a bunch of parameters to fiddle with..."

What is at least completely objective is saying, that you shouldn't compare apples and oranges, i.e. different programs (which can be highly optimised or not) and one which consistently produces the right output, the other which maybe-sometimes-usually-doesn't-need-too-much-checking-to-see-if-it-was-right, etc...


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 25, 2014, 02:25:15 PM
I guess you're still missing my point about how "almost" is actually really a problem. "It's a million trillion times faster! Except when you notice something is wrong and have to fiddle and make re-renders, so just check every frame of your animation by hand!" Seriously... if that's acceptable to you then fine, but I am just constantly surprised at how that is regarded as a step forward...

Anyway sorry for the skepticism here, but as as a developer of commercial software, I can't imagine myself ever saying to users "yeahhhh well sometimes the output can be bogus in subtle ways, just always check everything with a bunch of test renders and if it's wrong here's a bunch of parameters to fiddle with..."

What is at least completely objective is saying, that you shouldn't compare apples and oranges, i.e. different programs (which can be highly optimised or not) and one which consistently produces the right output, the other which maybe-sometimes-usually-doesn't-need-too-much-checking-to-see-if-it-was-right, etc...
Ok I see your point. Perturbation should never be commersial. And you have to enjoy glitch correcting if you ever want to do animations. But if you do, you will be able to do animations that would have taken years on super hardware within weeks on an ordinary laptop. It's your choice. :)


Title: Re: Mandel Machine
Post by: lycium on February 25, 2014, 02:31:09 PM
My two basic logical objections are:

1. It is disingenuous to talk about 2 seconds render if you always (unless you're into blind faith) have to do a normal-speed test render to make sure the 2 second one didn't go wrong (and even then you might just not have looked long enough and miss it, ending up with a bogus render).

2. Throwing out hard numbers like "weeks" without specifying what program (yes yes, UltraFractal is terribly slow, hooray you successfully compared against an ancient program which at least always gives the right result), and assuming that no better can be done without resorting to brutal approximations that only work some of the time. It's just a completely different thing, sort of like trying to compare an exact solution to the travelling salesman problem running on a 386, to some low accuracy statistical approximation on the GPU that you can't really have any faith in at the end.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on February 25, 2014, 02:40:35 PM
My two basic logical objections are:

1. It is disingenuous to talk about 2 seconds render if you always (unless you're into blind faith) have to do a normal-speed test render to make sure the 2 second one didn't go wrong (and even then you might just not have looked long enough and miss it, ending up with a bogus render).

2. Throwing out hard numbers like "weeks" without specifying what program (yes yes, UltraFractal is terribly slow, hooray you successfully compared against an ancient program which at least always gives the right result), and assuming that no better can be done without resorting to brutal approximations that only work some of the time. It's just a completely different thing, sort of like trying to compare an exact solution to the travelling salesman problem running on a 386, to some low accuracy statistical approximation on the GPU that you can't really have any faith in at the end.
1. You see the glitches easily, no need to do a normal render for comparison.
2. I am comparing with fractal extreme of course, the fastest 'normal' program there is :)


Title: Re: Mandel Machine
Post by: Botond Kósa on February 25, 2014, 02:56:02 PM
I am comparing with fractal extreme of course, the fastest 'normal' program there is :)

Try Mandel Machine without perturbation, it is up to 2x faster than Fractal Extreme at high zoom levels :dink:

Anyway, the consumers of the output of these fractal software will be humans. No need to produce mathematically exact results, just results that are good enough to be indistinguishable from the exact ones. No one even said that perturbation renderers are currently capable of producing these good enough results. We're still working on it, and there is still a lot to do.


Title: Re: Mandel Machine
Post by: hobold on February 25, 2014, 06:09:28 PM
I am just constantly surprised at how that is regarded as a step forward...
Progress is always a matter of judgement. It seems you are coming from a strict automation/production point of view. To you, any trade-off that involves an increased amount of human interaction is unacceptable, right?

The people who are currently working to refine the numerics of the perturbation method necessarily see things very differently: they approach it as a research project. The potential of gaining two or more orders of magnitude higher speed is exciting, even if the method is still immature and unreliable today.

One of the awesome qualities of a research project, IMHO, is that no one really knows what the result will ultimately be. That sucks when you have to meet deadlines and specifications - but when you are free to fail or to exceed expectations, then you have a chance to make progress in a giant leap, not just the usual series of many small steps.


That's why successful researchers tend to be enthusiastic optimists: they need that kind of personality to carry them through the frustration of many failed experiments, until finally they succeed with something unexpected and new.


I don't know the future, so I cannot say if there will ever be fully automatic detection (and consequently automatic correction) of mis-rendered images. What makes me follow this development is the potential that the failure modes of the perturbation method, when finally analyzed and understood, could lead to a better understanding of the dynamics of the Mandelbrot set itself.

I could imagine that the perturbation method fails not because of reasons inherent in perturbation theory, but because a class of points in or near the Mandelbrot set exhibits special behaviour. Maybe if we can identify these points - solely for the reason of rendering nicer pictures - we end up understanding better what is going on.


But even though I don't know the future, I do know that if the researchers here were to succeed, all of the more pragmatic people would abandon the old algorithm in a heartbeat. The users would gladly accept orders of magnitude of speedup, and never care that the new algorithm did not spring into existence as a fully formed, perfect piece of art, right?


Title: Re: Mandel Machine
Post by: youhn on February 25, 2014, 08:03:04 PM
What hobold said! :ok:



Found something strange in Mandel Machine which I did not see before. Perhaps a bug?

(http://i.imgur.com/A0Suh8j.png)

The blue rectangles don't seem to fit the picture. Seen similar (smaller) things a few zoomlevels back. Param file attached. Rerendering from this file reproduces the error (did not do a restart of the program).

<EDIT>
Notice the lowest big black circle. Between the big black circle and the smaller one, there is a stripe of what looks like the same blue color. Also seen on deeper zoomlevels.
</EDIT>


Title: Re: Mandel Machine
Post by: hapf on February 25, 2014, 08:20:47 PM
Yes, I understand of course that GPUs don't do higher than FP64 internally (and that at greatly reduced speed compared to FP32), but as with CPUs a GPU is Turing complete and can surely do any higher precision computation the CPU can do.
I don't think there are GPU solutions for arbitrary precision with lots of bits that outperform a multi core CPU, but I'm happy to hear of the contrary if anyone can provide details.


Title: Re: Mandel Machine
Post by: 3dickulus on February 25, 2014, 08:31:21 PM
CUDA Device count = 1

Some properties of CUDA device 0:
=================================
Name: GeForce GTX 760
Compute capability: 3.0
Number of multiprocessors: 6
Total global memory: 2147155968 bytes
Shared Mem/Block: 49152 bytes
Shared Mem Access: 8 bytes
=================================

*********************
n_digits = 156
prec_words = 12, 12
MAX_PREC_WORDS = 145
n_words = 17
numElement = 307200
*********************
Prepare data.................................
        done.
test_add ........................................
numElement = 307200, interval = 307200
numBlock = 2400, numThread = 128
interval memory layout...
*** GPU add: 0.003 sec ***
*** CPU add: 0.164 sec ***
*** The abs. of max. rel. error = 10 ^ 0 x 0 ***
*** The abs. of avg. rel. error = 10 ^ 0 x 0 ***
A sample when i = 164661
GOLD = 10 ^ 0 x 1.146514967712305809649915716387329890097697486394245497434308221497424464834325631
79364833248365700345339165485223330578732787146025929987360878945595128796
REF  = 10 ^ 0 x 1.146514967712305809649915716387329890097697486394245497434308221497424464834325631
79364833248365700345339165485223330578732787146025929987360878945595128796

test_sub ........................................
numElement = 307200, interval = 307200
numBlock = 2400, numThread = 128
interval memory layout...
*** GPU sub: 0.003 sec ***
*** CPU sub: 0.185 sec ***
*** The abs. of max. rel. error = 10 ^ 0 x 0 ***
*** The abs. of avg. rel. error = 10 ^ 0 x 0 ***
A sample when i = 90752
GOLD = 10 ^ -1 x 2.24032445053941494471490869245516024230081070034160848188327014170345318734560570
536693998741659321929492623237323066365706675874447724150862042972514377446
REF  = 10 ^ -1 x 2.24032445053941494471490869245516024230081070034160848188327014170345318734560570
536693998741659321929492623237323066365706675874447724150862042972514377446

test_mul ........................................
numElement = 307200, interval = 307200
numBlock = 2400, numThread = 128
interval memory layout...
*** GPU mul: 0.013 sec ***
*** CPU mul: 0.459 sec ***
*** The abs. of max. rel. error = 10 ^ 0 x 0 ***
*** The abs. of avg. rel. error = 10 ^ 0 x 0 ***
A sample when i = 123003
GOLD = 10 ^ -1 x 5.30056800732076570691327903160327288932904861807881356311266826572994142947323528
41976425418735331748966283710939580686946026614702874865642273292239809154
REF  = 10 ^ -1 x 5.30056800732076570691327903160327288932904861807881356311266826572994142947323528
41976425418735331748966283710939580686946026614702874865642273292239809154

test_div ........................................
numElement = 307200, interval = 307200
numBlock = 2400, numThread = 128
interval memory layout...
*** GPU div: 0.018 sec ***
*** CPU div: 0.604 sec ***
*** The abs. of max. rel. error = 10 ^ 0 x 0 ***
*** The abs. of avg. rel. error = 10 ^ 0 x 0 ***
A sample when i = 194256
GOLD = 10 ^ 0 x 1.334185451621135878465590322550729345967927280447987755070190881191672203052509390
03208758406331862064461105327812246702639904274084665067687023580592219925
REF  = 10 ^ 0 x 1.334185451621135878465590322550729345967927280447987755070190881191672203052509390
03208758406331862064461105327812246702639904274084665067687023580592219925

I've pushed garprec to 10000 digits (680 prec words) but it starts getting sketchy at those levels on my system  :)


Title: Re: Mandel Machine
Post by: Dinkydau on February 25, 2014, 08:56:45 PM
I don't think there are GPU solutions for arbitrary precision with lots of bits that outperform a multi core CPU, but I'm happy to hear of the contrary if anyone can provide details.
Bruce Dawson from fractal extreme investigated the use of GPGPU for deep zooming. The conclusion was that GPUs could be used and they would be good for low depths, but they are less efficient exactly where they are needed most: at the deeper zoom levels. Mandelbrot rendering up to the max depth for floating point precision is already so fast that it doesn't really need to be optimized more. The human efforts would be too big for almost unnoticeable extra performance. However, perturbation requires only few high-precision calculations even at high zoom levels, so maybe those GPUs aren't that bad of an idea after all!

I like the development of software that uses perturbation. For Lycium I would like to link again to the following image I rendered in 7 hours with only 8 out of 32 cores being used.
http://dinkydauset.deviantart.com/art/SSSSSurvival-of-the-fittest-Evolution-3-433586071

I think this would have taken at least 6 months to render with fractal extreme, using 32 cores. The glitches you can still spot are now 100% fixable with the latest version of mandel machine. Isn't that a step forward? I would not wait 6 months for this, so if it wasn't for perturbation, this render would not have been possible for years.

I'm also currently rendering a zoom with kalles fraktaler to such a dense and deep location that the render time is so long, this new algorithm is now literally saving me hundreds of euros in electricity. Even if it takes me a day of work to correct the glitches it's worth doing. I don't get paid hundreds of euros for a day of work normally.


Title: Re: Mandel Machine
Post by: cKleinhuis on February 25, 2014, 09:18:15 PM
this is going into a philosophical thread ;)
i am so happi to release my mandelbrot tutorial, hopefully this weekend, because through the visualisations some stuff might come into the minds of the viewers, and how pertubation theory is actually working, but enough spoilering ;)

when i talked to a physicist he was astounded that we actually did not use the pertubation theory earlier, because in physics this method is used all day long, its so to say standard procedure, because with that theory very good approximations are possible, the mandelbrot set is always a playing ground, where such theories can be examined in a deep theoretical manner, as we see we have the glitches, perhaps through some nifty tricks those gains in orders of magnitude lead to completely different applications, a very interesting field that has been opened up over a year ago ;)

i just wonder how the method can be generalized, as far as i know it is the application of pertubation theory to a single formula ( z^2+c) but right now various other fractals beg for speed optimizations ;) surely the mandelbrot is the mother of all, but how about e.g. hybrid forms ? how about application to the mandelbox ? (<- the mandelbox is still my favorite and in my eyes a good candidate for the holy grail ;) and zooming deep into that mandelbox will find extraordinary results ... for sure :D)

keep on talkin


Title: Re: Mandel Machine
Post by: Botond Kósa on February 26, 2014, 12:52:15 AM
Mandel Machine v1.0.6 is now available with the following bugfixes:
  • FIXED: Application sometimes hangs when using perturbation method with pixel guessing off
  • FIXED: Bogus pixels with infinite or NaN iteration count appear in super dense areas


Title: Re: Mandel Machine
Post by: Botond Kósa on February 26, 2014, 01:02:37 AM
Found something strange in Mandel Machine which I did not see before. Perhaps a bug?

(http://i.imgur.com/A0Suh8j.png)

The blue rectangles don't seem to fit the picture. Seen similar (smaller) things a few zoomlevels back. Param file attached. Rerendering from this file reproduces the error (did not do a restart of the program).

<EDIT>
Notice the lowest big black circle. Between the big black circle and the smaller one, there is a stripe of what looks like the same blue color. Also seen on deeper zoomlevels.
</EDIT>

Thanks youhn for the location. This bug has been haunting me for years, but only in a few pixels per image, so I didn't bother fixing it. It is caused by the adjacency optimization in super dense areas with iteration values spanning several magnitudes. It is now fixed in the newest version.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 26, 2014, 11:28:37 AM
Bruce Dawson from fractal extreme investigated the use of GPGPU for deep zooming. The conclusion was that GPUs could be used and they would be good for low depths, but they are less efficient exactly where they are needed most: at the deeper zoom levels. Mandelbrot rendering up to the max depth for floating point precision is already so fast that it doesn't really need to be optimized more. The human efforts would be too big for almost unnoticeable extra performance. However, perturbation requires only few high-precision calculations even at high zoom levels, so maybe those GPUs aren't that bad of an idea after all!

Our experiences show that double precision (fp64) is needed to correctly render images with perturbation. The fp64 performance of consumer GPUs and APUs are deliberately kept low in order to drive professional customers towards pro cards like nVidia Tesla and AMD FirePro that cost several times more than consumer cards with the same GPUs. (Consumer cards' fp64 performance is 1/8 - 1/16 of their fp32 performance, compared to 1/2 - 1/4 at pro cards.)

There is a great article at AnandTech comparing floating point performance of recent AMD and Intel CPUs (http://anandtech.com/show/7711/floating-point-peak-performance-of-kaveri-and-other-recent-amd-and-intel-chips (http://anandtech.com/show/7711/floating-point-peak-performance-of-kaveri-and-other-recent-amd-and-intel-chips)). The conclusion is that even the fastest AMD APU is no match for a Core i7 in fp64 performance. Discrete GPUs on high-end consumer cards may have comparable fp64 performance to an Intel quad-core CPU.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 26, 2014, 11:34:35 AM
CUDA Device count = 1

Some properties of CUDA device 0:
=================================
Name: GeForce GTX 760
Compute capability: 3.0
Number of multiprocessors: 6
Total global memory: 2147155968 bytes
Shared Mem/Block: 49152 bytes
Shared Mem Access: 8 bytes
=================================

*********************
n_digits = 156
prec_words = 12, 12
MAX_PREC_WORDS = 145
n_words = 17
numElement = 307200
*********************
Prepare data.................................
        done.
test_add ........................................
numElement = 307200, interval = 307200
numBlock = 2400, numThread = 128
interval memory layout...
*** GPU add: 0.003 sec ***
*** CPU add: 0.164 sec ***
*** The abs. of max. rel. error = 10 ^ 0 x 0 ***
*** The abs. of avg. rel. error = 10 ^ 0 x 0 ***
A sample when i = 164661
GOLD = 10 ^ 0 x 1.146514967712305809649915716387329890097697486394245497434308221497424464834325631
79364833248365700345339165485223330578732787146025929987360878945595128796
REF  = 10 ^ 0 x 1.146514967712305809649915716387329890097697486394245497434308221497424464834325631
79364833248365700345339165485223330578732787146025929987360878945595128796

...

Could you provide some hints on how to interpret these results?


Title: Re: Mandel Machine
Post by: ellarien on February 26, 2014, 11:54:52 AM
Thanks for the new version! I'm now getting a complete, silent crash (instead of a hang of the rendering engine) when panning in perturbation mode with glitches present. I'm not sure whether that's progress or not. In some ways it's better than having to kill the hung program from the task manager, but there's no opportunity to save the location.

Also, as of the previous version but also in this one, I'm sometimes seeing image corruption when zooming or glitch-fixing as well as when panning. Recompute then removes the glitch fix, but it usually comes right on the second attempt.



Title: Re: Mandel Machine
Post by: Botond Kósa on February 26, 2014, 12:10:15 PM
The panning function is not working properly, I advise you to avoid it completely until I fix it. A workaround is to drag a selection rectangle from the center of the image to the edge, so that the size of the selection will be the same as of the image. Then move the selection and apply it by double clicking.


Title: Re: Mandel Machine
Post by: 3dickulus on February 26, 2014, 02:40:00 PM
Could you provide some hints on how to interpret these results?

What would you like to know?

Consumer grade card around $200 CDN 6 processors x 192 cores ea @ 3Ghz

Fills two arrays (numElement = 307200 = 640x480) with random numbers and performs a math op between each element like a[n] * b[n] = c[n] and compares the results with CPU. The time indicated includes the time it takes to copy datas to GPU and back again.

CPU = Core2 Duo @ 2.8 Ghz

edit: blocks and threads are GPU, Shared Mem is GPU chip cache with 64bit r/w (normally 32bit)


Title: Re: Mandel Machine
Post by: Botond Kósa on February 26, 2014, 02:58:49 PM
What do n_digits, prec_words, MAX_PREC_WORDS and n_words mean?


Title: Re: Mandel Machine
Post by: 3dickulus on February 26, 2014, 03:39:36 PM
What do n_digits, prec_words, MAX_PREC_WORDS and n_words mean?

n_digits = the number of digits in a value
prec_words = the number of words for storage of a value
MAX_PREC_WORDS = maximum number of words set at GARPREC compile time ( can be adjusted up to 680 on my system, around 10000 digits )
n_words = actual number of words required = prec_words + n for overflow so you don't loose bits of precision


edit: my mistake, times do not include copy to/from GPU but that is on the order of 0.0003 sec depending on array size


Title: Re: Mandel Machine
Post by: Botond Kósa on February 26, 2014, 04:38:35 PM
So IIUC n_digits=156 means you have 156 decimal digits, that equals to 518 binary digits. Using 32-bit words that results in 17 words required, that's why n_words=17, right?


Title: Re: Mandel Machine
Post by: 3dickulus on February 26, 2014, 04:53:06 PM
yes

prec_words = 12, 12      is the number of words used on GPU and CPU for a single value

n_words = 17    is the number of words used "internally" by the GARPREC library to do the actual calculation, a 12 word value is returned

1 word = 1 double

GARPREC library also includes a "dd"  double double 128bit type and a "qd" quad double 256bit type if you don't need all that precision

it works very much like MPFR library.


Title: Re: Mandel Machine
Post by: Botond Kósa on February 26, 2014, 05:06:06 PM
How does GARPREC represent high precision numbers? Does it really use double precision floating points? This seems a little odd given the low fp64 performance of consumer GPUs.


Title: Re: Mandel Machine
Post by: 3dickulus on February 26, 2014, 05:26:57 PM
The best way to understand it is to grab the source code and poke around the internals, I'm not a mathematician or phd so admittedly there are many things I just take for granted like that the people who developed this know what they are doing.

I found that GARPREC did not compile with CUDA 5.5 so I modified it where needed and put together a cmake project that does compile the static library and test program.

here is my slightly modified version http://www.digilanti.org/cudabrot/garprec_1.2.1.zip
you will also need http://crd.lbl.gov/~dhbailey/mpdist/arprec-2.2.17.tar.gz
and http://crd.lbl.gov/~dhbailey/mpdist/qd-2.3.14.tar.gz

the tar.gz files include documentation and instructions for compiling and installation

I think this was designed for Tesla type GPUs but should work with anything that is capable of Compute 1.3 and up.

edit: ARPREC and QD (CPU) have operators well defined so math is very straight forward...

Code:
mp_real x;
dd_real y = 5.5;
qd_real z = x + y;

double n = 0.1;

x = n*y+z;

the GPU side of things is a bit more complicated...
Code:
double d[MAX_D_SIZE]; // MAX_D_SIZE defined in lib 
gmpadd(d_a, interval, d_b, interval, d_c, interval, prec_words, d);

where d_a,b,c  are the value->words[] arrays and d is a temp scratch area (from GARPREC sources) "d is a temperoral buffer, should be allocated outside with the size (prec_words+7)"



Title: Re: Mandel Machine
Post by: Botond Kósa on February 26, 2014, 11:27:25 PM
Version 1.1 is out, with automatic correction of flat blobs. In cases where some unsolved blobs remain, they can be corrected manually by right-clicking inside them.

List of changes:
  • NEW: Automatic correction of flat blobs caused by the perturbation algorithm
  • FIXED: Stack overflow can occur when rendering super dense areas with 1000+ magnification and pixel grouping of 2


Title: Re: Mandel Machine
Post by: ellarien on February 26, 2014, 11:56:38 PM
Yay! That works a treat, and takes a lot of the frustration out of exploring.

 :w00t:



Title: Re: Mandel Machine
Post by: Dinkydau on March 09, 2014, 12:42:12 PM
I think a large bailout is not good. A bailout of 2 is perfect and natural to the mandelbrot set, because it is the minimum bailout required to catch all the points that belong to the set. A larger bailout value doesn't affect the set itself, but it does affect the structures of the iteration bands. There, valuable information is lost. It is especially apparent in the needle/antenna. Even at a magnification of something like E10000, the structure of the iterations bands contains enough information to find your way around the line and find a minibrot.


Title: Re: Mandel Machine
Post by: hapf on March 09, 2014, 01:00:28 PM
I think a large bailout is not good. A bailout of 2 is perfect and natural to the mandelbrot set, because it is the minimum bailout required to catch all the points that belong to the set. A larger bailout value doesn't affect the set itself, but it does affect the structures of the iteration bands. There, valuable information is lost. It is especially apparent in the needle/antenna. Even at a magnification of something like E10000, the structure of the iterations bands contains enough information to find your way around the line and find a minibrot.
A large bailout is required for distance estimate when you zoom in deeper or you get artifacts. If you don't need distance estimate 2 is fine.


Title: Re: Mandel Machine
Post by: Botond Kósa on March 11, 2014, 01:02:09 AM
I think a large bailout is not good. A bailout of 2 is perfect and natural to the mandelbrot set, because it is the minimum bailout required to catch all the points that belong to the set. A larger bailout value doesn't affect the set itself, but it does affect the structures of the iteration bands. There, valuable information is lost. It is especially apparent in the needle/antenna. Even at a magnification of something like E10000, the structure of the iterations bands contains enough information to find your way around the line and find a minibrot.

Yes, there are some places around the set where a low bailout can help in finding a minibrot, or it can even have an aesthetic value. I might make the bailout adjustable in the future, but it will need some major rewrites since many optimizations depend on the current high value of 32.


Title: Re: Mandel Machine
Post by: Botond Kósa on March 11, 2014, 01:33:24 AM
Version 1.1.1 is out, with better handling of very large images (http://web.t-online.hu/kbotond/mandelmachine/ (http://web.t-online.hu/kbotond/mandelmachine/), a refresh might be required). I noticed some confusion among users regarding the image sizes created by the program, so here is a short explanation of how it actually works:

The width and height specified in the Image box are the size of the image that can be copied into the clipboard or saved as a PNG file. If there is no supersampling applied to the image, the computed backing image has the exact same size. If a supersampling of N*N is used, the size of the backing image is (width*N)*(height*N). This is now displayed under "Actual size" in the Image box. The backing image must fit into the memory with 8 bytes per pixel, and cannot be larger than 536 megapixels. This means that the maximum image size currently available is about 30720x17280 with no supersampling, or 15360x8640 with 2x2 supersampling, or 7680x4320 with 4x4 supersampling etc.

List of changes:
  • NEW: Image size in megapixels shown in the Image box
  • FIXED: Application crashes when trying to create an image that doesn't fit into the memory or is larger than 536 MP


Title: Re: Mandel Machine
Post by: Botond Kósa on March 11, 2014, 08:47:49 AM
And here is version 1.1.2, with the ability to extract the palette from bmp images as well.
http://web.t-online.hu/kbotond/mandelmachine/ (http://web.t-online.hu/kbotond/mandelmachine/)

If you still have stability issues, please let me know.


Title: Re: Mandel Machine
Post by: SeryZone on March 12, 2014, 06:37:17 AM
Hello! How to correctly load palette? All my palettes is .bmp files, 4096x10. When I load and press 'OK' program do nothing! How to do that?


Title: Re: Mandel Machine
Post by: simon.snake on March 12, 2014, 10:53:17 AM
Hello! How to correctly load palette? All my palettes is .bmp files, 4096x10. When I load and press 'OK' program do nothing! How to do that?

After you load the bitmap (.bmp) file, you have to drag a line from one place to another on the bitmap that is displayed on the screen to set the palette, so for your image, you would start at the left hand side, drag a line to the extreme right, and the palette would display in the area above.

This means you do not have to use the entire image for palette, you can load a picture of anything and create a palette from that.


Title: Re: Mandel Machine
Post by: SeryZone on March 12, 2014, 04:21:25 PM
After you load the bitmap (.bmp) file, you have to drag a line from one place to another on the bitmap that is displayed on the screen to set the palette, so for your image, you would start at the left hand side, drag a line to the extreme right, and the palette would display in the area above.

This means you do not have to use the entire image for palette, you can load a picture of anything and create a palette from that.

Thanks a lot! I understand! Wait for new colorful images!!!


Title: Re: Mandel Machine
Post by: Botond Kósa on March 12, 2014, 05:32:42 PM
This means you do not have to use the entire image for palette, you can load a picture of anything and create a palette from that.

And you should make your palette bmp higher, at least 400 pixels if the width is 4096 pixels, because it will be scaled to fit the width of the palette window. If you load an image with 4096x10 size, it will be scaled to 512x1, so you would have to drag inside a one pixel stripe. I will correct this in the next version.


Title: Re: Mandel Machine
Post by: Botond Kósa on March 13, 2014, 10:06:59 AM
Version 1.1.3 is available, with better handling of SeryZone's 4096x10 pixel palettes.


Title: Re: Mandel Machine
Post by: panzerboy on March 13, 2014, 11:32:51 AM
How many palette colours can you set from an image?
I've been initially loading a Kalles Fraktaler .kfr file to set the palette then resetting the location and begin exploring.
That means I can't change the palette, loading another .kfr would change the location.
I should be able to write a program to convert the my many .kfp palettes to a bmp.
A 512x50 pixel aspect ratio would work best?
So for the 1024 colour .kfp palette would be a 1024x100 bmp.



Title: Re: Mandel Machine
Post by: Botond Kósa on March 13, 2014, 11:49:07 AM
The internal palette representation stores 1 million colors in an array. When loading a .kfr file, the colors (up to 1024) are mapped uniformly into the array, and the remaining slots are filled using interpolation.

When extracting colors from an image, the same method is used. If you drag a line with a length of X pixels, X colors will be mapped uniformly, and the rest will be interpolated. For slowly changing gradients it is best to rely on Mandel Machine's interpolation which uses cubic functions to achieve very smooth transitions.

512x50 or 1024x100 pixels will be OK. It is now even possible to load images with 1 pixel height, they will be stretched vertically to 50 pixels.


Title: Re: Mandel Machine
Post by: SeryZone on March 13, 2014, 06:15:34 PM
Hello, Botond! Can you make primitive zoom-maker. At beginning I set location, zooms, width and height and Supersampling. On rendering program calculates from the end to the start coordinates and make .png images. Please, make it! it is simply!


Title: Color Offset slider with large images
Post by: panzerboy on March 16, 2014, 02:14:55 AM
I'm finding a frustrating 'opportunity' with Mandel Machine (v1.1.3).
On large images 1680x1050 with high supersampling 4x4 the color offset slider seems set the previous slider position not the current.
If the slider is positioned in the middle and I make a big change sliding it all the way to the left it only shifts the palette on the rendered image slightly.
If I then slightly nudge the slider to the right, a big change to the images palette happens.
It seems the rendered image renders the previous position not the current.
This happens when nuding the offset slider, say I nudge the slider several times to the left.
I've overshot so now I nudge to the right, the image changes as if I had continued nudging to the left.
After another nudge right and the images changes as expected.
Always being one step behind makes it very hard to get the exact background colour, especially with my stripey palettes.
The workaround is to get the palette offset 'just so' with no supersampling before committing to a 8x8 supersample render.

(http://farm3.staticflickr.com/2518/13179539493_586a49b8d6_c.jpg) (http://www.flickr.com/photos/panzerboy/13179539493/)
Machined Hooks (http://www.flickr.com/photos/panzerboy/13179539493/) by panzerboyNZ (http://www.flickr.com/people/panzerboy/), on Flickr


Title: Re: Mandel Machine
Post by: Botond Kósa on March 17, 2014, 09:58:07 AM
Some info about the RAM usage of Mandel Machine:

The program stores the following structures in RAM:
  • computed iterations (4 bytes / pixel)
  • rendered image (4 bytes / pixel)
  • reference orbit coordinates (16 bytes / iteration)
  • auxiliary arrays for series approximation (96 bytes / iteration)

The size first two structures are defined by the actual size of the image, so if you are rendering a huge image, it will need a lot of RAM (for example an 1920x1080 image with 16x16 supersampling needs 4GB just for storing the image). The size of the reference orbit is determined by the iteration limit set under Location. Using a high limit of e.g. 100 million needs an additional 1.6 GB of RAM. The auxiliary arrays usually contain only 2 elements, but can contain limit/2 elements in worst case.

The program is currently allowed to allocate 4.4 GB RAM if needed (max image size = 536 megapixels, multiplied by 8 bytes, plus some headroom for the other structures). The RAM usage is shown in the lower right corner. I will have to raise this limit to allow max sized images to be calculated with maximum iteration limit (536 MP * 8 bytes + 200M iterations * 16 bytes = about 7.5 GB).


Title: Re: Color Offset slider with large images
Post by: Botond Kósa on March 17, 2014, 11:06:56 AM
I'm finding a frustrating 'opportunity' with Mandel Machine (v1.1.3).
On large images 1680x1050 with high supersampling 4x4 the color offset slider seems set the previous slider position not the current.
If the slider is positioned in the middle and I make a big change sliding it all the way to the left it only shifts the palette on the rendered image slightly.
If I then slightly nudge the slider to the right, a big change to the images palette happens.
It seems the rendered image renders the previous position not the current.
This happens when nuding the offset slider, say I nudge the slider several times to the left.
I've overshot so now I nudge to the right, the image changes as if I had continued nudging to the left.
After another nudge right and the images changes as expected.
Always being one step behind makes it very hard to get the exact background colour, especially with my stripey palettes.
The workaround is to get the palette offset 'just so' with no supersampling before committing to a 8x8 supersample render.

Thanks Panzerboy, this will be fixed in the next release.


Title: Re: Mandel Machine
Post by: youhn on March 18, 2014, 06:54:38 PM
Maybe I found another glitch (which looks great, by the way!) :

(http://i.imgur.com/Z4LhGiQ.jpg)

I don't think those tree-like or river-like structures are supposed to be there. See attached file for location.


Title: Re: Mandel Machine
Post by: ellarien on March 18, 2014, 10:15:27 PM
Oddly enough, that looks fine with 2x2 or no supersampling.


Title: Re: Mandel Machine
Post by: Botond Kósa on March 19, 2014, 12:34:12 AM
These stripes are caused by the rounding errors in the stored iteration values. In the range of 50000 iterations, the granularity of the 32-bit float datatype is about 0.004, so neighboring pixels with a smaller difference can get the same value, and later they are identified as a flat blob. The only solution to this is to store the iteration values in double precision. This is one of the old technical debts in the code that I will have to correct in an upcoming release. It will also increase the RAM consumption of the program by 50%.


Title: Re: Mandel Machine
Post by: Botond Kósa on March 20, 2014, 12:07:01 AM
A new version (1.1.4) is available with the following changes:
  • NEW: Palette can be saved into .mmf files
  • FIXED: No history item created when dragging the color density/offset sliders
  • FIXED: When adjusting the color density/offset sliders, the image may be rendered with the old values


Title: Re: Mandel Machine
Post by: Dinkydau on March 24, 2014, 04:23:16 AM
The program still has stability problems here. It crashes a lot when I try to change parameters while a render is going on. It also crashes often when I try to abort a render.

Something that would greatly enhance exploring: faster zooming with the mouse wheel. Currently the render has to finish first before more zooming with the mouse wheel is allowed. I would even suggest to make the smooth transition animation a little shorter. Speed is key for exploring.

More ideas: pause button, and ability for the program to remember the last location where a file was loaded and where a file was saved.


Title: Re: Mandel Machine
Post by: SeryZone on March 24, 2014, 08:02:38 AM
The program still has stability problems here. It crashes a lot when I try to change parameters while a render is going on. It also crashes often when I try to abort a render.

Something that would greatly enhance exploring: faster zooming with the mouse wheel. Currently the render has to finish first before more zooming with the mouse wheel is allowed. I would even suggest to make the smooth transition animation a little shorter. Speed is key for exploring.

More ideas: pause button, and ability for the program to remember the last location where a file was loaded and where a file was saved.

When you click on 'computing image' when rendering going - you pause rendering. For about crashing you all right!!!


Title: Re: Mandel Machine
Post by: R-TEAM on March 24, 2014, 02:30:24 PM
Hi,

Must say - YES - An Hell of an Nice Fractal prg ;)
(especialy on my 2 x Xeon Hexa Core Workstation :P )

But - i have already Java 64bit Last version installed.
Why dont use the prg this install ?
Dont need an additional Jave ... better use the (IF ! ) already installed Jave - as if the user update his jave - the prg benefit from this upgrade too :)

Regards
R-TEAM


Title: Re: Mandel Machine
Post by: Botond Kósa on March 25, 2014, 03:02:13 PM
The program still has stability problems here. It crashes a lot when I try to change parameters while a render is going on. It also crashes often when I try to abort a render.

Something that would greatly enhance exploring: faster zooming with the mouse wheel. Currently the render has to finish first before more zooming with the mouse wheel is allowed. I would even suggest to make the smooth transition animation a little shorter. Speed is key for exploring.

More ideas: pause button, and ability for the program to remember the last location where a file was loaded and where a file was saved.


The changing of parameters during rendering is completely untested, my fault. I always aborted before adjusting parameters (with the exception of mouse wheel / double click zooming).

Faster transitions and saved location in the history will be included in the next release. Pausing the computation is possible by left-clicking on the status bar, as SeryZone has also discovered. I forgot to mention this.

As you can see, Mandel Machine is just in the process of turning from a garage project to a proper product, and this is harder than I initially thought! :crazy:


Title: Re: Mandel Machine
Post by: Botond Kósa on March 25, 2014, 03:36:58 PM
But - i have already Java 64bit Last version installed.
Why dont use the prg this install ?
Dont need an additional Jave ... better use the (IF ! ) already installed Jave - as if the user update his jave - the prg benefit from this upgrade too :)

Mandel Machine was originally a pure Java application. Back in those days, computing deep zoom images with high-precision fixed-point arithmetic was the most compute-intensive task (perturbation method was not yet implemented). I tried several JVMs and found that BEA's JRockit JVM was fastest at performing fixed-point arithmetic (up to 60 percent faster than Sun's HotSpot JVM), so I stuck with it throughout the years. After implementing the core routines in assembly, the speed of the JVM became less of a concern.

In the meantime, both BEA and Sun were acquired by Oracle so I will refer to their JVMs as JRockit and HotSpot, respectively.

When I was planning to publish the program I tested it with both JVMs. I found that it crashed very often when run with HotSpot JVM, so I had to include JRockit in the install package. The crashes were fixed with version 1.0.5, so there is no need to stick with JRockit anymore. The next release will be available without an embedded JVM as well.


Title: Re: Mandel Machine
Post by: panzerboy on April 11, 2014, 10:33:42 AM
A few palette related things I've noticed.
When loading a palette from an image the palette isn't applied immediately.
Another zoom or change of the palette sliders activates the new palette.

Palettes loaded from an image (PNG, JPEG, BMP) don't get saved into the mmf file.
This gives a differently coloured image when you reload it.
I can guess why this happens, loading from an image there is no rendering.palette line to save later on so the previous one is used.
Creating this line at save time would have to be done from the internal array which is million items?
Better to create the rendering.palette line when loading from an image, might slow that process down slightly.

Loading a mmf file that just contains palette information forces a recalculation.
I would like to apply different palettes to the final image and composite the different layers using GIMP.
If a mmf file doesn't have information from the image or location sections a recalculation needn't be done?



Title: Re: Mandel Machine
Post by: simon.snake on April 21, 2014, 09:09:31 PM
A few palette related things I've noticed.
When loading a palette from an image the palette isn't applied immediately.
Another zoom or change of the palette sliders activates the new palette.

Palettes loaded from an image (PNG, JPEG, BMP) don't get saved into the mmf file.
This gives a differently coloured image when you reload it.
I can guess why this happens, loading from an image there is no rendering.palette line to save later on so the previous one is used.
Creating this line at save time would have to be done from the internal array which is million items?
Better to create the rendering.palette line when loading from an image, might slow that process down slightly.

Loading a mmf file that just contains palette information forces a recalculation.
I would like to apply different palettes to the final image and composite the different layers using GIMP.
If a mmf file doesn't have information from the image or location sections a recalculation needn't be done?



Panzerboy, I feel your frustration with the palette issues.

I have been creating some nice images to use as palettes, but due to the fact that the palette doesn't seem to get saved into the .mmf file I find myself frequently having to load the bitmap and re-select the palette.

Can I be sure to get the line in the exact same place I had it before?  It's very difficult.

I agree that at the loading of a palette from an image is the ideal time to create the line that would be written to the .mmf file, otherwise saving those 1 million items later would be ludicrous - how would the program know at that point which palette entries were the 'key' entries and which were the 'interpolated' entries?

Also one other question.  Is the limit of 1,900 zooms able to be lifted?  I have hit that a few times while deep zooming (it's so fast nowadays I don't always realise I'm near the limit) and thought it was a bug until I reread this post!


Title: Re: Mandel Machine
Post by: Botond Kósa on April 22, 2014, 11:25:19 AM
The palette is saved as a sequence of key colors. When it is extracted from an image, the number of key colors is the length of the selector line in pixels, and they are evenly distributed into the 1M long palette array. The intermediate colors are interpolated.

Loading only rendering data (palette, color density & offset, etc.) from an mmf file shouldn't trigger a recalculation, so this is a bug. It will be fixed in the next release.


Title: Re: Mandel Machine
Post by: Botond Kósa on April 22, 2014, 11:31:41 AM
Also one other question.  Is the limit of 1,900 zooms able to be lifted?  I have hit that a few times while deep zooming (it's so fast nowadays I don't always realise I'm near the limit) and thought it was a bug until I reread this post!

Yes, zooming beyond 1900 (using long doubles) is one major new feature of the upcoming release. I've been working on it for several weeks now, and I had to refactor large parts of the code, so I need some more time to finish.


Title: Re: Mandel Machine
Post by: simon.snake on April 22, 2014, 07:55:15 PM
The palette is saved as a sequence of key colors.

I agree it should be, but here's a screen shot:

(http://www.needanother.co.uk/uploads/PaletteError.png)

In this I opened Mandel Machine, loaded a palette which I have created (in Paint Shop Pro 5) and saved as a .png, set the palette (you can see it in the top right - lots of key colours), adjusted the IT colour density (which forces the new palette to be shown) and saved the mmf file, which I have then opened in Notepad (high tech. here!).  You can see that these are the only few steps in the history window.

You will clearly see the mmf file has only 5 key colours instead of the many it should have saved.  When I then open the file it still has the old palette.

Hope this small bug can be fixed soon as having to re-set the palette every time I load a location is a bit annoying, especially if I saved it looking a certain way and can't recreate this look exactly when loading the palette a second time.

Great program though, and thoroughly enjoying browsing.

I agree with one point that the scrolling in or out using the mouse wheel (which sometimes seems to go the wrong way, especially on zooming back out where it likes to continue zooming in for a bit before zooming out) is a bit too slow.  If this could be speeded up it would make the whole experience a bit more enjoyable.


Title: Re: Mandel Machine
Post by: Botond Kósa on April 25, 2014, 05:33:33 PM
Thanks, so for some reason the palette saved is always the default one. I should have found it while testing, maybe it was too late at night (or early in the morning :dink:)
Scrolling speed will be faster in the next version.


Title: Re: Mandel Machine
Post by: simon.snake on April 25, 2014, 10:33:39 PM
Thanks, so for some reason the palette saved is always the default one. I should have found it while testing, maybe it was too late at night (or early in the morning :dink:)
Scrolling speed will be faster in the next version.

Thanks Botond, you are the man!


Title: Re: Mandel Machine
Post by: simon.snake on May 01, 2014, 12:09:32 AM
Lovely image but interesting glitch.  The only way I could save it was by grabbing the window.

(http://www.needanother.co.uk/uploads/Interesting Glitch.png)

I enclose the parameters:

www.needanother.co.uk/uploads/Polished Emerald.mmf (http://www.needanother.co.uk/uploads/Polished Emerald.mmf)


Title: Re: Mandel Machine
Post by: SeryZone on May 01, 2014, 06:32:12 AM
PNG saves too long. Botond, for saving PNG use GDI+. It saves All formats as fast. Dinkydau use my program. It very slow, but saves as fast. GDI+


Title: Re: Mandel Machine
Post by: thegoatboy on May 01, 2014, 09:16:10 AM
Any news on a 32 bit version?


Title: Re: Mandel Machine
Post by: 3dickulus on May 01, 2014, 10:17:59 AM
Lovely image but interesting glitch.  The only way I could save it was by grabbing the window.

an interesting glitch indeed, here is that location rendered with SFT...


Title: Re: Mandel Machine
Post by: Botond Kósa on May 05, 2014, 12:15:41 PM
Lovely image but interesting glitch.  The only way I could save it was by grabbing the window.

(http://www.needanother.co.uk/uploads/Interesting Glitch.png)

I enclose the parameters:

www.needanother.co.uk/uploads/Polished Emerald.mmf (http://www.needanother.co.uk/uploads/Polished Emerald.mmf)

Thanks, this seems to be the result of the series approximation being too aggressive.


Title: Re: Mandel Machine
Post by: Botond Kósa on May 05, 2014, 12:23:30 PM
PNG saves too long. Botond, for saving PNG use GDI+. It saves All formats as fast. Dinkydau use my program. It very slow, but saves as fast. GDI+

I prefer to use Java libraries whenever possible and where performance isn't critical. I found a lib (http://objectplanet.com/pngencoder/ (http://objectplanet.com/pngencoder/)) that saves png about 2x faster than the currently used standard lib, so that will be used in the next release.

I have never used GDI+ before. How much faster it is? Could you make a comparison between MM and your program for a large image (4000x3000)? If GDI+ is even faster than PngEncoder, I might use it in the future.


Title: Re: Mandel Machine
Post by: Botond Kósa on May 05, 2014, 12:34:28 PM
Any news on a 32 bit version?

It is in the backlog, but with low priority. I plan to implement unlimited zooming and Pauldebrot's ultimate glitch detection first.


Title: Re: Mandel Machine
Post by: SeryZone on May 05, 2014, 01:47:12 PM
Botond, It saves too fasts! Faster than libraries!


Title: Re: Mandel Machine
Post by: Chillheimer on May 05, 2014, 02:08:46 PM
It is in the backlog, but with low priority. I plan to implement unlimited zooming and Pauldebrot's ultimate glitch detection first.
what about a movie maker?
the true fascination of pertubation method is that you can make movies in reasonable time.. I'm really missing that in mandelmachine..


Title: Re: Mandel Machine
Post by: Botond Kósa on May 05, 2014, 02:53:29 PM
Movie maker is also coming, right after the improved glitch detection.


Title: Re: Mandel Machine
Post by: SeryZone on May 05, 2014, 03:25:22 PM
3840x2160, same location, same coloring (Histogram):
MM: saves frame for 1.735 sec
My program (GDI+): less than 0.514 sec (timer 'lie', because I press 'save' and close - program closes almost immediately)

But program written on delphi. Therefore - good news! fasm/java programms can save png faster!

P.s.
1) Yours (http://i.piccy.info/i9/4a17a8608da243e768e04533190f4bf8/1399295929/100700/741923/_1_1_735_800.jpg) (http://piccy.info/view3/6339729/7f6aa914ea81bf4c459962904b62a907/1200/)
2) Mine [10.6 MB is 'very large' for hosting site]


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on May 05, 2014, 07:24:15 PM
Thanks, this seems to be the result of the series approximation being too aggressive.
I don't think this is due to Series Approximation, KF skips 10288 iterations from SA (2 more than MM) and gives the attached result in a couple of minutes.

Also MM is renders this particular view much slower than KF, 5-10 minutes, so I think there is something else that is problematic with this view in MM.

Edit: KF 37 seconds with 7 references, MM 54 seconds, don't know the number of references. MM should be twice as fast as KF...


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on May 05, 2014, 07:57:34 PM
an interesting glitch indeed, here is that location rendered with SFT...
Doesn't look anything like what's rendered in KF or MM.
I think there is a limit in SFT around e400-e450.
I think I had something similar scaling problem with my earlier 64-bit version of KF; in 32-bit I could scale to e600 but the very same code in 64-bit stopped working at e450. Someone suggested that 32-bit program use 80-bit floats in intermediate steps the background.

On my second attempt it did work also in 64-bit KF, zooming to e600 using scaled doubles.
I don't know why, and I'm not going to find out either :D


Title: Memory Issues
Post by: panzerboy on May 06, 2014, 01:30:18 PM
I have 3 GiB of RAM and I think thats causing me problems with 1680x1050 8x8 supersampled pictures.
Watching the task manager when the mandelbrot starts computing 1,100,000 (ish) k bytes is used.
Then the CPU usage drops to 50 % (ish) so I assume Mandel Machine is doing something single threaded.
Soon the initialising series approximation message shows on the status bar and the memory increases to 2,300,000 (ish).
The render is then much slower than before.
Perhaps Mandel Machine is having to search through 1GiB of memory assigned by the series approximation?
Another round of approximation is needed to fill in the details and thats where I give up.
The memory keeps climbing up to a maximum of 2,385,000 k bytes then the CPU falls to 0 and the memory falls back to 2,315,000.
Over and over, perhaps Javaw.exe is hitting an allocation limit, has to garbage collect to free memory and keeps going through this cycle?
I've attached the mmf parameter file is you're interested, removed the .txt extension to load into Mandel Machine.


Title: Re: Memory Issues
Post by: Botond Kósa on May 10, 2014, 06:10:21 PM
I tried to render your location and it seems there is a memory leak in my glitch detection algorithm. GC is constantly trying to free up some memory, and this causes the whole application to slow down. Will be fixed in the next release.
Thanks for the feedback!  :thanks1:


Title: Re: Mandel Machine
Post by: simon.snake on May 10, 2014, 10:41:14 PM
Hi Botond

I have a linux machine (running CentOS 6.5) and I copied Mandel Machine to it with the intention of getting MM running under Wine.  Surprisingly, it didn't run (I think it is a problem with the Java Machine you supply) but out of curiosity I installed Sun's Java Runtime and then clicked the jar file, and It burst into life.

There seem to be some issues with the system not detecting all glitches, but I can live with that.

Is the program working perfectly?  Not sure.  But so far all signs are positive.


Title: Re: Mandel Machine
Post by: SeryZone on May 18, 2014, 06:57:32 PM
Botond, do you try to render my location??? :D


Title: Re: Mandel Machine
Post by: Botond Kósa on May 18, 2014, 07:43:29 PM
Which location?


Title: Re: Mandel Machine
Post by: SeryZone on May 18, 2014, 07:47:36 PM
Which location?

My, super-hard and super-dense, that I given to you! It requires about 2,000,000,000 iterations for normal minibrot!


Title: Re: Mandel Machine
Post by: Botond Kósa on May 18, 2014, 10:30:34 PM
Oh, I remember, that is a tough location! I could only raise the iteration count to 250 millions (I have 10 GB RAM), and it is still too low to display anything but a flat area.

But stay tuned, the next release of Mandel Machine will be focused around a cleverer series approximation, and one pleasant side-effect will be reduced memory footprint!


Title: Re: Mandel Machine
Post by: SeryZone on May 19, 2014, 06:46:14 AM
Oh, I remember, that is a tough location! I could only raise the iteration count to 250 millions (I have 10 GB RAM), and it is still too low to display anything but a flat area.

But stay tuned, the next release of Mandel Machine will be focused around a cleverer series approximation, and one pleasant side-effect will be reduced memory footprint!

Strange, Kalles Fraktaler use 6 GB when 400M...
So, I guess, if you make save reference to the file, programm will works slowly. it is right?


Title: Re: Mandel Machine
Post by: Botond Kósa on May 20, 2014, 02:57:27 PM
Writing the reference orbit to disk could help, but it is unnecessary. In the next version of MM, only the iterations after series approximation will be kept in memory, reducing the memory consumption by at least 90% on average.

Efficient series approximation is key to fast perturbation calculation, even more than I previously thought. Take this location for example:
http://stardust4ever.deviantart.com/art/Magnum-Opus-Ex-3132-6-Zooms-274474754 (http://stardust4ever.deviantart.com/art/Magnum-Opus-Ex-3132-6-Zooms-274474754)

This was rendered at 3200x3200 resolution in 28 days using Fractal Extreme, using 4-8 core AMD machines. The next version of MM renders it on my dual-core Ivy Bridge laptop in just under 30 seconds. Taking into account the differences in hardware, the speedup is more than 100000x  :horsie:


Title: Re: Mandel Machine
Post by: hapf on May 20, 2014, 04:28:40 PM
You skip 90% of iterations on average? With how many coefficients? And what are the max errors you accept?


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on May 20, 2014, 04:55:11 PM
That sounds amazing!  :o

The location has minimum 377372 and maximum 378486 iterations.
The difference is 1114, so I guess you need to calculate at least that amount?

KF can skip 310508 iterations, but renders this in 640x360 in 6 minutes, which is "only" 150 times faster than FX, not considering hardware... :)
Long double is used for this location, which breaks KF if the maximum number of iterations is set lower than 310508


Title: Re: Mandel Machine
Post by: laser blaster on May 20, 2014, 05:10:37 PM
Amazing speedup! ;D What do you mean only the iterations after series approximation are kept in memory? I thought the amount of iterations you can skip with SA varies from pixel to pixel. Or do you set some minimum threshold of iterations to skip with SA, and if SA is not effective enough for a pixel, you try a new reference point?


Title: Mandel Machine v1.2 beta
Post by: Botond Kósa on May 21, 2014, 01:37:04 AM
I made Mandel Machine v1.2 available. It is still in development, so this is a beta version. Some of the promised features (reduced memory footprint, true unlimited zoom depth or Pauldelbrot's new glitch correction method) are still missing, and I also had to disable some previously working features temporarily. Those will be available in the final release.

This version is focused around two key areas: maximum zoom depth is increased to 3700 (this required the implementation of extended precision routines), and series approximation is adjustable. It can be made more aggressive than before, using up to 130 terms. The cost of initializing SA can expressed as Lref*Nterms2, where Lref is the length of the reference orbit and Nterms is the number of terms (coefficients) used in the approximation. As this cost is independent of image size, increasing the number of terms above a certain limit makes sense only by huge images where the savings outweigh the increased cost. At small to medium image sizes a right balance has to be found. It might also be automatable in the future.

A full list of changes and the download link can be found on my Mandel Machine site:
http://web.t-online.hu/kbotond/mandelmachine/ (http://web.t-online.hu/kbotond/mandelmachine/)


Title: Re: Mandel Machine
Post by: Dinkydau on May 21, 2014, 01:53:26 AM
Awesome, thank you for making a beta available. It's late for me now so I'll be using it tomorrow.


Title: Re: Mandel Machine
Post by: Botond Kósa on May 21, 2014, 02:04:46 AM
You skip 90% of iterations on average? With how many coefficients? And what are the max errors you accept?

The number of coefficients is adjustable between 6 and 130. The higher this number is, the more iterations can be skipped. It also depends largely on the actual location.

Errors are no longer measured. The number of skipped iterations is determined based on the coefficients only. The basic idea is that if we have N coefficients, X iterations can be skipped safely if the Xth iterations of the coefficients can be divided into two groups that fulfill the following criteria:
  • The first group contains the first M coefficients (A1,X, A2,X ... AM,X), the second group the remaining N-M coefficients (AM+1,X, AM+2,X ... AN,X)
  • Every term based on the coefficients of the first group is several orders of magnitude larger than any term based on the coefficients of the second group. A term for the coefficient Ai,X is Ai,X * delta0i

As long as the coefficients can be divided into these two groups, the perturbed orbit can be approximated with the first M terms safely.


Title: Re: Mandel Machine
Post by: Botond Kósa on May 21, 2014, 02:28:01 AM
That sounds amazing!  :o

The location has minimum 377372 and maximum 378486 iterations.
The difference is 1114, so I guess you need to calculate at least that amount?

KF can skip 310508 iterations, but renders this in 640x360 in 6 minutes, which is "only" 150 times faster than FX, not considering hardware... :)
Long double is used for this location, which breaks KF if the maximum number of iterations is set lower than 310508

Here are my measurements for this location in 640x360, using different levels of SA:

Number of terms |Skipped iterations |Time to initialize SA |Time to calculate iterations |Total time (including overheads & reference calculation)
6310504118 ms9066 ms11030 ms
10339736246 ms2620 ms4684 ms
18359880697 ms862 ms3401 ms
343689682257 ms466 ms4536 ms
663729528465 ms340 ms10667 ms
13037352035856 ms422 ms37687 ms


Title: Re: Mandel Machine
Post by: Botond Kósa on May 21, 2014, 02:38:55 AM
Amazing speedup! ;D What do you mean only the iterations after series approximation are kept in memory? I thought the amount of iterations you can skip with SA varies from pixel to pixel. Or do you set some minimum threshold of iterations to skip with SA, and if SA is not effective enough for a pixel, you try a new reference point?

The number of iterations skipped with SA is constant for the whole image. No per-pixel evaluation is done currently. The memory savings come from the fact that if N iterations will be skipped (for all pixels), there is no need to store the first N values of the reference orbit. (Although this is not yet implemented in the current beta version.)


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on May 21, 2014, 10:04:44 AM
I got the attached error.
When clicked, the browser takes me to a Java download page.
However even after I downloaded and installed the latest version of Java, the same error pops up...


Title: Re: Mandel Machine
Post by: Botond Kósa on May 21, 2014, 11:00:01 AM
Did you download the 64-bit version? The installed version can be verified with this command:
java -version

You should see something like this:
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)


It is also possible to have multiple JREs installed, both 32 and 64-bit. In this case you have to check the presence of the 64-bit version in the Program Files folder. 64-bit JREs should be under Program Files\jre, 32-bit JREs under Program Files (x86)\jre.


Title: Re: Mandel Machine
Post by: hapf on May 21, 2014, 11:00:44 AM
Are you storing the coefficients with arbitrary precision? Do you compute the start value with skip with arbitrary precision?


Title: Re: Mandel Machine
Post by: Botond Kósa on May 21, 2014, 11:22:25 AM
Are you storing the coefficients with arbitrary precision? Do you compute the start value with skip with arbitrary precision?

I use an own class called ASFloat (arbitrary scale float). It is similar to Kalle's floatexp type. It stores numbers in mantissa*2exponent format, where mantissa is a normalized double value (1<=mantissa<2) and exponent is an integer. The precision of this type is the same as that of double (52 bits), but the scale is much larger (32 bits compared to 11 bits of double or 15 bits of extended precision). All calculations related to SA coefficients are done using ASFloats, and the resulting coefficients are also stored in ASFloats.

MM can also be forced to calculate iterations using ASFloats by setting the Scale to 2000000000 (ASFloat) and Pixel grouping to 1 in the Computation box.


Title: Re: Mandel Machine
Post by: hapf on May 21, 2014, 11:54:42 AM
Are there somewhere descriptions how to implement +/-/*/square with such types using hardware double and integer operations in C?


Title: Re: Mandel Machine
Post by: Botond Kósa on May 21, 2014, 12:42:21 PM
I don't know about such descriptions. The basic operations are pretty straightforward. Multiplication is done by multiplying the mantissas and adding the exponents. Addition and subtraction is done by rescaling the smaller term to match the exponent of the larger one, and then adding/subtracting the mantissas (the exponents remain unchanged). Some additional logic has to be implemented to handle zero values (which have no meaningful exponent), and the results have to be normalized every now and then to avoid over/underflow of the mantissas.

You could also look up the details in the source code of Kalles Fraktaler.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on May 21, 2014, 01:14:09 PM
You could also look up the details in the source code of Kalles Fraktaler.
Thanks for that, and you've done amazing improvements on it, since it is about 10 times faster than mine?
And indeed much faster than using long double!
SIMD, no C++ operations, normalization only when needed, assembler, etc?

I got the 64-bit Java environment installed now, found it on http://java.com/en/download/manual.jsp
I found some issues with the location that was given by simon.snake, zoomed further a little bit to 1448.
The approximation breaks and it get very slow when it is changed, fewer terms makes it a little better but it is distorted unless approximation is turned off completely.
I don't quite follow your description on how you determine how many iterations you can skip.
In KF I simply use a couple of reference pixels, in the corners, calculated with perturbation starting from iteration 0, and compare how many iterations that get correct within a given tolerance, about 0.1%.

Did you remove all auto-glitch correction? Anyway, if you implement Pauldelbrot's method your program will be super! :)


Title: Re: Mandel Machine
Post by: Botond Kósa on May 21, 2014, 02:17:01 PM
Thanks for that, and you've done amazing improvements on it, since it is about 10 times faster than mine?
And indeed much faster than using long double!
SIMD, no C++ operations, normalization only when needed, assembler, etc?

At what location and zoom level did you measure the 10x difference? MM uses automatic scale reduction whenever possible, and this makes comparisons a little trickier. The basic idea is the following: when calculating a perturbed orbit, the magnitude of its absolute value grows steadily (with some small jumps up/downwards and some bigger jumps downwards) from delta0 to the bailout value. The rate of the growth is also increasing as we approach the bailout.

In the classical algorithm without SA, if |delta0| < 10-308, long double must be used to avoid underflow. But if SA can skip N iterations where N is large enough (more than 90% of the length of the reference orbit), the approximated value will likely be in the range of doubles: |deltaN| > 10-308. If "Ignore small addends" is turned on, delta0 is no longer added to the calculated deltai (since delta0 is tens or hundreds of magnitudes smaller), and all the iterations can be calculated using doubles*. This also enables the use of SIMD codepaths, resulting in a further 2x-8x speedup.

* There is one more thing to check: the previously mentioned bigger downward jumps in log|deltai| are caused by sudden drops in the magnitude of the reference orbit (|Zm|). So we have to be sure that minValue = |deltaN| * minm>N|Zm| > 10-308

This method can also be taken one step further: if minValue > 10-38, the remaining iterations can be calculated using floats instead of doubles, increasing the speed further by up to 2x when using SIMD. (This is not yet enabled in the current beta.) And also in the opposite direction: if minValue is between 10-600 and 10-308, scaled doubles can be used, which are a little slower than ordinary doubles, but much faster than long doubles.

I found some issues with the location that was given by simon.snake, zoomed further a little bit to 1448.
The approximation breaks and it get very slow when it is changed, fewer terms makes it a little better but it is distorted unless approximation is turned off completely.

I will have to check this. Maybe the normalization has to be done more frequently.

I don't quite follow your description on how you determine how many iterations you can skip.
In KF I simply use a couple of reference pixels, in the corners, calculated with perturbation starting from iteration 0, and compare how many iterations that get correct within a given tolerance, about 0.1%.

I found that checking the corners only is not always enough. In fact, when the image is centered on a julia, there are some cases when the borders are rendered correctly but the center is corrupted due to the SA skipping too many iterations. Evaluating the skippable iterations on small regions locally might help, but it would also be more costly.

Did you remove all auto-glitch correction? Anyway, if you implement Pauldelbrot's method your program will be super! :)

Yes, I had to disable glitch correction, as I mentioned under Known issues in the changelog. I started to implement Pauldelbrot's method, but the whole thing is in an intermediate state now, and neither the old nor the new method works correctly.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on May 21, 2014, 03:13:14 PM
At what location and zoom level did you measure the 10x difference?
This was on the Magnum-Opus location.
With pixel grouping=1 and SA=6 terms, which is comparable with KF, MM calculates this in 43 seconds and KF in 6 minutes.
Is MM using long double or ASFloat for this?

I found that checking the corners only is not always enough. In fact, when the image is centered on a julia, there are some cases when the borders are rendered correctly but the center is corrupted due to the SA skipping too many iterations.

Yeah, I also found that corners is not enough and I have added pixels on the middle top, bottom, right and left, in total 8 test pixels, in the eventual next version of KF. If one of them fails the tolerance, that's where the limit is set.
But my problem were locations at the <-2,0i> spike and not at embedded julias. I never had problems with that the borders but not the center were rendered correctly.


Title: Re: Mandel Machine
Post by: Botond Kósa on May 21, 2014, 03:48:18 PM
This was on the Magnum-Opus location.
With pixel grouping=1 and SA=6 terms, which is comparable with KF, MM calculates this in 43 seconds and KF in 6 minutes.
Is MM using long double or ASFloat for this?

It is using long double or ordinary double, but definitely not ASFloat. It should use ordinary double because at that location scale reduction is possible, but I am not sure I implemented it when pixel grouping is 1. But you can disable scale reduction and force the program to use long doubles by changing Scale (in the Computation box) from Automatic to Extended. (You can also force it to use ASFloat, by the way.)

My extended routines are written in ASM, but no SIMD is used (SIMD instructions work on floats and doubles only). You mentioned that you used DevC++ to implement the long double calculations, since MS VC++ does not support long doubles in 64-bit mode. I also tried DevC++ a few years ago (albeit for a different purpose) and found that the code produced by its compiler was quite slow.

According to my measurements on my dual-core Ivy Bridge laptop, the throughput of KF using long doubles is about 70 million iterations/second. This is comparable to MM using ASFloats (which also depends on the JRE used, since ASFloat is pure Java for the time being). The throughput of MM using long doubles is above 500 million iterations/second.


Title: Re: Mandel Machine
Post by: hapf on May 21, 2014, 05:35:18 PM
Yeah, I also found that corners is not enough and I have added pixels on the middle top, bottom, right and left, in total 8 test pixels, in the eventual next version of KF. If one of them fails the tolerance, that's where the limit is set.
But my problem were locations at the <-2,0i> spike and not at embedded julias. I never had problems with that the borders but not the center were rendered correctly.
I always subsample the whole image to decide what skipping is acceptable.


Title: Re: Mandel Machine
Post by: Dinkydau on May 21, 2014, 11:29:45 PM
In the previous version of Mandel Machine I was having this glitch. It appears when 0 or 6 terms are being used for the series approximation. Note that it happens even with 0 terms! 10 terms (or any more than that) now gives the correct result.

(http://i538.photobucket.com/albums/ff342/formule/series_error.png~original)

The parameter file is attached to the post as .txt for reference.

Interesting: as I zoom deeper, I now need more and more terms for the render to be correct.


Title: Re: Mandel Machine
Post by: Botond Kósa on May 22, 2014, 06:15:13 PM
In the previous version of Mandel Machine I was having this glitch. It appears when 0 or 6 terms are being used for the series approximation. Note that it happens even with 0 terms! 10 terms (or any more than that) now gives the correct result.

I tried your location and found no glitches when no SA was used.


Title: Re: Mandel Machine
Post by: Dinkydau on May 22, 2014, 06:37:19 PM
You're right... probably I did something wrong. Indeed there are no glitches with SA turned off. Sorry for the false alarm
Further down I noticed that it also helps to turn off "ignore small addends".


Title: Re: Mandel Machine
Post by: SeryZone on May 26, 2014, 08:19:21 AM
Botond, can you make saving history elements to files and when recovering - just re-read file and data??? I consider that will reduce RAM usage :)


Title: Re: Mandel Machine
Post by: simon.snake on May 26, 2014, 12:42:54 PM
With the current version saving locations causes the colour information to be saved as 'null'.

Here's an example saved file:

Code:
image.width=960
image.height=540
image.supersampling=0
position.re=-1.256995930270566293720
position.im=0.379646657067192661977
position.magnification=61.76126464486249
position.rotation=0.0
computation.iteration_limit=1000000
rendering.computed_only=false
rendering.inner_color=000000
rendering.outer_color=dddd00
rendering.empty_color_1=ffffff
rendering.empty_color_2=e0e0e0
rendering.transfer_function=8
rendering.color_density=-300
rendering.dwell_bands=0
rendering.de_transfer_function=0
rendering.de_color_density=0
rendering.palette=null
rendering.color_offset=289800

You can see the rendering.palette=null line (second from bottom) which then won't load in to MM (it causes MM to crash).  As soon as the line is changed to have some normal values it then does load properly.

I think I've also noticed that if you set an image resolution that doesn't keep the aspect ratio, when you then subsequently load the location the 'keep aspect ratio' tick box state doesn't change.  I don't think I've seen an issue with that, but the aspect ratio should be calculated and the tick box should reflect the resolution.


Title: Re: Mandel Machine
Post by: Botond Kósa on May 26, 2014, 05:23:58 PM
Botond, can you make saving history elements to files and when recovering - just re-read file and data??? I consider that will reduce RAM usage :)

Yes, this is the original operation, I just switched it off temporarily in the latest beta, so it has to recalculate everything when restoring a previous state from history. But this doesn't increase RAM consumption.


Title: Re: Mandel Machine
Post by: SeryZone on May 26, 2014, 05:34:48 PM
Yes, this is the original operation, I just switched it off temporarily in the latest beta, so it has to recalculate everything when restoring a previous state from history. But this doesn't increase RAM consumption.

So... All the same... Reference eats many RAM and you can't change this fact...


Title: Re: Mandel Machine
Post by: Botond Kósa on May 26, 2014, 05:41:46 PM
So... All the same... Reference eats many RAM and you can't change this fact...

The reference orbit eats a lot of RAM currently, but this can be reduced, because only the part that cannot be approximated has to be stored. (For example if the reference orbit is 100 million iterations long, it currently consumes 1.6 GB, but if 90 million iterations can be skipped by SA, the RAM consumption will be reduced to 160 MB.) This is an upcoming feature in MM.


Title: Re: Mandel Machine
Post by: simon.snake on May 26, 2014, 09:25:10 PM
Hi Botond.

Another issue, but this time a relatively small one.  Colour Palettes can be loaded from .gif files but they do not show up automatically.

Great program, and I can't wait to get auto glitch correction back.


Title: Mandel Machine v1.2.1 beta
Post by: Botond Kósa on May 28, 2014, 01:30:07 AM
A new beta is available, focused around two bugfixes. The program doesn't crash when calculating perturbation using long doubles without SA or without ignoring small addends, and the symmetric star-shaped glitches reported by Kalle and simon.snake (Polished Emerald location) are gone.


Title: Re: Mandel Machine
Post by: Botond Kósa on May 28, 2014, 01:33:38 AM
Another issue, but this time a relatively small one.  Colour Palettes can be loaded from .gif files but they do not show up automatically.

GIF was included in the listed image types. However, they are less suitable for nice gradients since they can only contain 256-color images.


Title: Re: Mandel Machine
Post by: SeryZone on June 03, 2014, 02:59:13 PM
Botond, fix the bugs, please.
1) I can't set high image sizes (more than 16000x9000).
2) Auto solve glitches

P.s. If you can, make SIMPLIEST render sequence to PNG! Please.


Title: Re: Mandel Machine
Post by: Botond Kósa on June 03, 2014, 03:53:21 PM
Botond, fix the bugs, please.
1) I can't set high image sizes (more than 16000x9000).
2) Auto solve glitches

P.s. If you can, make SIMPLIEST render sequence to PNG! Please.

I've been having very little time recently, so please be patient. These features are planned in the upcoming version or the one after that.


Title: Re: Mandel Machine
Post by: SeryZone on June 03, 2014, 07:14:28 PM
Botond, I have 3 questions:
1) How to make this awesome style of windows?
2) How to make 'Window in window'?
3) How to solve problem with very high images (more than 15360x8640)?
Please help me! I shall use your tips in my program.


Title: Re: Mandel Machine
Post by: Botond Kósa on June 04, 2014, 12:50:49 AM
Botond, I have 3 questions:
1) How to make this awesome style of windows?
The whole GUI is made in Java with Swing, using the look-and-feel called "Nimbus".

2) How to make 'Window in window'?
This is standard Swing functionality (JDesktopPane and JInternalFrame).

3) How to solve problem with very high images (more than 15360x8640)?
An image of size 16000x9000 is 144 megapixels. With 12 bytes per pixel (8 bytes for the iteration data and 4 bytes for the color) this consumes "only" 1.7 GB of RAM in MM, and should cause no problems on a PC with at least 3 GB. (The storing of long reference orbits also adds to the memory needs, but this would not be a concern unless the length of the orbit is tens or hundreds of millions.) Anyway, if the whole image doesn't fit into the memory, you could try to render it in parts (preferably horizontal sections) and join them when writing to the disk.


Title: Re: Mandel Machine
Post by: Botond Kósa on June 04, 2014, 12:57:01 AM
I can't set high image sizes (more than 16000x9000).

Also note that using supersampling multiplies the image size and the memory requirement by 4 for each step of supersampling. For example rendering a 16000x9000 image with 2x2 multisampling results in a full 32000x18000 image to be stored in memory, which requires 7 GB. Rendering it with 4x4 supersampling would require 27.6 GB.

There is also a hard limit in MM on the image size. It is currently 536 megapixels, and this prevents a 16000x9000 image with any supersampling to be rendered (it would take 576 megapixels even with 2x2 supersampling). I plan to lift this limitation in the future, but this is a low priority enhancement.


Title: Re: Mandel Machine
Post by: SeryZone on June 04, 2014, 08:19:43 AM
Also note that using supersampling multiplies the image size and the memory requirement by 4 for each step of supersampling. For example rendering a 16000x9000 image with 2x2 multisampling results in a full 32000x18000 image to be stored in memory, which requires 7 GB. Rendering it with 4x4 supersampling would require 27.6 GB.

There is also a hard limit in MM on the image size. It is currently 536 megapixels, and this prevents a 16000x9000 image with any supersampling to be rendered (it would take 576 megapixels even with 2x2 supersampling). I plan to lift this limitation in the future, but this is a low priority enhancement.
Also note that using supersampling multiplies the image size and the memory requirement by 4 for each step of supersampling. For example rendering a 16000x9000 image with 2x2 multisampling results in a full 32000x18000 image to be stored in memory, which requires 7 GB. Rendering it with 4x4 supersampling would require 27.6 GB.

There is also a hard limit in MM on the image size. It is currently 536 megapixels, and this prevents a 16000x9000 image with any supersampling to be rendered (it would take 576 megapixels even with 2x2 supersampling). I plan to lift this limitation in the future, but this is a low priority enhancement.

Give me develop enviroment, please. I'll try to re-realise my SFT Map Visualizer.


Title: Re: Mandel Machine
Post by: Botond Kósa on June 04, 2014, 01:34:50 PM
Not true, you can trivially do it in smaller sub-blocks or tiles, buckets, whatever you want to call them. This is only true for IFS fractals, where you cannot simply ask for the colour of a (sub-)pixel.

In fact, because of this convenient property for escape-time fractals, you don't even need to store the full 1:1 image in memory, just some small buffer so that you aren't saving the pixels to disk one at a time (which you can compute in file-format order and save directly).

Of course you can render the image in smaller blocks. What I wrote applies to the current implementation of MM only.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on June 08, 2014, 08:21:44 PM
Since you are achieving enormous speed-ups by exploiting the Series Approximation to the extreme, I think this information is useful to you:
http://www.fractalforums.com/announcements-and-news/kalles-fraktaler-2/msg74804/#msg74804


Title: Re: Mandel Machine
Post by: SeryZone on June 09, 2014, 11:00:09 PM
Hello, Botond! How to realize Marianni/Silver algorithm for simpliest z^2+C??? I tried to read post on the sites, but do not understand. Can you help me?


Title: Re: Mandel Machine
Post by: Botond Kósa on June 13, 2014, 11:48:42 AM
Since you are achieving enormous speed-ups by exploiting the Series Approximation to the extreme, I think this information is useful to you:
http://www.fractalforums.com/announcements-and-news/kalles-fraktaler-2/msg74804/#msg74804

Thanks, that location with the glitch in one corner proved that calculating SA coefficients based on image width is not always enough, since the corners are farther away from the center than the edges. Using the diagonal instead of width produces a correct image.


Title: Re: Mandel Machine
Post by: Botond Kósa on June 13, 2014, 12:24:36 PM
Hello, Botond! How to realize Marianni/Silver algorithm for simpliest z^2+C??? I tried to read post on the sites, but do not understand. Can you help me?

In the classic Mariani/Silver algorithm you calculate the pixels along the border, and if all have equal iteration values, the interior can be filled with that value. (This can be done because of the connectedness of the Mandelbrot set and the dwell bands.) If not all pixels are equal, divide the region into smaller pieces (dividing in half along the longer edge is best), calculate the iterations on the divider line, and apply the border equality check for the subregions recursively.

If you are calculating normalized iteration counts (a.k.a. smooth gradients), this method can only speed up the interior of the set, since all outer pixels get different iteration values. But it can be tweaked to work on fractional values as well: instead of checking the equality along the border of a region, check for monotonity along the four edges. If the (fractional) iteration counts grow steadily along all 4 edges, the inner pixels' iteration values can be interpolated. I tried several interpolation functions (e.g. bilinear) and measured the mean absolute error to find the best one.

Keep in mind though that the Mariani/Silver algorithm is only effective on relatively sparse images with large monotonic areas. These areas appear on low zoom depths or on images with a narrow iteration span where series approximation is very effective. On hard images with complex, dense structures and wide iteration span, Mariani/Silver doesn't help much.

You can observe the effects of the algorithm by checking the Hide guessed pixels checkbox under Rendering in Mandel Machine.


Title: Re: Mandel Machine
Post by: Roquen on June 24, 2014, 10:47:04 AM
TL;DR.   

FYI: On my old 64-bit notebook it goes boom in mm64.dll executing an illegal instruction (AVX probably...didn't check).


Title: Re: Mandel Machine
Post by: Chillheimer on July 16, 2014, 04:04:17 PM
any idea what is happening here?
am i doing something wrong?

(attached a zipped mmf-file of location)


Title: Re: Mandel Machine
Post by: 3dickulus on July 16, 2014, 06:47:42 PM
It looks the same as when my GPU tries rendering beyond precision limits.


Title: Re: Mandel Machine
Post by: stardust4ever on August 05, 2014, 02:11:57 AM
Mandel Machine is a highly efficient Mandelbrot set explorer application.
http://web.t-online.hu/kbotond/mandelmachine (http://web.t-online.hu/kbotond/mandelmachine)

(http://web.t-online.hu/kbotond/mandelmachine/mm_screenshot_large.png)

[...]

Special thanks to Michael Condron, Bruce Dawson, Kevin Martin and Karl Runmo for sharing their ideas.

Any comments are welcome.
I like your image render! I'm quite flattered you used my coordinate!  ;D
http://stardust4ever.deviantart.com/art/XX-Reactor-Core-Deep-Zoom-131573460
 :thumbsup1:


Title: Re: Mandel Machine
Post by: youhn on August 05, 2014, 08:22:48 PM
any idea what is happening here?
am i doing something wrong?

(http://www.fractalforums.com/index.php?action=dlattach;topic=18482.0;attach=10237;image)

This looks exactly the same as what happened here with Kalles Fraktaler just a few days ago. It wasn't even a very deep zoom. After zooming out and in again, the problem was still there. After killing the program and restarting from the same location, the problem was gone and zooming continued as normal. Since the same location did well after restart, the cause is not in the location. So I did not keep it.

For Mandel Machine .. I wonder how the development is progressing. Botond, could you provide us with a short status update?


Title: Re: Mandel Machine
Post by: Chillheimer on August 05, 2014, 08:31:23 PM
It looks the same as when my GPU tries rendering beyond precision limits.
seems like precision limits have something to do with it, when I set this from auto to a manual value I could zoom deeper (but encountered other problems)


Title: Re: Mandel Machine
Post by: stardust4ever on August 06, 2014, 12:05:00 AM
Is there some way to extend the precision limit of Mandel Machine. I posted the following render today:
http://www.fractalforums.com/images-showcase-%28rate-my-fractal%29/pterodactyl-vertebrae/

The current feature is located at 3610 zoom levels. Mandel Machine appears to have a hard limit of 3700 zooms.

This is part of a render path I plan on continuing a point I estimate to be just under 5400 or so zooms. Mandel Machine is so fast and slick it's literally unreal but I need absolutely need to go deeper. I'm currently carving my way through using Kalles Fraktaler 2 but if there's another software app comparable to Mandel Machine, I'd like to use that instead. Kalles Fraktaler 2 has a few glaring issues that make it clunky to render finished images. For starters, the aspect ratio seems to be pegged at 16x9 and there doesn't seem to be a way to rotate the image to fit onscreen, especially if it's an oblong shape which as Murphy's law dictates, that the shape wil be vertically aligned instead or horizontal.


Title: Re: Mandel Machine
Post by: Botond Kósa on August 06, 2014, 12:09:21 AM
I like your image render! I'm quite flattered you used my coordinate!  ;D
http://stardust4ever.deviantart.com/art/XX-Reactor-Core-Deep-Zoom-131573460
 :thumbsup1:

I have to say, your gallery on deviantart drove me to improve the speed of Mandel Machine. Before implementing the perturbation algorithm, it was already 30-40% faster than Fractal Extreme at zoom depths beyond 500. (This can be tested by unchecking "Use perturbation algorithm" under Computation.)

It is truly unbelievable you had the patience to find such deep locations like Magnum Opus Ex, using the conventional algorithm with full precision calculations.


Title: Re: Mandel Machine
Post by: stardust4ever on August 06, 2014, 12:43:59 AM
I have to say, your gallery on deviantart drove me to improve the speed of Mandel Machine. Before implementing the perturbation algorithm, it was already 30-40% faster than Fractal Extreme at zoom depths beyond 500. (This can be tested by unchecking "Use perturbation algorithm" under Computation.)

It is truly unbelievable you had the patience to find such deep locations like Magnum Opus Ex, using the conventional algorithm with full precision calculations.
What do you think got me burned out of doing fractals, LOL! I spent over a month rendering that "Magnum Opus Ex" image at 3200x3200 pixels!

My latest render (see post above) is deeper (3610 zooms) and took like 32 seconds to render at 4096x3072 using Mandel Machine, even on the same CPU which is now 2.5 years old - like, days literally became seconds - how is this even possible !!!
:headbatting:

Is there any chance you could increase the zoom limit? Pretty please... :spsad:


Title: Re: Mandel Machine
Post by: Botond Kósa on August 06, 2014, 12:57:28 PM
...
For Mandel Machine .. I wonder how the development is progressing. Botond, could you provide us with a short status update?

The recent developments were focused around 3+1 key areas:
1. Automation of calculation parameters (90% complete): many controls in the Computation box are there to provide manual override in case the image gets distorted. This happens mostly around minibrots. There are also some optimizations possible under certain circumstances that provide some speedup. When finished, users will no longer have to fiddle with computation controls, and the GUI will become simpler. (The hidden controls will still be available in some "Advanced" mode.)
2. Speeding up the initialization of series approximation (100% complete): the computed iteration count can be largely reduced by applying more aggressive series approximation (see Reply #165 in the thread). But the time needed to initialize the approximation is a quadratic function of the number of terms, so the right balance has to be found. By speeding up the initialization by up to 5 times, more aggressive approximation can be used.
3. Re-enabling features disabled in 1.2 beta (25% complete): automatic glitch correction and saving of iteration count data for the history items were disabled, which reduced the functionality of the application. They will have to be enabled to come out of beta state.
+1: several bugfixes and some GUI improvements

I am planning to release another beta after arriving back from holiday (next week). That will include the first two feature sets. Re-enabling the disabled features and releasing a fully functional version will take some time, a few weeks at least.


Title: Re: Mandel Machine
Post by: Botond Kósa on August 06, 2014, 01:15:11 PM
Is there any chance you could increase the zoom limit? Pretty please... :spsad:

Yes, expect it in a few weeks. The current limit of 3700 is caused by an optimization that breaks around 3710 zooms.


Title: Re: Mandel Machine
Post by: stardust4ever on August 07, 2014, 09:30:58 AM
Been using it. I'm blown away by how fast it is.  Also looking forward to the >3700 Zooms update. O0

One issue I am having is that the software doesn't seem to do any additional guesses to fill in missing data. I'm aware that with perturbation theory, iterations cannot be rendered deeper than the reference pixel. Most of the zoom sequences I do don't contain large bulbs (Typically due to close encounters with Minibrots - I think bulbs can be a bit ugly anyway) so it's not a big deal. The workaround is to zoom sufficiently into the centroid then manually zoom back out so that the reference pixel in the center of the image has sufficiently deep iteration count to render the image.

However that "zoom deeper and back out" technique doesn't work very well when I'm actively exploring a region or taking a detour. It can be downright frustrating for example if I'm trying to zoom into an inflection point on a dentrite, and if I click or zoom slightly outside the dendrite it completely disappears. :hmh:

Just thought I'd throw that out in the event you are able to work something in. The software could add reference points as needed to fill in the dead zones. Fraktaler does this even if it's slower and unoptimized.

Just some food for thought. I'm still loving using it even if there are random crashes (save often).


Title: Re: Mandel Machine
Post by: Botond Kósa on August 07, 2014, 12:17:08 PM
The automatic solving of glitches was active in previous versions, but I switched it off because it was incompatible with features introduced in 1.2. That's why it is called a beta version (see changelog at http://web.t-online.hu/kbotond/mandelmachine/#changelog (http://web.t-online.hu/kbotond/mandelmachine/#changelog)). I am working on it, but still need some weeks to finish. Anyway, I plan to release another beta next week with auto glitch solving still disabled, that will contain the improvements made during the summer.

If you encounter crashes on a regular basis, please let me know the details. Also be aware of the known issues described in the changelog, the most important being the application may hang when adjusting a parameter during calculation - always cancel the calculation first with the Esc key before changing a parameter.


Title: Re: Mandel Machine
Post by: 3dickulus on August 07, 2014, 09:01:12 PM
Can you use a technique like the Java version of SFT ? Where all of the gadgets and menus are ghosted/inactive, except for the cancel button, while a render is in progress ?


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on August 08, 2014, 12:22:39 PM
I'm currently carving my way through using Kalles Fraktaler 2 but if there's another software app comparable to Mandel Machine, I'd like to use that instead. Kalles Fraktaler 2 has a few glaring issues that make it clunky to render finished images. For starters, the aspect ratio seems to be pegged at 16x9 and there doesn't seem to be a way to rotate the image to fit onscreen, especially if it's an oblong shape which as Murphy's law dictates, that the shape wil be vertically aligned instead or horizontal.
I am not sure that Mandel Machine will be able to keep all it's optimizations if it is to utilize Pauldelbrot's glitch detecting method and render reliable images.
The many terms for SA may hide the glitch detection conditions, even though I don't think so.
The skipping of small add-ends may also hide it.
So does also the expanded loops.
32 seconds for Magnus opus is really mind blowing, but that is also a special location. If you want a general explorer that is able to zoom near several minibrots you really need the glitch detecting.


Title: Re: Mandel Machine
Post by: Botond Kósa on August 10, 2014, 02:18:29 AM
seems like precision limits have something to do with it, when I set this from auto to a manual value I could zoom deeper (but encountered other problems)

Yes, that image was rendered with standard double precision, no perturbation. Did you have all computation parameters in Automatic setting?


Title: Re: Mandel Machine
Post by: SeryZone on August 10, 2014, 02:51:06 PM
I set up new Java x64 to my laptop (CPU is Intel Core i5-4200M) and your program do not works! It only shows main screen, crash and create log file!!! WTF it means, Botond?
Quote
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ILLEGAL_INSTRUCTION (0xc000001d) at pc=0x000007fef25e0eb5, pid=2952, tid=3356
#
# JRE version: Java(TM) SE Runtime Environment (7.0_67-b01) (build 1.7.0_67-b01)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.65-b04 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C  [mm64.dll+0x40eb5]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

---------------  T H R E A D  ---------------

Current thread (0x0000000011fe2000):  JavaThread "WorkerThread1" [_thread_in_native, id=3356, stack(0x00000000123b0000,0x00000000124b0000)]

siginfo: ExceptionCode=0xc000001d

Registers:
RAX=0x000007fef25fb8a0, RBX=0x000000000000000c, RCX=0x0000000000000004, RDX=0x00000000000003e8
RSP=0x00000000124aef78, RBP=0x00000007a67b29a8, RSI=0x0000000000000004, RDI=0x00000000000003e8
R8 =0x00000007a67b29a8, R9 =0x0000000000000026, R10=0x000000000000000c, R11=0x000000006e082a70
R12=0x0000000000000000, R13=0x0000000011fe21e8, R14=0x00000000124af0a0, R15=0x0000000011fe2000
RIP=0x000007fef25e0eb5, EFLAGS=0x0000000000010202

Top of Stack: (sp=0x00000000124aef78)
0x00000000124aef78:   000007fef25a208d 00000006e81b2920
0x00000000124aef88:   00000000124af060 0000000000000004
0x00000000124aef98:   0000000002592a39 00000000124af500
0x00000000124aefa8:   0000000011fe2000 00000006e81b2920
0x00000000124aefb8:   0000000002586215 00000006e819be48
0x00000000124aefc8:   0000000002592bb0 00000000ffffff00
0x00000000124aefd8:   00000006e81b2920 00000000124af060
0x00000000124aefe8:   0000000000000000 00000000124af090
0x00000000124aeff8:   000000000000000c 0000006f00000002
0x00000000124af008:   00000007000001d0 0000000011fe2000
0x00000000124af018:   00000000124af160 00000000124af020
0x00000000124af028:   00000006e81b2920 00000000124af0a0
0x00000000124af038:   00000006e8529918 0000000000000000
0x00000000124af048:   00000006e81b2920 0000000000000000
0x00000000124af058:   00000000124af080 00000000124af0e8
0x00000000124af068:   00000000025860f8 00000007a6873ee0

Instructions: (pc=0x000007fef25e0eb5)
0x000007fef25e0e95:   c4 41 15 58 ef 83 c0 04 3b c2 0f 8c 45 ff ff ff
0x000007fef25e0ea5:   c4 41 7d 11 40 20 c4 41 7d 11 48 60 c5 f8 77 c3
0x000007fef25e0eb5:   c4 c1 7d 10 00 c4 c1 7d 10 48 60 c5 fd 28 d0 c5
0x000007fef25e0ec5:   fd 28 d9 c4 41 7d 10 60 20 c4 41 7d 10 a8 80 00


Register to memory mapping:

RAX=0x000007fef25fb8a0 is an unknown value
RBX=0x000000000000000c is an unknown value
RCX=0x0000000000000004 is an unknown value
RDX=0x00000000000003e8 is an unknown value
RSP=0x00000000124aef78 is pointing into the stack for thread: 0x0000000011fe2000
RBP=0x00000007a67b29a8 is an unknown value
RSI=0x0000000000000004 is an unknown value
RDI=0x00000000000003e8 is an unknown value
R8 =0x00000007a67b29a8 is an unknown value
R9 =0x0000000000000026 is an unknown value
R10=0x000000000000000c is an unknown value
R11=0x000000006e082a70 is an unknown value
R12=0x0000000000000000 is an unknown value
R13=0x0000000011fe21e8 is an unknown value
R14=0x00000000124af0a0 is pointing into the stack for thread: 0x0000000011fe2000
R15=0x0000000011fe2000 is a thread


Stack: [0x00000000123b0000,0x00000000124b0000],  sp=0x00000000124aef78,  free space=1019k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [mm64.dll+0x40eb5]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  mm.WorkerThread.getIterationsDnative(II[DII)V+0
j  mm.WorkerThread.getIterationsD(III[I[I[I)V+183
j  mm.WorkerThread.getIterations(III[I[I[I)V+72
j  mm.WorkerThread.computeRowInterleaved(IIIII)V+155
j  mm.WorkerThread.compute()V+154
j  mm.WorkerThread.run()V+48
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x00000000120bd000 JavaThread "ControlThread" [_thread_blocked, id=3580, stack(0x0000000014400000,0x0000000014500000)]
  0x0000000011f92000 JavaThread "Swing-Shell" daemon [_thread_blocked, id=3500, stack(0x0000000014260000,0x0000000014360000)]
  0x000000001201a000 JavaThread "AWT-EventQueue-0" [_thread_blocked, id=3412, stack(0x0000000013ff0000,0x00000000140f0000)]
  0x0000000011e10000 JavaThread "AWT-Shutdown" [_thread_blocked, id=3404, stack(0x0000000013b70000,0x0000000013c70000)]
  0x00000000120ea000 JavaThread "WorkerThread3" [_thread_in_native, id=3372, stack(0x0000000013cb0000,0x0000000013db0000)]
  0x00000000120e9000 JavaThread "WorkerThread2" [_thread_in_native, id=3368, stack(0x0000000013a50000,0x0000000013b50000)]
=>0x0000000011fe2000 JavaThread "WorkerThread1" [_thread_in_native, id=3356, stack(0x00000000123b0000,0x00000000124b0000)]
  0x0000000011fe1000 JavaThread "WorkerThread0" [_thread_in_native, id=3348, stack(0x00000000138d0000,0x00000000139d0000)]
  0x0000000011fd1800 JavaThread "Image Fetcher 1" daemon [_thread_blocked, id=3340, stack(0x0000000012ee0000,0x0000000012fe0000)]
  0x0000000011e11800 JavaThread "Image Fetcher 0" daemon [_thread_blocked, id=3244, stack(0x0000000012780000,0x0000000012880000)]
  0x0000000011e10800 JavaThread "AWT-Windows" daemon [_thread_in_native, id=3228, stack(0x0000000012190000,0x0000000012290000)]
  0x0000000011e0f000 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=3212, stack(0x00000000122b0000,0x00000000123b0000)]
  0x0000000010411000 JavaThread "Service Thread" daemon [_thread_blocked, id=656, stack(0x0000000011980000,0x0000000011a80000)]
  0x0000000010410800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=1320, stack(0x0000000011ad0000,0x0000000011bd0000)]
  0x0000000010407800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=2912, stack(0x0000000011850000,0x0000000011950000)]
  0x0000000010405800 JavaThread "Attach Listener" daemon [_thread_blocked, id=2908, stack(0x0000000011650000,0x0000000011750000)]
  0x00000000103fe800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2460, stack(0x00000000114d0000,0x00000000115d0000)]
  0x00000000103a6000 JavaThread "Finalizer" daemon [_thread_blocked, id=2896, stack(0x00000000113d0000,0x00000000114d0000)]
  0x000000001039f000 JavaThread "Reference Handler" daemon [_thread_blocked, id=2892, stack(0x00000000112a0000,0x00000000113a0000)]
  0x000000000028d800 JavaThread "main" [_thread_in_native, id=2980, stack(0x00000000023f0000,0x00000000024f0000)]

Other Threads:
  0x0000000010396800 VMThread [stack: 0x0000000011140000,0x0000000011240000] [id=2428]
  0x000000001041b000 WatcherThread [stack: 0x0000000011c40000,0x0000000011d40000] [id=3080]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 PSYoungGen      total 38400K, used 9174K [0x00000007a4500000, 0x00000007a6f80000, 0x0000000800000000)
  eden space 33280K, 12% used [0x00000007a4500000,0x00000007a48f5f20,0x00000007a6580000)
  from space 5120K, 99% used [0x00000007a6580000,0x00000007a6a7f970,0x00000007a6a80000)
  to   space 5120K, 0% used [0x00000007a6a80000,0x00000007a6a80000,0x00000007a6f80000)
 ParOldGen       total 86528K, used 11273K [0x00000006ed000000, 0x00000006f2480000, 0x00000007a4500000)
  object space 86528K, 13% used [0x00000006ed000000,0x00000006edb027f0,0x00000006f2480000)
 PSPermGen       total 21504K, used 16891K [0x00000006e7e00000, 0x00000006e9300000, 0x00000006ed000000)
  object space 21504K, 78% used [0x00000006e7e00000,0x00000006e8e7ef98,0x00000006e9300000)

Card table byte_map: [0x0000000005640000,0x0000000005f10000] byte_map_base: 0x0000000001f01000

Polling page: 0x0000000000220000

Code Cache  [0x0000000002580000, 0x00000000027f0000, 0x0000000005580000)
 total_blobs=651 nmethods=120 adapters=484 free_code_cache=48276Kb largest_free_block=49417472

Compilation events (10 events):
Event: 12.208 Thread 0x0000000010407800  114             javax.swing.plaf.nimbus.NimbusStyle::getValues (9 bytes)
Event: 12.208 Thread 0x0000000010410800  115             java.awt.Component::getFont_NoClientCode (29 bytes)
Event: 12.209 Thread 0x0000000010407800 nmethod 114 0x0000000002642650 code [0x00000000026427a0, 0x0000000002642828]
Event: 12.209 Thread 0x0000000010410800 nmethod 115 0x0000000002642390 code [0x00000000026424e0, 0x00000000026425a8]
Event: 12.210 Thread 0x0000000010407800  116             java.awt.Component::getFont (5 bytes)
Event: 12.211 Thread 0x0000000010407800 nmethod 116 0x00000000026420d0 code [0x0000000002642220, 0x00000000026422e8]
Event: 12.217 Thread 0x0000000010410800  117             java.util.HashMap::put (142 bytes)
Event: 12.234 Thread 0x0000000010410800 nmethod 117 0x000000000265c290 code [0x000000000265c4c0, 0x000000000265d070]
Event: 12.395 Thread 0x0000000010407800  118 %           java.util.Arrays::fill @ 10 (28 bytes)
Event: 12.399 Thread 0x0000000010407800 nmethod 118% 0x000000000265afd0 code [0x000000000265b120, 0x000000000265b2f8]

GC Heap History (2 events):
Event: 12.376 GC heap before
{Heap before GC invocations=1 (full 0):
 PSYoungGen      total 38400K, used 33280K [0x00000007a4500000, 0x00000007a6f80000, 0x0000000800000000)
  eden space 33280K, 100% used [0x00000007a4500000,0x00000007a6580000,0x00000007a6580000)
  from space 5120K, 0% used [0x00000007a6a80000,0x00000007a6a80000,0x00000007a6f80000)
  to   space 5120K, 0% used [0x00000007a6580000,0x00000007a6580000,0x00000007a6a80000)
 ParOldGen       total 86528K, used 2400K [0x00000006ed000000, 0x00000006f2480000, 0x00000007a4500000)
  object space 86528K, 2% used [0x00000006ed000000,0x00000006ed258010,0x00000006f2480000)
 PSPermGen       total 21504K, used 16753K [0x00000006e7e00000, 0x00000006e9300000, 0x00000006ed000000)
  object space 21504K, 77% used [0x00000006e7e00000,0x00000006e8e5c468,0x00000006e9300000)
Event: 12.392 GC heap after
Heap after GC invocations=1 (full 0):
 PSYoungGen      total 38400K, used 5118K [0x00000007a4500000, 0x00000007a6f80000, 0x0000000800000000)
  eden space 33280K, 0% used [0x00000007a4500000,0x00000007a4500000,0x00000007a6580000)
  from space 5120K, 99% used [0x00000007a6580000,0x00000007a6a7f970,0x00000007a6a80000)
  to   space 5120K, 0% used [0x00000007a6a80000,0x00000007a6a80000,0x00000007a6f80000)
 ParOldGen       total 86528K, used 11273K [0x00000006ed000000, 0x00000006f2480000, 0x00000007a4500000)
  object space 86528K, 13% used [0x00000006ed000000,0x00000006edb027f0,0x00000006f2480000)
 PSPermGen       total 21504K, used 16753K [0x00000006e7e00000, 0x00000006e9300000, 0x00000006ed000000)
  object space 21504K, 77% used [0x00000006e7e00000,0x00000006e8e5c468,0x00000006e9300000)
}

Deoptimization events (10 events):
Event: 11.762 Thread 0x000000001201a000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00000000025fb790 method=java.lang.String.equals(Ljava/lang/Object;)Z @ 8
Event: 11.762 Thread 0x000000001201a000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00000000025fb790 method=java.lang.String.equals(Ljava/lang/Object;)Z @ 8
Event: 12.036 Thread 0x000000001201a000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000000262180c method=javax.swing.UIDefaults.getFromHashtable(Ljava/lang/Object;)Ljava/lang/Object; @ 122
Event: 12.069 Thread 0x000000000028d800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x0000000002621104 method=javax.swing.UIDefaults.getFromHashtable(Ljava/lang/Object;)Ljava/lang/Object; @ 92
Event: 12.074 Thread 0x000000000028d800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x0000000002621104 method=javax.swing.UIDefaults.getFromHashtable(Ljava/lang/Object;)Ljava/lang/Object; @ 92
Event: 12.203 Thread 0x000000000028d800 Uncommon trap: reason=unloaded action=reinterpret pc=0x0000000002659ea0 method=mm.Palette.computeGradient()V @ 853
Event: 12.212 Thread 0x000000000028d800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00000000025fb790 method=java.lang.String.equals(Ljava/lang/Object;)Z @ 8
Event: 12.216 Thread 0x000000001201a000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x000000000261a3d4 method=javax.swing.UIDefaults.getFromHashtable(Ljava/lang/Object;)Ljava/lang/Object; @ 122
Event: 12.220 Thread 0x000000001201a000 Uncommon trap: reason=unreached action=reinterpret pc=0x0000000002613404 method=javax.swing.JComponent.getClientProperty(Ljava/lang/Object;)Ljava/lang/Object; @ 16
Event: 12.399 Thread 0x000000001201a000 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00000000025fb790 method=java.lang.String.equals(Ljava/lang/Object;)Z @ 8

Internal exceptions (10 events):
Event: 12.368 Thread 0x000000000028d800 Threw 0x00000007a5f5c168 at C:\re\jdk7u67\1368\hotspot\src\share\vm\prims\jvm.cpp:1244
Event: 12.368 Thread 0x000000000028d800 Threw 0x00000007a5f5dcc8 at C:\re\jdk7u67\1368\hotspot\src\share\vm\prims\jvm.cpp:1244
Event: 12.368 Thread 0x000000000028d800 Threw 0x00000007a5f5f530 at C:\re\jdk7u67\1368\hotspot\src\share\vm\prims\jvm.cpp:1244
Event: 12.394 Thread 0x00000000120bd000 Threw 0x00000007a4500340 at C:\re\jdk7u67\1368\hotspot\src\share\vm\prims\jni.cpp:717
Event: 12.394 Thread 0x00000000120bd000 Threw 0x00000007a4500508 at C:\re\jdk7u67\1368\hotspot\src\share\vm\prims\jni.cpp:717
Event: 12.394 Thread 0x00000000120bd000 Threw 0x00000007a45006a0 at C:\re\jdk7u67\1368\hotspot\src\share\vm\prims\jni.cpp:717
Event: 12.394 Thread 0x00000000120bd000 Threw 0x00000007a4500d68 at C:\re\jdk7u67\1368\hotspot\src\share\vm\prims\jni.cpp:717
Event: 12.394 Thread 0x00000000120bd000 Threw 0x00000007a4500f30 at C:\re\jdk7u67\1368\hotspot\src\share\vm\prims\jni.cpp:717
Event: 12.394 Thread 0x00000000120bd000 Threw 0x00000007a45010c8 at C:\re\jdk7u67\1368\hotspot\src\share\vm\prims\jni.cpp:717
Event: 12.400 Thread 0x00000000120ea000 Threw 0x00000007a47d9948 at C:\re\jdk7u67\1368\hotspot\src\share\vm\prims\jvm.cpp:1244

Events (10 events):
Event: 12.404 Executing VM operation: RevokeBias
Event: 12.404 Executing VM operation: RevokeBias done
Event: 12.404 Executing VM operation: RevokeBias
Event: 12.404 Executing VM operation: RevokeBias done
Event: 12.404 Executing VM operation: RevokeBias
Event: 12.404 Executing VM operation: RevokeBias done
Event: 12.408 loading class 0x000000001351e990 done
Event: 12.408 loading class 0x0000000011d96810 done
Event: 12.408 loading class 0x0000000011d967d0
Event: 12.408 loading class 0x0000000011f9fe70


Dynamic libraries:
0x000000013f950000 - 0x000000013f983000    C:\Program Files\Java\jre7\bin\javaw.exe
0x0000000077a40000 - 0x0000000077beb000    C:\Windows\SYSTEM32\ntdll.dll
0x0000000077920000 - 0x0000000077a3f000    C:\Windows\system32\kernel32.dll
0x000007fefdc40000 - 0x000007fefdcab000    C:\Windows\system32\KERNELBASE.dll
0x000007feffa90000 - 0x000007feffb6b000    C:\Windows\system32\ADVAPI32.dll
0x000007fefdd70000 - 0x000007fefde0f000    C:\Windows\system32\msvcrt.dll
0x000007fefe8f0000 - 0x000007fefe90f000    C:\Windows\SYSTEM32\sechost.dll
0x000007fefde10000 - 0x000007fefdf3e000    C:\Windows\system32\RPCRT4.dll
0x0000000077820000 - 0x000000007791a000    C:\Windows\system32\USER32.dll
0x000007feffce0000 - 0x000007feffd47000    C:\Windows\system32\GDI32.dll
0x000007fefec50000 - 0x000007fefec5e000    C:\Windows\system32\LPK.dll
0x000007feffb70000 - 0x000007feffc3a000    C:\Windows\system32\USP10.dll
0x000007fefc190000 - 0x000007fefc384000    C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7600.16385_none_fa645303170382f6\COMCTL32.dll
0x000007feff9f0000 - 0x000007feffa61000    C:\Windows\system32\SHLWAPI.dll
0x000007fefdfc0000 - 0x000007fefdfee000    C:\Windows\system32\IMM32.DLL
0x000007fefe6b0000 - 0x000007fefe7b9000    C:\Windows\system32\MSCTF.dll
0x000007fefd960000 - 0x000007fefd9a0000    C:\Windows\system32\nvinitx.dll
0x000000006e680000 - 0x000000006e752000    C:\Program Files\Java\jre7\bin\msvcr100.dll
0x000000006dea0000 - 0x000000006e672000    C:\Program Files\Java\jre7\bin\server\jvm.dll
0x000007fef2600000 - 0x000007fef2609000    C:\Windows\system32\WSOCK32.dll
0x000007fefe5c0000 - 0x000007fefe60d000    C:\Windows\system32\WS2_32.dll
0x000007fefe5b0000 - 0x000007fefe5b8000    C:\Windows\system32\NSI.dll
0x000007fefb090000 - 0x000007fefb0cb000    C:\Windows\system32\WINMM.dll
0x0000000077c10000 - 0x0000000077c17000    C:\Windows\system32\PSAPI.DLL
0x000000006de90000 - 0x000000006de9f000    C:\Program Files\Java\jre7\bin\verify.dll
0x000000006de60000 - 0x000000006de88000    C:\Program Files\Java\jre7\bin\java.dll
0x000000006de40000 - 0x000000006de55000    C:\Program Files\Java\jre7\bin\zip.dll
0x000000006d7b0000 - 0x000000006d945000    C:\Program Files\Java\jre7\bin\awt.dll
0x000007fefe7c0000 - 0x000007fefe897000    C:\Windows\system32\OLEAUT32.dll
0x000007fefea40000 - 0x000007fefec41000    C:\Windows\system32\ole32.dll
0x000007fefc0e0000 - 0x000007fefc136000    C:\Windows\system32\uxtheme.dll
0x000007fef3790000 - 0x000007fef379b000    C:\Program Files (x86)\Yandex\Punto Switcher\PSHook64.dll
0x000007feffa70000 - 0x000007feffa87000    C:\Windows\system32\imagehlp.dll
0x000007fefbd00000 - 0x000007fefbd18000    C:\Windows\system32\dwmapi.dll
0x000007fefd890000 - 0x000007fefd89f000    C:\Windows\system32\CRYPTBASE.dll
0x000007fefec60000 - 0x000007feff9e6000    C:\Windows\system32\SHELL32.dll
0x000007fef25a0000 - 0x000007fef25ff000    D:\SOFT\Mandel Machine\mm64.dll
0x000000006d760000 - 0x000000006d7a7000    C:\Program Files\Java\jre7\bin\fontmanager.dll
0x000000006d750000 - 0x000000006d75b000    C:\Program Files\Java\jre7\bin\management.dll
0x000000006d730000 - 0x000000006d749000    C:\Program Files\Java\jre7\bin\net.dll
0x000007fefd1c0000 - 0x000007fefd214000    C:\Windows\system32\mswsock.dll
0x000007fefd1b0000 - 0x000007fefd1b7000    C:\Windows\System32\wship6.dll
0x000000006d710000 - 0x000000006d721000    C:\Program Files\Java\jre7\bin\nio.dll
0x000000006d6c0000 - 0x000000006d701000    C:\Program Files\Java\jre7\bin\t2k.dll
0x000007fefdcd0000 - 0x000007fefdd70000    C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7600.16385_none_a44af8ec57f961cf\comctl32.dll
0x000007fefe3d0000 - 0x000007fefe5a7000    C:\Windows\system32\SETUPAPI.dll
0x000007fefda50000 - 0x000007fefda86000    C:\Windows\system32\CFGMGR32.dll
0x000007fefdcb0000 - 0x000007fefdcca000    C:\Windows\system32\DEVOBJ.dll
0x000007fefe610000 - 0x000007fefe6a9000    C:\Windows\system32\CLBCatQ.DLL
0x000007fefc6b0000 - 0x000007fefc7dc000    C:\Windows\system32\propsys.dll
0x000007fefbb50000 - 0x000007fefbb7d000    C:\Windows\system32\ntmarta.dll
0x000007fefe8a0000 - 0x000007fefe8f0000    C:\Windows\system32\WLDAP32.dll
0x000007fefd830000 - 0x000007fefd887000    C:\Windows\system32\apphelp.dll
0x000007fef6170000 - 0x000007fef630c000    C:\Windows\system32\NetworkExplorer.dll
0x000007fef8d10000 - 0x000007fef8d43000    C:\Windows\System32\shdocvw.dll
0x000007fefd9a0000 - 0x000007fefd9af000    C:\Windows\system32\profapi.dll
0x000007fef9cd0000 - 0x000007fef9ce8000    C:\Windows\system32\MPR.dll
0x000007fef80f0000 - 0x000007fef80fa000    C:\Windows\System32\drprov.dll
0x000007fefcdb0000 - 0x000007fefcded000    C:\Windows\System32\WINSTA.dll
0x000007fef80c0000 - 0x000007fef80e2000    C:\Windows\System32\ntlanman.dll
0x000007fef7d50000 - 0x000007fef7d6b000    C:\Windows\System32\davclnt.dll
0x000007fef80b0000 - 0x000007fef80ba000    C:\Windows\System32\DAVHLPR.dll
0x000007fefb950000 - 0x000007fefb965000    C:\Windows\system32\wkscli.dll
0x000007fef9180000 - 0x000007fef918f000    C:\Windows\system32\cscapi.dll
0x000007fefb970000 - 0x000007fefb97c000    C:\Windows\system32\netutils.dll
0x000007feef8c0000 - 0x000007feefb31000    C:\Windows\system32\wpdshext.dll
0x000007fefbec0000 - 0x000007fefc0d5000    C:\Windows\WinSxS\amd64_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7600.16385_none_2b4f45e87195fcc4\gdiplus.dll
0x000007fef2670000 - 0x000007fef272d000    C:\Windows\system32\PortableDeviceApi.dll
0x000007fefda90000 - 0x000007fefdac9000    C:\Windows\system32\WINTRUST.dll
0x000007fefdad0000 - 0x000007fefdc36000    C:\Windows\system32\CRYPT32.dll
0x000007fefda40000 - 0x000007fefda4f000    C:\Windows\system32\MSASN1.dll
0x000007fef9210000 - 0x000007fef9245000    C:\Windows\system32\EhStorShell.dll
0x000007fef8c40000 - 0x000007fef8c67000    C:\Windows\system32\EhStorAPI.dll
0x000007fef86b0000 - 0x000007fef86bc000    C:\Windows\system32\LINKINFO.dll
0x000007fefbb90000 - 0x000007fefbcba000    C:\Windows\system32\WindowsCodecs.dll
0x000007fef9190000 - 0x000007fef9210000    C:\Windows\system32\ntshrui.dll
0x000007fefd590000 - 0x000007fefd5b3000    C:\Windows\system32\srvcli.dll
0x000007fefb5d0000 - 0x000007fefb5db000    C:\Windows\system32\slc.dll
0x00000000730c0000 - 0x00000000730ea000    C:\Program Files\Java\jre7\bin\dcpr.dll
0x000007fef8a10000 - 0x000007fef8b35000    C:\Windows\system32\dbghelp.dll

VM Arguments:
jvm_args: -Xmx4400m
java_command: D:\SOFT\Mandel Machine\MandelMachine.exe
Launcher Type: SUN_STANDARD

Environment Variables:
PATH=C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Java\jre7\bin
USERNAME=Сергей
OS=Windows_NT
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 60 Stepping 3, GenuineIntel



---------------  S Y S T E M  ---------------

OS: Windows 7 , 64 bit Build 7600

CPU:total 4 (2 cores per cpu, 2 threads per core) family 6 model 60 stepping 3, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, aes, erms, ht, tsc, tscinvbit

Memory: 4k page, physical 8307240k(6659276k free), swap 16612584k(14336476k free)

vm_info: Java HotSpot(TM) 64-Bit Server VM (24.65-b04) for windows-amd64 JRE (1.7.0_67-b01), built on Jul 25 2014 08:55:00 by "java_re" with unknown MS VC++:1600

time: Sun Aug 10 15:45:45 2014
elapsed time: 12 seconds



Title: Re: Mandel Machine
Post by: Botond Kósa on August 10, 2014, 04:26:18 PM
From the log you posted it seems you have Windows 7 build 7600, with no Service Pack 1 installed. That version of Windows does not support AVX, this might be the case for the crash. MM detects the available CPU instruction sets, but does not check operating system support. Will be fixed in the next release.


Title: Re: Mandel Machine
Post by: aleph0 on August 10, 2014, 06:23:47 PM
Version 1.2.1 crashes for me too with Windows 7 SP 1 (Build 7601). See attached error log.


Title: Re: Mandel Machine
Post by: SeryZone on August 10, 2014, 07:25:05 PM
From the log you posted it seems you have Windows 7 build 7600, with no Service Pack 1 installed. That version of Windows does not support AVX, this might be the case for the crash. MM detects the available CPU instruction sets, but does not check operating system support. Will be fixed in the next release.
Shit! I can't turn on windows7 updates!!! Thanks for information...


Title: Re: Mandel Machine
Post by: Sockratease on August 10, 2014, 08:23:46 PM
Shit! I can't turn on windows7 updates!!! Thanks for information...

Unshit! You can still go to micro$oft's website someplace and download the service pack for a manual install. It's usually done that way for offline computers, so if you have concerns it will trigger something unwanted, just install the service pack while offline.

I trolled around their site looking, but they don't make it obvious, so maybe a more determined search will turn it up...

Hope that helps.   O0


Title: Mandel Machine v1.2.2 beta
Post by: Botond Kósa on August 11, 2014, 02:54:11 AM
A new beta version is available, containing AVX-related bugfixes, an increased zoom limit and some performance improvements. See details at http://web.t-online.hu/kbotond/mandelmachine/#changelog (http://web.t-online.hu/kbotond/mandelmachine/#changelog). As always, a page refresh (Shift+F5) might be required in the browser.


Title: Re: Mandel Machine
Post by: aleph0 on August 11, 2014, 08:58:24 AM
Thanks for update Botond, but still crashing for me during startup. Log attached.

Previous version briefly displayed the program main window and image window (blank) before crashing. This time the windows don't become visible before crash.


Title: Re: Mandel Machine
Post by: Botond Kósa on August 11, 2014, 09:15:02 AM
A new AVX-related bug was introduced in version 1.2.2, so I uploaded another update, 1.2.3.


Title: Re: Mandel Machine
Post by: Chillheimer on August 11, 2014, 10:19:41 AM
Unshit!
;D

Yes, that image was rendered with standard double precision, no perturbation. Did you have all computation parameters in Automatic setting?
yes, I didn't change any settings, just started the program and zoomed a while.


Title: Re: Mandel Machine
Post by: aleph0 on August 11, 2014, 11:29:52 AM
Thanks Botond, v1.2.3 starts OK for me. Will do some further testing tonight.

SeryZone - Try this page for SP1 and probably grab the ISO: http://www.microsoft.com/en-gb/download/details.aspx?id=5842



Title: Re: Mandel Machine
Post by: Kalles Fraktaler on August 11, 2014, 03:08:41 PM
Hello

I tried tick-tock, but it looks like it is glitches now?

Also, the attached location, Verstoppertje from Dinkydau, doesn't work at all...


Title: Re: Mandel Machine
Post by: SeryZone on August 11, 2014, 05:08:13 PM

SeryZone - Try this page for SP1 and probably grab the ISO: http://www.microsoft.com/en-gb/download/details.aspx?id=5842


I was set up SP 1 one day ago after advice!

Karl - Verstoppertje really have unsolvable glitches on 2-nd Julia. Mandel Machine don't have glitch solving by new method.

So, my proc. intel core i5 2400M support AVX2 but MandelMachine don't use it... Why?


Title: Re: Mandel Machine
Post by: Botond Kósa on August 11, 2014, 05:21:12 PM
So, my proc. intel core i5 2400M support AVX2 but MandelMachine don't use it... Why?

The reason for that is simple: my current CPU (Ivy Bridge) doesn't support AVX2. It would be possible to write and compile AVX2 code on it, but I would not be able to test it. That's a pity because AVX2/FMA instruction would yield another speedup close to 2x.


Title: Re: Mandel Machine
Post by: Botond Kósa on August 11, 2014, 07:28:03 PM
I tried tick-tock, but it looks like it is glitches now?

Also, the attached location, Verstoppertje from Dinkydau, doesn't work at all...

I see no glitches in tick-tock, could you attach an image?
Verstoppertje is completely broken in Mandel Machine, and I don't know the exact reason for it. It renders correctly with perturbation turned off. One of the optimizations might break the image, I'll have to investigate it.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on August 11, 2014, 09:13:26 PM
I see no glitches in tick-tock, could you attach an image?
Verstoppertje is completely broken in Mandel Machine, and I don't know the exact reason for it. It renders correctly with perturbation turned off. One of the optimizations might break the image, I'll have to investigate it.
I have attached a comparison. Seems that the glitch only occurs in the original ratio 640x480. Image from MM on top, no additional references are added in KF.

Karl - Verstoppertje really have unsolvable glitches on 2-nd Julia. Mandel Machine don't have glitch solving by new method.
No it is not unsolvable. So far I have not found any unsolvable glitches. KF need 4 references in 640x360.


Title: Re: Mandel Machine
Post by: stardust4ever on August 12, 2014, 08:01:41 AM

If you encounter crashes on a regular basis, please let me know the details. Also be aware of the known issues described in the changelog, the most important being the application may hang when adjusting a parameter during calculation - always cancel the calculation first with the Esc key before changing a parameter.
Yep, that's exactly what was screwing it up. I am constantly tweaking the params, LOL!

Another issue which is easily reproducable: When zooming into certain regions, ie seahorse or elephant valley, the extended float precision fails about 60-something zooms in and the image is badly pixellated. Note I have not observed this in the needle area, just locations with lots of spirals. Currently the workaround is to manually select an arbitrary precision, zoom in, sufficiently deep, then reset to "auto."

Another bug I discovered: I tend to like big renders but am running into issues. 14400x10800 works but 19200x14400 bugs out the software. I'm running a 64-bit AMD on windows 7 desktop and 8.1 notebook. Both PCs are pure 64-bit and both have 8 Gigs RAM. Above some preset amount of megapixels, the software fails to render. I can still save my progress but must close and reopen Mandel Machine to continue using.

PS - I'm glad to have the option to selectively load pieces of the parameter file. That way if I save using parameters that don't work (for instance ginormous image size), I can still reload the rest of the data.


Title: Re: Mandel Machine
Post by: stardust4ever on August 12, 2014, 02:50:07 PM
Silly me. There is a new version (v1.2.3) of Mandel Machine posted as of August 11th. 5300 zooms, w00t! O0
http://web.t-online.hu/kbotond/mandelmachine/#changelog

Thank you so much for this update! Off to download...  ;D

I got a problem with extremely large renders. I rendered an image @19200x10800. When I try to save said image, I get an empty PNG file (0kb). PNG saves fine @12800x7200.


Title: Mandel Machine v1.2.4 beta
Post by: Botond Kósa on August 13, 2014, 08:20:40 PM
A new beta is available, addressing a few recently reported bugs:
  • Tick-tock location is now rendered correctly, without glitches
  • Verstoppertje location was completely broken previously, fixed now (automatic glitch correction is still disabled though)
  • The saving of PNG files runs a little faster now and consumes less RAM, enabling to save images up to 19200x10800


Title: Re: Mandel Machine
Post by: stardust4ever on August 15, 2014, 03:01:31 AM
I discovered a weird anomaly with disconnected locus at 4551.131 zoom levels. :hurt:

Curious bug (it displays in both versions 1.2.3 and 1.2.4), but fortunately upon zooming in further, the anomaly disappeared allowing me to continue the zoom sequence.

Zip contains the .mmf parameter file.


Title: Re: Mandel Machine
Post by: stardust4ever on August 15, 2014, 04:14:38 AM
Anomaly II. I have a feeling these will become more frequent the deeper I zoom... :hurt: :hurt:


Title: Re: Mandel Machine
Post by: stardust4ever on August 15, 2014, 04:50:58 AM
Derp.  :hurt: :hurt: :hurt:


Title: Re: Mandel Machine
Post by: Botond Kósa on August 15, 2014, 11:03:14 AM
I discovered a weird anomaly with disconnected locus at 4551.131 zoom levels. :hurt:

Curious bug (it displays in both versions 1.2.3 and 1.2.4), but fortunately upon zooming in further, the anomaly disappeared allowing me to continue the zoom sequence.

This might be caused by some over- or underflow in series approximation (turning off SA fixes the image). Reminds me of the patterned glitches in Dinkydau's Flake location.
Will be fixed in the next release.


Title: Re: Mandel Machine
Post by: Chillheimer on August 15, 2014, 01:14:17 PM
you know guys, if this "glitch" works and doesn't do any harm, PLEASE don't see this as a glitch or a mistake you need to correct!
See it as Evolution! There has been a strange mutation in the formula! creating something new!

You should feature it! Try to push it further! Try to make it repeat and evolve itself!
A really NEW branch of the M-Set. And you want to "correct it"?! Noooooooooooooo!!!! :o

Why always "perfect" things.
zooming into the m-set is so diverse, but in can become boring, as the main patterns always nearly stay the same

THIS is something DIFFERENT.
I see it as EVOLUTION!
By random mutation, just as it happens in the real world.
Mistakes aren't bad, if you make the best out of them and improve on them.
Now Botond, please, make the evolution conscious and don't kill of the first spark! Let it grow, let it branch, let the m-set become multifractal!



Title: Re: Mandel Machine
Post by: youhn on August 15, 2014, 01:28:08 PM
Sounds pretty much good to me, since I'm all for variety and evolution. But it's probably not random, but offspring from the calculation method.

The magic of fractal formulas is in part that different programs can generate the SAME output, even for unexplored areas. I would rather keep this strength. So maybe branch off the programs which exploit the wonderful shapes caused by approximations/calculations? Maybe help the mutations a bit, by giving and offset to the values every ... hmm ... few millions iterations (on the whole zoom path). Then I would also like a way to store these deviations, as some kind of DNA.


Title: Re: Mandel Machine
Post by: Botond Kósa on August 15, 2014, 01:42:45 PM
you know guys, if this "glitch" works and doesn't do any harm, PLEASE don't see this as a glitch or a mistake you need to correct!
See it as Evolution! There has been a strange mutation in the formula! creating something new!

You should feature it! Try to push it further! Try to make it repeat and evolve itself!
A really NEW branch of the M-Set. And you want to "correct it"?! Noooooooooooooo!!!! :o

Why always "perfect" things.
zooming into the m-set is so diverse, but in can become boring, as the main patterns always nearly stay the same

THIS is something DIFFERENT.
I see it as EVOLUTION!
By random mutation, just as it happens in the real world.
Mistakes aren't bad, if you make the best out of them and improve on them.
Now Botond, please, make the evolution conscious and don't kill of the first spark! Let it grow!

Interesting idea, but I am a bit skeptical about the reproducibility of these mutations. When I first discovered them I found that altering the location of the reference pixel in such a mutated image by just 1 pixel can lead to completely different mutations. But maybe it could be possible zoom into such a mutation by reusing the reference from the last image. I'll give it a try.


Title: Re: Mandel Machine
Post by: Chillheimer on August 15, 2014, 01:48:10 PM
yeah!!! :)

I found that altering the location of the reference pixel in such a mutated image by just 1 pixel can lead to completely different mutations.
I hear a Butterfly scream.. what would Lorenz say to this?

Worlds within worlds. within one pixel...


Title: Mandel Machine 1.2.5 beta
Post by: Botond Kósa on August 16, 2014, 05:24:12 PM
A new beta version, 1.2.5 is available. I made the previous betas downloadable in case the latest has major issues. I am going on a final summer holiday tomorrow and won't have net access for the next week.


Title: Re: Mandel Machine
Post by: Dinkydau on August 16, 2014, 06:56:05 PM
6000 zooms, time for another record deepest julia morphing?


Title: Re: Mandel Machine
Post by: Dinkydau on August 16, 2014, 09:15:26 PM
The glitches that stardust4ever posted also occur in the latest version, for example on the attached location. Using fewer terms of series approximation may help. Disabling series approximation always works, but that's much, much slower...


Title: Re: Mandel Machine
Post by: stardust4ever on August 26, 2014, 09:41:58 AM
The glitches that stardust4ever posted also occur in the latest version, for example on the attached location. Using fewer terms of series approximation may help. Disabling series approximation always works, but that's much, much slower...
I have solved the glitch problem. Much like the base Mandelbrot formula, at ever increasing zoom depths, it eventually becomes necessary to increase the precision not only on the base pixel but also increase the sliding scale precision of the perturbation approximation series. Fortunately Mandel Machine also allows the manual selection of the scale bits precision. Switch this from automatic to manual and select a higher scale precision from default and the anomaly clears right up. Instead of pixelation at the fringe bit depth like with real precision, you get perturbation errors. They kind of remind me of the look of some rendered Mandelbrot images created by manually Manipulating the seed C0 to some value other than C or 0.

I have another glitch I'd like to report that seems to affect version 1.2.4 (I've not downloaded 1.2.5 yet). The saved PNG files seem to be off spec in some way. GIMP reports the output PNGs as corrupt, however MS Paint and Image Viewer render the PNGs correctly. Workaround is to open the image in MS Paint, save, then reopen in GIMP or other image editor for further editing. I typically use Bicubic to scale photos but bilinear option seems to work better for fractal data provided the image is scaled at integer ratios. For instance you can render a huge image at 12800x9600, save as PNG, then scale down to 3200x2400 Bilinear for a nice 4x4 antialiased image at decent print resolution, but still be able to view the finer fractal details in the source image. This nets the same final results as rendering 3200x2400 at 4x4 AA and takes the same length of time.

Finally, for those of you who want to create your own color palettes, I have discovered two backdoor methods for inserting palette data into an image. If Mandel Machine does not yet have an option for tweaking color palettes, maybe a menu option for importing Kalles Fraktaler palette files could be added. Read on for the backdoor method of importing palettes into Mandel Machine.....

Method #1: Use Kalles Fraktaler to create custom color palette by setting your preferred colors within the colors editor. Load arbitrary coordinate data into the image. The location does not matter but for some reason you need to zoom in at least a tiny bit for Mandel Machine to properly load the file. Save. Open the Kalles Fraktaler parameter file in Mandel Machine. Use the save dialog and uncheck everything but the Palette checkbox. Save the file as [name of color scheme].mmf Next, load your favorite mmf parameter into Mandel Machine. Next, load [name of color scheme].mmf over the existing parameters. Make sure only the Palette checkbox is highlighted. If you saved only the paletted data, the other options should be grayed out. Upon load, all your current parameter settings will remain intact, but your favorite custom Kalles Fraktaler color scheme will be loaded. Enjoy rendering your image with a custom color palette!

Method #2: Open the Mandel Machine using a plain text editor and manually edit the color values. For pros only.


Title: Re: Mandel Machine
Post by: SeryZone on August 30, 2014, 05:41:29 PM
Botond, when you end work for normal glitch-correction? Unable to render smth! Please, turn it on!


Title: Re: Mandel Machine
Post by: Botond Kósa on August 31, 2014, 10:00:02 AM
Tomorrow!   :)


Title: Version 1.2.6 beta is available
Post by: Botond Kósa on September 03, 2014, 11:32:21 AM
Summer's gone, time for a new release: v1.2.6 brings the long-awaited glitch correction based on Pauldelbrot's algorithm. It is still disabled when working with 80-bit extended precision, but these occasions should be rare thanks to series approximation enabling the use of data types with lower scale. In order to avoid calculating too many reference points, when the remaining glitches contain no interior points, their pixels are interpolated from the neighboring non-glitch pixels.

The problem of distorted Julia centers is still not fixed completely, so I introduced a series approximation limiter: a maximum number of skipped iterations can be set in the Computation box.

Thanks to stardust4ever for pointing out a bug in the png saving routines. The CRC32 checksums were miscalculated, and some image editors that verify checksums could not open the PNGs.

For a full list of changes, see http://web.t-online.hu/kbotond/mandelmachine/#changelog (http://web.t-online.hu/kbotond/mandelmachine/#changelog)


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on September 03, 2014, 02:56:29 PM
Great news, I hope you will succeed in completing the fastest and correct Mandelbrot explorer in the universe! :)

However I cannot start 1.2.6 - nothing happens.
MandelMachine.exe *32 flashes in Windows Task Manager processes and then disappear immediately.
I was just about to ask you if you had accidentally put a 32-bit executable in the zip.
But when I reverted to 1.2.5 again and it starts without problem, there is no MandelMachine.exe in Task Manager, the main window points to the process javaw.exe. So I guess MandelMachine.exe is just some kind of startup program?

Anyway, unfortunately I cannot give any better details than that.
On my laptop I am running Windows 2008 server.


Title: Re: Mandel Machine
Post by: Botond Kósa on September 03, 2014, 03:47:29 PM
However I cannot start 1.2.6 - nothing happens.
MandelMachine.exe *32 flashes in Windows Task Manager processes and then disappear immediately.
I was just about to ask you if you had accidentally put a 32-bit executable in the zip.
But when I reverted to 1.2.5 again and it starts without problem, there is no MandelMachine.exe in Task Manager, the main window points to the process javaw.exe. So I guess MandelMachine.exe is just some kind of startup program?

Yes, MandelMachine.exe is just a wrapper around the .jar file that contains the application. When started, it searches for a suitable Java installation (version 1.7.0 or newer, 64-bit) and launches the javaw.exe, and then terminates. What you see with 1.2.5 is exactly the expected behavior.

Assuming you made no changes to the Java configuration between trying the different MM versions, my guess would be that something is going wrong again in the native part of the code (mm64.dll), causing the whole JVM to crash before the application window appears. Did it generate an error report in a file named hs_err_pid*.log? I have currently no access to my non-AVX computer, and maybe some AVX instructions were accidentally inserted in the SSE codepath.1

I'm going to release a debug version with detailed logging to help diagnose these problems.

edit:
1 I made the assumption that your CPU is not AVX-capable from one of your earlier comments. If it is, then something else is causing the crash.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on September 03, 2014, 04:40:42 PM
No error file is created at least in the same directories as the executables...


Title: Re: Mandel Machine
Post by: Botond Kósa on September 03, 2014, 06:02:02 PM
I have uploaded a new, restructured 7z package for version 1.2.6. It allows more control over how the application is launched. The jar containing the Java classes is extracted from the MandelMachine.exe file and placed in a separate mm.jar. The exe file is just a launcher now. A cmd file is also included that launches java.exe with mm.jar and displays the log in a console window. The cmd can be edited to redirect the standard output to a file (by appending '> filename' to the end) or to specify an exact path to java.exe.


Title: Re: Mandel Machine
Post by: Botond Kósa on September 03, 2014, 08:41:24 PM
I found the cause for the crash in v1.2.6: since the last published version I switched from Visual C++ 2010 to 2013, so the msvcr100.dll runtime had to be replaced by msvcr120.dll in the installer. With Visual Studio installed on my computer, I could run the program without the separate dll, so this dependecy remained unnoticed.

I uploaded the new 7z package, hope it works for everyone.


Title: Re: Mandel Machine
Post by: stardust4ever on September 03, 2014, 09:15:55 PM
I'm still having issues with the application crashing when using the scroll wheel on the mouse to zoom in and out. I believe what is happening is when rolling the scroll wheel in or out multiple clicks, the image starts to render, then the render process is interrupted by successive wheel increments, causing the application to crash. I'm glad you disabled adjusting the settings during render in version 1.2.6; this will prevent a lot of hangs.

However, I'm almost scared to use the scroll wheel to zoom in and out now, because I'm afraid I will crash the app and lose my progress. I think I crashed the app three times in a couple minutes trying to zoom in/out with the scroll wheel. Scrolling is far more intuitive and easier than creating a bounding box with the mouse and clicking to zoom in and out so I hope you get this fixed.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on September 04, 2014, 09:44:43 AM
Thanks, now it works :)
Nice to see that its now solving glitches in previously unbelievable speed!  :o

Attached location makes SA crash though.


Title: Version 1.2.7 beta is available
Post by: Botond Kósa on September 05, 2014, 03:19:23 AM
I have corrected some of the recently discovered bugs and uploaded a new version.
List of changes: http://web.t-online.hu/kbotond/mandelmachine/#changelog (http://web.t-online.hu/kbotond/mandelmachine/#changelog)


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on September 05, 2014, 03:07:44 PM
Thanks.
You are close now to make a final release :)

The location I posted still breaks the approximation unfortunately.
Or fortunately, since you have a stress location to test with :)

I tested it against some of the locations in the gallery I have on my site.
MM is 2-10 times faster than KF for most locations.
But for some location, KF is actually faster than MM, e.g. "candy".
The reason is that KF is able to approximate much more iterations - for the same number of approximation terms.

You wrote that you were able to speed up the calculation of approximation with 65%, I wonder what you did to do that?
Are you "caching" the alignment/normalization of your version of "fixedfloat"? Because I think that is a big reason why it is much more than twice slower than ordinary double (which I think it should be in theory). But that might also be a reason why precision may be limited.

I will hopefully upload my latest code in a few days, if that can give you some tips on how I calculate of approximation.


Title: Re: Mandel Machine
Post by: Botond Kósa on September 05, 2014, 04:26:21 PM
Your latest location breaking and the speedup of SA are actually closely related.

Previously I was using two ASFloat objects (each with a double precision mantissa and and integer exponent) for the re and im parts of an ASComplex type. Profiling revealed that the performance bottleneck was the addition of two ASFloats (both ASComplex addition and ASComplex multiplication require 2 ASFloat additions). Before performing the addition, the two ASFloats had to be adjusted to have equal exponents (meaning the smaller exponent was set to equal the larger, and its mantissa was rescaled accordingly).

I had an idea that complex numbers could be represented with two mantissas (re and im) and a shared exponent. This way, adding two complex numbers requires only one rescale operation. Even better, multiplying two complexes requires no rescale at all, because (a+bi)(c+di) = (ac-bd)+(bc+ad)i, and the terms ac, bd, bc and ad have equal exponents. This is how my new ASComplex2 type works.

ASComplex2 was introduced in Mandel Machine in two steps:
  • In version 1.2.3, the calculation of SA coefficients was switched to use ASComplex2. This resulted in an up to 5x speed improvement for that phase of the rendering. The resulting coefficients were still stored in the old ASComplex format.
  • From version 1.2.5, the coefficients are stored in both ASComplex and ASComplex2. For pixels not in the same row or column as the reference (that is, dx0 and dy0 are not zero), the actual approximation of deltaN is calculated using ASComplex2. If one of them is zero, the regular ASComplex is used. This yields an up to 65% speedup at doing the approximation, which of course is noticeable only when SA can skip enough iterations so that the time to calculate the remaining iterations is comparable to do the approximation itself. The 65% speedup was measured in the tick-tock location at huge resolution (~20000x10000) and 33 SA coefficients.

Unfortunately, ASComplex2 has two shortcomings:
  • When storing numbers whose re and im parts have very different orders of magnitude, the arithmetic operations can potentially have larger rounding errors than ASComplex with two distinct ASFloats. I have not encountered such problems so far, but this needs further testing.
  • Zero re or im values cannot be represented in ASComplex2, because zero has no meaningful exponent. This is why your location breaks SA since version 1.2.3. Zeros could be handled as special cases, but checking the mantissas against zero at every operation would slow them down considerably. In fact, when im=0, all the calculations can be done using real numbers represented in a single ASFloat. I plan to implement this in a future release.

During the initial calculation of the SA coefficients, I normalize them every 16 iterations, just like I did with the old ASComplex type. For some locations, this is not enough and causes the number of skipped iterations to drop to near zero when the number of coefficients exceeds a certain amount. It seems the frequency of the normalization has to be adapted to the magnitude of the coefficients. There is still much work to do in this area.

There is also some room for further speed improvements. ASComplex2 is currently implemented in Java, where rescaling of the mantissas has to be done using floating point multiplications. Using ASM it could be done by integer additions to the exponent parts of the double precision mantissas, since the rescale factor is always an integral power of 2. SSE could also be used to perform many operations (addition, multiplication, rescaling) on the re and im parts simultaneously.


Title: Re: Mandel Machine
Post by: Botond Kósa on September 05, 2014, 04:49:44 PM
Are you "caching" the alignment/normalization of your version of "fixedfloat"? Because I think that is a big reason why it is much more than twice slower than ordinary double (which I think it should be in theory). But that might also be a reason why precision may be limited.

I use a cache of rescale factors that fit into the range of double precision floating point numbers: 2-1022 to 21023. When a mantissa has to be rescaled, the rescale factor is obtained from the cache by using the shifted exponent as the array address. This way no actual floating-point exponentiation is performed.

In fact, I initially thought that any rescale with an exponent not in the [-52, 52] range could be eliminated because double has only 52 significand bits, so adding two doubles whose exponents differ by more than 52 results in the larger one. Unfortunately, this is only true when adding two normalized ASFloats. By performing normalization every 16 iterations only, rescales with an exponent larger than 52 are necessary. So I gradually increased the limit from 52 to 80, then 100, 200, and so on, from version to version, as more and more problematic locations were found by Dinkydau and stardust4ever. This fixed those particular locations, but slowed down the calculation of the previously unproblematic ones a bit. I know this is quite a silly approach to it, but so far I had no time and patience to analyze the problem numerically and come up with a reliable solution.  ::)


Title: Re: Mandel Machine
Post by: stardust4ever on September 05, 2014, 11:39:26 PM
Just wanted to say that the automatic glitch solving in 1.2.7 is awesome. Also as far as I can tell, it appears the scroll wheel crashing I mentioned a few posts earlier has been fixed. Thank you.

However, you claim that huge renders up to nearly a half gigapixel (23000x23000) can be realized, but I keep getting an error where Mandelbrot turns gray and freezes as I approach 16000x16000. I can successfully render at 15875x15875, but it hangs consistently at resolutions of 15900x15900 or greater. I understand bitmaps go corrupt at somewhere larger than 23040x23040 ((360x64)^2 is just shy of .5 binary Gigapixels but larger than 500 decimal megapixels, and mathematically it is a nice round number (small prime factors less than or equal to 5) to use) but I'm unable to render up to the 23000x23000 resolution you advertised.

In the bottom right hand corner of the window, I see the text 2591M / 3073M / 3911M. I'm not sure what that means but it appears Windows, Java or something is not allocating enough memory to Mandel Machine. I recently upgraded to 16Gb (8Gb x 2) of 1866Mhz DDR3 Raedon dual channel memory from previously old 8Gb (2Gb x 4) DDR3 1333, and have configured my system in BIOS to run the new RAM at rated speed. (My CPU is AMD FX processor, 8 core bulldozer, @4.2Ghz, Windows 7 64-bit Pro). Not sure why Mandel Machine is not getting allocated the memory it needs but I see no reason why I shouldn't be able to allocate more than 3991Mb. Is there some settings in Windows 7 or Java that needs to be adjusted? Worse, if I increase the resolution beyond the threshold, the application just hangs indefinitely. Currently Windows 7 Task Manager says I have a little over 10 Gb memory available so why can't Mandel Machine use more of it? EDIT: I closed Mandel Machine and it jumped up to 13Gb available.

Parameter (MMF):
Code:
image.width=15875
image.height=15875
image.supersampling=0
position.re=-0.7500000
position.im=0.0000000
position.magnification=1.25
position.rotation=0.0
computation.iteration_limit=1000
rendering.computed_only=false
rendering.inner_color=000000
rendering.outer_color=dddd00
rendering.empty_color_1=ffffff
rendering.empty_color_2=e0e0e0
rendering.transfer_function=1
rendering.color_density=0
rendering.dwell_bands=0
rendering.de_transfer_function=0
rendering.de_color_density=0
rendering.palette=0.0,0,7,100,0.15625,32,107,203,0.41015625,237,255,255,0.62744140625,255,170,0,0.83740234375,50,2,0
rendering.color_offset=0


Title: Re: Mandel Machine
Post by: stardust4ever on September 06, 2014, 12:04:05 AM
Thanks, now it works :)
Nice to see that its now solving glitches in previously unbelievable speed!  :o

Attached location makes SA crash though.
Looks fine by me, second attempt to open worked for some reason. If not, zoom out and back in.


Title: Re: Mandel Machine
Post by: Botond Kósa on September 06, 2014, 12:31:27 AM
The numbers in the lower right corner describe the actual RAM usage of the application. The smallest one is the actually used amount, the middle number is the allocated, and the largest number is maximum allocable amount of RAM in megabytes.

When Mandel Machine is started, the maximum amount of RAM allocable by the JVM is set to 4400 MB. This proved to be enough in some old version, but since then I made a few changes and forgot to adjust the limit. These are the two major changes that affect the RAM usage of the application (both introduced in version 1.2):
  • The previously bundled Oracle JRockit 1.6 JVM was dropped from the distribution package. MM now searches for a preinstalled JVM of appropriate version. JRockit could allocate the whole 4400 MB, but newer 1.7 HotSpot JVMs can only allocate up to ~3900 MB when a 4400 MB limit is specified.
  • The storage of iteration data was changed from float to double, increasing the memory footprint of the image from 8 to 12 bytes per pixel. This was necessary because the granularity of floats became visible in locations with slowly changing gradients and very high iteration counts (millions).

There are other memory-consuming new features as well, e.g. glitch correction. So the limit of 4400 MB will have to be raised in a future version. Until then you can manually change it in the recently provided mm_start.cmd file. I also have 16 GB and could render a 23000x23000 image successfully by specifying -Xmx10000m instead of -Xmx4400m. You will have to start the application with the cmd, not the exe.


Title: Re: Mandel Machine
Post by: stardust4ever on September 06, 2014, 01:37:57 AM
There are other memory-consuming new features as well, e.g. glitch correction. So the limit of 4400 MB will have to be raised in a future version. Until then you can manually change it in the recently provided mm_start.cmd file. I also have 16 GB and could render a 23000x23000 image successfully by specifying -Xmx10240m instead of -Xmx4400m. You will have to start the application with the cmd, not the exe.
LOL, I loathe using the command line. I may just make a *.bat file to click on to unlock that extra RAM whenever I want to do "Hue Jazz" style renders.

EDIT: It worked, thanks! Editing the CMD file didn't do anything but I placed the following line in a *.bat file and dumped it in the MandelMachine folder and it worked. (Not recommended unless you have 16Gb or more of RAM) Now I can render flawlessly at 23040x23040! :tool:
Code:
java -showversion -Xmx12288m -jar mm.jar

Does anything bad happen if I exceed .5 gigapixel? :devil:

EDIT: Answered my own question. Mandel Machine blocks you from exceeding 536 megapixel. That's probably a good thing.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on September 06, 2014, 12:20:13 PM
Before performing the addition, the two ASFloats had to be adjusted to have equal exponents (meaning the smaller exponent was set to equal the larger, and its mantissa was rescaled accordingly).
When I do addition in floatexp, I only change the exponent part in the mantissa of the smaller object. I don't manipulate the mantissa with any double arithmetic...

Code:
	static __inline double setExp(double newval,__int64 newexp)
{
*((__int64*)&newval) = (*((__int64*)&newval) & 0x800FFFFFFFFFFFFF) | ((newexp+1023)<<52);
return newval;
}
__inline floatexp operator +(const floatexp &a)
{
floatexp r;
__int64 diff;
if(exp>a.exp){
diff = exp-a.exp;
r.exp = exp;
if(diff>MAX_PREC)
// If the smaller term is too small, ignore it.
r.val=val;
else{
// Scale the smaller term and do the addition.
double aval = setExp(a.val,-diff);
r.val = val+aval;
}
}
else{
diff = a.exp-exp;
r.exp = a.exp;
if(diff>MAX_PREC)
r.val=a.val;
else{
double aval = setExp(val,-diff);
r.val = a.val+aval;
}
}
_ALIGN_(r.val,r.exp)
return r;
}


Title: Re: Mandel Machine
Post by: Botond Kósa on September 07, 2014, 09:31:18 PM
When I do addition in floatexp, I only change the exponent part in the mantissa of the smaller object. I don't manipulate the mantissa with any double arithmetic...

I tried exactly the same, but it did not result in a significant speedup. Maybe because replacing a floating-point multiplication by an integer addition only saves a few clock cycles per floatexp addition. The nested IF constructs cost much more, especially in the case of a branch misprediction.


Title: Re: Mandel Machine
Post by: stardust4ever on September 07, 2014, 10:07:44 PM
I tried exactly the same, but it did not result in a significant speedup. Maybe because replacing a floating-point multiplication by an integer addition only saves a few clock cycles per floatexp addition. The nested IF constructs cost much more, especially in the case of a branch misprediction.
This sounds like one of those things where performance between integer vs float could change between processor architectures: for instance Intel hyper-threading cores versus AMD shared FPUs. You might get more or less speedup depending on processor design.


Title: Version 1.2.8 beta is available
Post by: Botond Kósa on September 09, 2014, 10:01:14 AM
A new beta is available. It contains some bug fixes and performance improvements.
List of changes: http://web.t-online.hu/kbotond/mandelmachine/#changelog (http://web.t-online.hu/kbotond/mandelmachine/#changelog)


Title: Re: Mandel Machine
Post by: stardust4ever on September 09, 2014, 12:30:17 PM
Glad to see you have improved AVX implementation. I'm not entirely sure how many pixel groupings AMD Bulldozer/Piledriver cores can handle atm. My 8-core Desktop and 4-core laptop (both AMD) give a very slight margin at 12 over 16, only a couple percent on the benchmark.

Can't update to 1.2.8 yet as I've got a render on the backburner. 6679 zooms!  :o

One thing I notice while zooming in, is that most frames appear nearly instantly when the 1st orbit is completed, but when approaching areas with high density or a highly advanced Julia formation, the process of rendering pixels suddenly slows down by nearly an order of magnitude, then speeds back up after leaving the area or zooming through it. Kind of ironic that the feature I'm trying to render takes longer than the stuff immediately before or after it. And no, it's not one of those "blobby" areas either. Still strange that the complexity of the image or density of iteration data will have a profound impact on render speed (orbits are still about the same at this depth and iteration count though).

Food for thought, at 6679 zoom depth and 1,400,000 iteration depth, the orbit by itself takes 30-40 seconds. It can still get slow zooming in. Turn glitch correction off or waitfor the image to completely render as you can cause the application to crash if you attempt to zoom in during a second or subsequent orbit calculation.  Most areas you can turn glitch correction off and you have a pretty good idea the centroid is in the center of the black circle thingy. On my big monitor, I haverage about a little over 5 zooms per frame advance, manually drawing tiny rectangles. I still have to wait 30-40 seconds between zooms though for the orbits to complete. It is still possible to crash with the scroll wheel in version 1.2.7, but occurs less frequently, so the bug isn't 100% fixed.

Still awesome that I can zoom incredibly deep though. I've got an "X of Xs of Xs of Xs" formation that I will be posting online soon! ;D


Title: Re: Mandel Machine
Post by: Botond Kósa on September 09, 2014, 01:39:36 PM
I'm not entirely sure how many pixel groupings AMD Bulldozer/Piledriver cores can handle atm. My 8-core Desktop and 4-core laptop (both AMD) give a very slight margin at 12 over 16, only a couple percent on the benchmark.
In the AMD Bulldozer architecture each processor module includes two CPU cores and one shared FPU (your 8-core CPU has only 4 FPUs). Inside a module, the two CPU cores already saturate the execution units of the shared FPU at a pixel grouping of 12, so going to 16 results in no further speed improvement. (Btw, the situation is the same on Intel CPUs with HyperThreading.)

Even worse, the Bulldozer modules have only two 128-bit FPU pipelines that can be unified into one 256-bit unit when running AVX code, so theoretically their performance under SSE2 and AVX is the same. By comparison, Intel processors have two 256-bit wide FPU pipelines per core. One Sandy Bridge or newer core has the same floating point throughput as 4 Bulldozer cores under AVX workloads. For more details and measurements see this article at AnandTech: http://www.anandtech.com/show/7711/floating-point-peak-performance-of-kaveri-and-other-recent-amd-and-intel-chips (http://www.anandtech.com/show/7711/floating-point-peak-performance-of-kaveri-and-other-recent-amd-and-intel-chips)


Title: Re: Mandel Machine
Post by: Botond Kósa on September 09, 2014, 01:47:07 PM
ne thing I notice while zooming in, is that most frames appear nearly instantly when the 1st orbit is completed, but when approaching areas with high density or a highly advanced Julia formation, the process of rendering pixels suddenly slows down by nearly an order of magnitude, then speeds back up after leaving the area or zooming through it. Kind of ironic that the feature I'm trying to render takes longer than the stuff immediately before or after it. And no, it's not one of those "blobby" areas either. Still strange that the complexity of the image or density of iteration data will have a profound impact on render speed (orbits are still about the same at this depth and iteration count though).
The reason for this lies in the efficacy of series approximation, which is best in sparse, boring areas, lower at embedded Julias, and lowest at Minibrots. When you approach a complex embedded Julia formation, the average iteration count per pixel grows at an ever increasing rate, but the number of iterations skipped by SA remains constant. If SA could skip 99% of the iterations previously, and only 90% at the Julia, this means a 10x increase of the calculated iterations in spite of only 10% increase of the average iteration counts. After leaving the Julia, the skipped iteration count "catches up", almost reaching the previously seen level (99% in our example).

When rendering complex locations (embedded Julias or Minibrots), you can try to increase the SA coefficients count in the Computation box. According to my measurements each step up in SA coefficients (5 to 9, 9 to 17 etc) decreases the actually computed iterations by 30-50%. Be aware though that there is a bug in SA coefficients calculation that can cause the skipped iterations to drop suddenly when reaching a certain amount of coefficients. This happens quite often when using 129 coefficients, and rarely at 65. Using 33 or less is generally unproblematic.


Title: Re: Mandel Machine
Post by: Botond Kósa on September 09, 2014, 02:14:04 PM
One more thing to keep in mind: when calculating with long double (80-bit extended) precision, no SIMD instructions can be used. So it is best to avoid extended precision by allowing SA to skip enough iterations so that the coordinates of the orbit fit in the range of ordinary doubles. If you run the application with logging enabled (from the command line or the provided cmd file), search for the line that begins with "Reference orbit min value...". There are some other factors that affect the data type used, but as a rule of thumb, if the exponent of the min value is greater than -600, doubles can be used instead of long doubles. And if it is greater than -70, single precision floats can be used instead of doubles, potentially resulting in a further 2x speed bump (~1.2-1.5 in practice).

The used data type can vary from pixel to pixel. You can see the distribution of the used data types on a per-pixel basis in the Statistics box.


Title: Re: Mandel Machine
Post by: stardust4ever on September 10, 2014, 05:45:03 AM
In the AMD Bulldozer architecture each processor module includes two CPU cores and one shared FPU (your 8-core CPU has only 4 FPUs). Inside a module, the two CPU cores already saturate the execution units of the shared FPU at a pixel grouping of 12, so going to 16 results in no further speed improvement. (Btw, the situation is the same on Intel CPUs with HyperThreading.)

Even worse, the Bulldozer modules have only two 128-bit FPU pipelines that can be unified into one 256-bit unit when running AVX code, so theoretically their performance under SSE2 and AVX is the same. By comparison, Intel processors have two 256-bit wide FPU pipelines per core. One Sandy Bridge or newer core has the same floating point throughput as 4 Bulldozer cores under AVX workloads. For more details and measurements see this article at AnandTech: http://www.anandtech.com/show/7711/floating-point-peak-performance-of-kaveri-and-other-recent-amd-and-intel-chips (http://www.anandtech.com/show/7711/floating-point-peak-performance-of-kaveri-and-other-recent-amd-and-intel-chips)
So same old, same old about the Intel CPUs getting more operations done per core per clock. I miss the good old days of Athlon XP kicking P4's butt with cheaper CPU that got more work done running at lower clock cycles. But at least we have AMD to thank for the x86-64 architecture which was far superior to Intel's obsolete IA64 offering... :tongue1:

Guess I'm just a fanboy for the underdogs. I like AMD, Pepsi, and Nintendo while everybody else is doing Intel, Coke, and MS/Sony...  ;D

I read some more info on Wikipedia about some new operations being added to x86-64 instruction sets in upcoming processor models by AMD and Intel, which are specifically targeting bignum arithmetic (mainly for cryptography and academic/scientific use but it should work for fractal rendering too). Future looks promising although I'm not entirely sold on the idea of integrated ALUs (CPU + GPU) for desktop processors, although the concept works great for mobile. Less opportunity for customization, ie the option to buy as much or as little CPU and GPU as you want.


Title: Version 1.2.9 beta is available
Post by: Botond Kósa on September 10, 2014, 10:13:25 AM
Another small update containing bugfixes. Palette extracted from an image is finally saved correctly in the .mmf file.


Title: Re: Version 1.2.9 beta is available
Post by: stardust4ever on September 11, 2014, 07:06:56 AM
Another small update containing bugfixes. Palette extracted from an image is finally saved correctly in the .mmf file.
I set the color cycling to 201 in one of my renders and saved it. When I opened the file, it went back to 200. I manually edited the mmf file in notepad to say -201. when I opened the file, it still defaulted to 200. It's similar to how 100 will default to 99 when saved and reopened. And yes, I'm running version 1.2.9.

Overall, the glitch correction update is awesome. Thanks for making this. I can't wait untill you get movies working. Also, would it be too much to ask if you could enable the direct import of Kalles Fraktaler palette data? Currently the process of importing color palettes from Kalles Fraktaler is clunky because I have to resave as *.mmf selecting only palette data, then reopen the file on top of a previously loaded fractal. This load operation resets the iteration data and forces a rerender.

I know you have an option to open palette data from PNG files, but I don't know how to use it. Do I just make a custom gradient and save it as PNG using image editing software?


Title: Re: Mandel Machine
Post by: Dinkydau on September 11, 2014, 09:14:22 PM
It's simple to do, although it's kind of a hassle. You can convert a gradient to an image. I use 4096×10 bmp file because SeryZone's software accepts that too (which is useful). To convert a gradient, you can take a screenshot of it and stretch it in photoshop to the resolution you wish. Use bicubic image resizing for the best result.


Title: Re: Mandel Machine
Post by: stardust4ever on September 11, 2014, 09:28:14 PM
It's simple to do, although it's kind of a hassle. You can convert a gradient to an image. I use 4096×10 bmp file because SeryZone's software accepts that too (which is useful). To convert a gradient, you can take a screenshot of it and stretch it in photoshop to the resolution you wish. Use bicubic image resizing for the best result.
I thought it was something like that. It's probably simpler just to create a palette in Kalles Fraktaler and import it into Mandel Machine like I described earlier.


Title: Re: Mandel Machine
Post by: SeryZone on September 12, 2014, 08:07:41 PM
I think that you should to make turning on/off history recording. Maybe, It will reduce RAM usage.


Title: Re: Mandel Machine
Post by: stardust4ever on September 12, 2014, 11:38:59 PM
I think that you should to make turning on/off history recording. Maybe, It will reduce RAM usage.
I'm pretty sure most 64-bit machines now come with at minimum 4 Gigs of RAM. I've got 16 Gbytes on mine, recently upgraded to a dual channel 8Gbx2 1866Mhz kit. The only time Mandel Machine ever sucks more than a Gig or so of RAM is if I'm trying to render ginormous .5Gigapixel images.

And for that I still need to use a .bat file to unlock the extra RAM. Hint for next update.


Title: Re: Mandel Machine
Post by: Botond Kósa on September 13, 2014, 12:47:47 PM
SeryZone is right, there is a severe memory leak in the history function when using a palette that was extracted from an image. Will be fixed in the next release.


Title: Re: Mandel Machine
Post by: SeryZone on September 13, 2014, 06:44:58 PM
=)

Sometimes program is closes automatically (now I have 12gig RAM), when RAM usage is getting more than 4GB. 'Not enough memory!' - and closes =(


Title: Re: Mandel Machine
Post by: stardust4ever on September 13, 2014, 08:56:04 PM
=)

Sometimes program is closes automatically (now I have 12gig RAM), when RAM usage is getting more than 4GB. 'Not enough memory!' - and closes =(
I have not used the "IMG from PNG" Feature personally (a bit clunky, but I import palette data from Kalles Fraktaler parameters).

Place thie Huge.bat file in your Mandel Machine directory. It will let you utilize up to 10 Gigs of memory. I open Mandel Machine with it whenever I want to render huge images.


Title: Re: Mandel Machine
Post by: SeryZone on September 13, 2014, 09:09:41 PM
I have not used the "IMG from PNG" Feature personally (a bit clunky, but I import palette data from Kalles Fraktaler parameters).

Place thie Huge.bat file in your Mandel Machine directory. It will let you utilize up to 10 Gigs of memory. I open Mandel Machine with it whenever I want to render huge images.
I don't need only little images (10240x5760 - is little)! I need infinite iteration limit too. But with perturbation theory RAM usage grow up due to iteration limit. I need 20-30GB RAM 4 rendering my location 2,000,000,000 iterations! This is very hard but... I must to render it! It is beautiful!


Title: Re: Mandel Machine
Post by: stardust4ever on September 13, 2014, 09:23:22 PM
I don't need only little images (10240x5760 - is little)! I need infinite iteration limit too. But with perturbation theory RAM usage grow up due to iteration limit. I need 20-30GB RAM 4 rendering my location 2,000,000,000 iterations! This is very hard but... I must to render it! It is beautiful!
Every little bit helps though. You can edit the BAT manually and specify how many megabytes of RAM Java is allowed to use. Go a bit over what you think you'll need!


Title: Re: Mandel Machine
Post by: SeryZone on September 14, 2014, 12:32:30 PM
Well, for 2,000,000,000 iterations we need array of 2billions. double. We need (8*2B)=16,000,000,000 bytes =  14.901GB RAM for reference! + 10240x5760 image (10240*5760*4 = 225MB) Totally I need maximum 16GB for rendering final minibrot's image. Botond, Why I can't do this???



Sorry =( My idea works with integer, but doesn't works with float numbers =((( Idea was be @Compressing reference@


Title: Re: Mandel Machine
Post by: stardust4ever on September 14, 2014, 04:10:54 PM
Well, for 2,000,000,000 iterations we need array of 2billions. double. We need (8*2B)=16,000,000,000 bytes =  14.901GB RAM for reference! + 10240x5760 image (10240*5760*4 = 225MB) Totally I need maximum 16GB for rendering final minibrot's image. Botond, Why I can't do this???



Sorry =( My idea works with integer, but doesn't works with float numbers =((( Idea was be @Compressing reference@
I'd like to see what you are rendering that takes 2 billion iterations. Good luck rendering whatever it is. Let us know what you find... O0


Title: Re: Mandel Machine
Post by: Botond Kósa on September 14, 2014, 09:16:02 PM
Well, for 2,000,000,000 iterations we need array of 2billions. double. We need (8*2B)=16,000,000,000 bytes =  14.901GB RAM for reference!
You would actually need twice that amount, because the reference has real and imaginary parts, both stored in double precision. But stay tuned, I'm working on a solution that will reduce the memory needs dramatically.  :dink:


Title: Re: Mandel Machine
Post by: stardust4ever on September 14, 2014, 11:30:44 PM
I rarely do areas more than a few millions. Unless you are exploring the minibrots of minibrots the same way you would the main fractal, there is no reason for the iteration loop to range into the billions of iterations. In fact, one of my vids with the highest iteration density was also fairly shallow, at least by modern computing standards:
http://www.fractalforums.com/movies-showcase-%28rate-my-movie%29/sandstone-zoom-into-the-edge-of-the-large-cardioid/


Title: Re: Mandel Machine
Post by: SeryZone on September 15, 2014, 07:38:41 PM
I'd like to see what you are rendering that takes 2 billion iterations. Good luck rendering whatever it is. Let us know what you find... O0
Thank you!
Ha! How I can render it? MM support only 400M iterations and non-stable in RAM usage!


Title: Version 1.2.10 beta is available
Post by: Botond Kósa on September 16, 2014, 10:02:19 AM
A new beta version is available, containing mainly bugfixes. The launcher now starts the JVM with a maximum heap size determined by the amount of free RAM in the system.
Full list of changes: http://web.t-online.hu/kbotond/mandelmachine/#changelog (http://web.t-online.hu/kbotond/mandelmachine/#changelog)


Title: Re: Mandel Machine
Post by: SeryZone on September 18, 2014, 07:40:01 AM
Very nice, Botond! Thank you!
P.s. What about deep zooming as mouse wheel? Mouse wheel do 1 zoom/sec. Double click 2zooms/second. Can you make deeper zoom using mouse???


Title: Re: Mandel Machine
Post by: stardust4ever on September 18, 2014, 08:03:39 AM
Very nice, Botond! Thank you!
P.s. What about deep zooming as mouse wheel? Mouse wheel do 1 zoom/sec. Double click 2zooms/second. Can you make deeper zoom using mouse???
Mouse scrolling is pretty darn efficient but I've gotten used to not using it because previous versions of MM crashed with multiple scrolls during orbit calculator. Once you get past a couple thousand zoom levels, assuming smallish resolutions like 640 or 800 pixels for previewing the fractal, the limiting factor becomes not rendering the image but the orbital.

At this point, it becomes more efficient to increment the scroll by drawing tiny rectagles. I turn off glitch fixing unless I've got a complex Julia that really need enabled it to find the centroid of the image. On my desktop with large monitor, I can average about 5 zooms per click by drawing tiny rectangles. This is a far cry from the 1 zoom per click the scroll wheel gets you. 4 or  8x (2or 3 zooms) would make a balanced option for scrolling inwards, like the menu in Kalles Fraktaler.

Also I have a small request. Since you don't have a dedicated palette maker, can you support the import of Kalles Fraktaler palette files directly? Well then again I can screenshot palette makers of other soft like Fractal Extreme and crop in the thinly bar of palette data using a photo editor like Paint or GIMP. Fractal Extreme does bars of Palette data rather than smoothe transition though so I might need to apply a Gaussian blur effect on the bar to reduce posturization effects. I'll have to experiment more.


Title: Re: Mandel Machine
Post by: SeryZone on September 26, 2014, 06:41:20 AM
Botond, why glitch-correction can't guess mini-brot? I wait 5 minutes for glitch and 38 hours for it's correction! Please, enable guessing!


Title: Re: Mandel Machine
Post by: Botond Kósa on September 26, 2014, 10:14:50 PM
Botond, why glitch-correction can't guess mini-brot? I wait 5 minutes for glitch and 38 hours for it's correction! Please, enable guessing!

Good point, it will be included in a future release.


Title: Re: Mandel Machine
Post by: SeryZone on September 28, 2014, 08:57:45 PM
Please, make also zooming (using rectangle) without double-click!


Title: Version 1.3 is available
Post by: Botond Kósa on September 30, 2014, 12:24:49 PM
This is a small update, but an important one as it enables Mandel Machine to come out of beta status.
Changes:
  • A time limit can be set in the new Settings box (at the very bottom of the scrollable vertical controls), and if the computing time of the image exceeds the limit, the computed iteration values are saved in history, so the image will not have to be recalculated when returning to that state later.
  • Mouse navigation parameters can also be modified in the Settings box.
  • The settings are saved on every change, and loaded on each startup.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on September 30, 2014, 02:41:26 PM
It is great!

The attached location breaks the series approximation, however the other locations I have on the x-axis (i.e. im=0) are working without problems.


Title: Re: Mandel Machine
Post by: SeryZone on September 30, 2014, 02:53:47 PM
Dear Botond! Thank you so much!


Title: Version 1.3.1 is available
Post by: Botond Kósa on October 01, 2014, 10:19:04 AM
A small update is available, addressing bugs introduced by the saving of iteration data in history. It was corrupted when the iteration span was larger than one million, and the process of saving and loading was sloooow :snore:


Title: Re: Mandel Machine
Post by: simon.snake on October 02, 2014, 12:00:17 AM
Tried the version posted just before this slight update and it's fast, and so far has not crashed.

Well done Botond, I'm really glad you're out of beta.


Title: Re: Mandel Machine
Post by: Kalles Fraktaler on October 02, 2014, 12:31:44 PM
Here is another tricky location.

The problem is that series approximation need to have a very low tolerance or the upper right corner will be rendered incorrectly.
In Kalles Fraktaler it is rendered with extra, good looking though however incorrect, spirals.
In Mandel Machine there are some stains around the spirals.

I have encountered this kind of situation before, and therefore I added the checkbox "Approximation low tolerance" in the "Iterations" dialog of KF - this checkbox is checked per default, and then it is solved.
This often results in somewhat less iterations to be able to be skipped by series approximation, and since it is a very rare situation I made it possible to disable the low tolerance.

The previous location was rendered correctly in MM though, however this new one is not...

My thresholds is 0.00001 for low tolerance, and 0.001 for not.
But I believe we are handling the series approximation differently so it might not be relevant.


Title: Re: Mandel Machine
Post by: Botond Kósa on October 02, 2014, 04:58:29 PM
The stains in MM are caused by the usage of single-precision floats in this location. The image is rendered correctly after unchecking "Use lower scale data types" in the Computation toolbox. It seems that the limited precision or range of floats sometimes results in glitches that are not detected by Pauldelbrot's method.


Title: Re: Mandel Machine
Post by: claude on October 02, 2014, 06:58:44 PM
I wanted to try this but it seems that installing wine64 on GNU/Linux Debian Stable isn't easy (I didn't fancy upgrading to Testing today) :(

Anyway, here's a vote (not that it counts for much given the above) for the distance estimate feature.  Equation (8) in my http://mathr.co.uk/mandelbrot/perturbation.pdf can be used to find the initial point for interior distance estimates too, example image: http://mathr.co.uk/mandelbrot/perturbation.jpg


Title: Re: Mandel Machine
Post by: SeryZone on October 03, 2014, 07:53:25 PM
I can't render large images. For example, 8760x4320, 4xAA. Program is 'ready' everytime, but I can't do something! It hangs out and... And all! Why?


Title: Re: Mandel Machine
Post by: stardust4ever on October 03, 2014, 11:54:48 PM
I can't render large images. For example, 8760x4320, 4xAA. Program is 'ready' everytime, but I can't do something! It hangs out and... And all! Why?
Your image is 8760 x 4320 x 4 x 4 = 605491200 pixels. Mandel Machine has a hard limit set at 536 megapixels (maximum resolution for bitmap; PNG I think can be larger) or more precisely, images must be less than 2^29 pixel count.

Also I would like to see intermediate options for 3x3, 6x6, and 12x12 antialias. Sometimes you need extra pixels, but not 4x as much. Also this would help render larger images with quality antialias settings. Seryzone's case would fit under 536 megapixels with 3x3 antialias, and the image quality would be 2.25x smoother (less noise) than using 2x2 AA.

Myself, I render at huge resolutions compared to the target and scale down by integer ratios using bilinear filtering in GIMP. I get a massively detailed PNG where I can see finer albeit noisy details, which scales quite well to a poster sized printable resolution.

For instance, render a 4x3 aspect scene @25600x19200 (491 megapixels). Save as PNG. Open in GIMP. Scale to 25% or 6400x4800 using bilinear (IMO bilinear is ideal for fractal data if kept to integer ratios and compresses to PNG with slightly better efficacy than bicubic - use bicubic for photo data or non-integer ratio resizing). End result is a 6400x4800 poster render with high quality 4x4 antialias. Perfect for printing and you can still scale the source further to 3200x2400 (8x8 AA) for web upload.

Word of caution when working with gigantic images, make sure you have at least 8GB or RAM and keep only one application open at a time. A 32-bit 23040x23040 PNG image can take 2 gigs to open in RAM. Close Mandel Machine before you open the huge PNG image in GIMP, and do not preload it in Windows photo preview. Also best to disable thumbnail view in whatever folder where you are storing the huge PNGs. Having a ~500 MP render still open in Mandel Machine, click to preview, then open with GIMP, was too much for my 8Gb Windows 8.1 laptop which started to thrash my harddrive cache because I used up all the available RAM.

That was enough that I finally upgraded my 8-core AMD desktop to a 16Gb kit Raedon 1866 Memory dual channel pair (8Gb x2 DIMM). Very nice fast RAM but you still have to tweak the timings a bit in BIOS to maximize performance.


Title: Re: Mandel Machine
Post by: SeryZone on October 04, 2014, 07:17:36 PM
I don't care! I render images less than 500MP but program hangs out! And I render 16:9 images. And memory works on a limit!


Title: Re: Mandel Machine
Post by: stardust4ever on October 05, 2014, 12:42:14 AM
I don't care! I render images less than 500MP but program hangs out! And I render 16:9 images. And memory works on a limit!
For 16x9, try 30720x17280. This is 1920x1080 aspect ratio multiplied by 16 and comes out to 530 megapixels.

The memory hole is fixed now. MandelMachine bases it's memory footprint based on the amount of available RAM.

How many Gigabytes do you have on your PC? 8Gb? 16Gb? If you're running low, consider buying a 16Gb dual channel kit (or a 24 Gb triple channel kit if using an Intel i-series processor) yes, RAM = expensive, but if you need more, you need more. I have no regrets spending $170 upgrading my AMD rig with the dual channel 1866Mhz Raedon 16Gb kit. That should tide me over for a couple more years, which thanks to perturbation theory it doesn't take days, weeks, or months to render stuff anymore.

You can also use a BAT file to manually specify the amount of RAM Mandel Machine can use. Go a bit over what you have installed because Mandel Machine doesn't necessarily use all of it. If Windows is bloating too much, try booting into safe mode. That should free a tiny bit more memory up for Mandel Machine. But if Mandel Machine starts caching and thrashing your hard drive, you'll need to either install more memory or render smaller sizes.


Title: Re: Mandel Machine
Post by: 3dickulus on October 05, 2014, 12:58:55 AM
Could an image be rendered in pieces and reassembled eg: 16x16 chunks for 30720x17280 is one 1920x1080 chunk at a time thus removing at least the constraint of having reference data, iteration data and image data in memory all at once and just having reference data, iteration data and one chunk of image data in memory... or perhaps a "Render to Disk File" option?


Title: Re: Mandel Machine
Post by: SeryZone on October 05, 2014, 09:49:27 AM
LAPTOP:
Intel Processor (4-core + 4 virtual cores = 8 cores) i5, support avx2.0
8GB RAM
1920x1080 screen
HDD
Windows 7
---------------------------------------------------------------------------------------------------------------------------------------------------------->
Personal Computer:
AMD FX8350, 8-Core, 4.0GHz (4.2 in Turbo Mode), support AVX, SSE, 3dNow! Doesn't support only AVX 2.0
12 GB RAM
1920x1080
SSD
Windows 7

Both computers is CAPABLE for using Mandel Machine.


Title: Re: Mandel Machine
Post by: stardust4ever on October 05, 2014, 04:48:35 PM
LAPTOP:
Intel Processor (4-core + 4 virtual cores = 8 cores) i5, support avx2.0
8GB RAM
1920x1080 screen
HDD
Windows 7
---------------------------------------------------------------------------------------------------------------------------------------------------------->
Personal Computer:
AMD FX8350, 8-Core, 4.0GHz (4.2 in Turbo Mode), support AVX, SSE, 3dNow! Doesn't support only AVX 2.0
12 GB RAM
1920x1080
SSD
Windows 7

Both computers is CAPABLE for using Mandel Machine.
Yes mine is similar to your desktop. I've got the original FX 8150 permanently overclocked at 4.2Ghz with massive heatsink. I noticed you have 12Gb installed. Are you using matched pairs of RAM? Otherwise your PC may not be able to run in dual channel mode which will reduce performance. Get the updated version of Mandel Machine or make a BAT file to run MM with expanded memory allocation. Then 500+ MP won't cause it to hang anymore.


Title: Re: Mandel Machine
Post by: SeryZone on October 11, 2014, 10:08:11 PM
Hi, stardustforever.

Try to render this in a maximal 16:9 rezolution:
Code:
image.width=640
image.height=360
position.re=-1.27758756259763403598358493296751887263549764875451097943329968584880663728051795081843045368010379413646733171520924017817395729278129531889170765029750388499232992361697618255375789160305163094826233535500658523080242567193751765412629405955459010420590046883742840567082917857046737514453132809464510101274233603883078523670075400185008515000244763144961767531407201475344411644532922581593778111132779777742971089381838162514444952215054507760371922771547917572568812102527507564766767009558597007952832953094012897083367673094530593619523073595404175953921274984391777436305505201391570428601667629201292859758670006414180790777920383111392262597105964229805509522746236540500140668265865883018096338960525250077202040512773902981649859055743288226996474811534897799426701745276003872403863674906847587154778096813639300246475273721014804224829591787689398461699801253690565277613692700516657210162397971660969686461671577751585354791591118332902138451699782481905434507590005170491042215366947412483986910809492898315923197682284333213981206956704651198314902003358197582340451327151276697471107949492874542606209951952152635645761267978955283943341718501172923767781066431514187201136998355403091878316148724575425193096614146572288113563886537099579790570896148621557578948340284642835885540297088080269740682597896375289952720228848484494912917160965977970024012205730464630002566204778356612765061790356964206931000241306278419331577442712440902377174394686606149500832797424964551760656857100793140185951362939574287231992553336954081940581307796609499973132739282527638542616171939786446727504647404276472609376911990153779188599574470599909355381703220819717295462699004572689436286549542382224850458014774000718599863270902177592442216038877535522081552871348778743031101840822884739734736086874098377768306841864136540431052315729246267243806966486031022908082095166734797148881154883981528159540465390768721966551714664837835264690641278202367609620913566149036962034660440575563801128245290498832720023737390875490446826562162904321408597732155267578245449719217236454754218675219434565898691229967014569806302486386329119871361219385018411834973228436656083577851926775633386173137647622717550402278905436289703611787218659155521960214137052181303813451934420580294860108768700305991704458585846555254828802790194467296642711013535625825479425402111410802983255105435120863836869058924638
position.im=0.07536568695782290072012691743253646823135060989710244066292934718821616375020753837974499863618118187301079368927264478945670596259886774084304922214686889833172611919165414859311906916150505392041799193635141444564931462494894957076758596881352718714076720081647874167445458511806733052425760310463610731258886862271409537330045096039233947625137547367733847810351914469077435930266309066536177397871497623212160861027376937988141404431714228116437410848264124277098714982883083798547881447820029052071743038385069346717814999571755332400395729828723069340080429859025764736396249695040717021227983173938892983333316697900193729807216953200405122301796711320807013892993215634139700845098312304432822848771359449819987984396164499310580670617403994871709324632844137401532001214505375389179284156767933970362588347129612322715232278866227926649525601785088758905461754646192417428668093240912258308237863118485162229248194293125819919689038095803720429837466537040811115840628814720138912475192198105424173401140205419731609391782025392670609601302720073713724748996437583852884454888466955408703498131205694494562249255383009222872313829535052485823748684266901870358859707591636466145097811025591337658023865259178479368057029595130117376422712981525840215610694757775549588176618526290217270508412137025972407865141448363723465073368338549387166413786349431710882429544000411964785566510959447400732874472757637627130332534552960381286740417810354033435376938453792241829755461721130778354232197815239563390363925593625862970052137772481064752891936381097633202936829223384978738734878224596274373693342590728769941467962846506306396312558889505715062522307219679482114757469924046320010580254989388018194576208758398896436202833522613299512193500116950632174198230105995402502907130687462509572434057587883794215147398932617068778101482904324223990187122443269031522843080371181556077684996216796089936493437990849888825465919883768413729530933432026767437669120163701488832864764070930984586996585135393029064842339596522372263013754430672607581231224318777184901808512637493918033596847531033002696090844505313978212871749100135974705012310383860909307714395305209772177612532342689301535024682188930812186716080272873404786942227005778359198547512697885604812348247667817954666080867497318614236751826781161731964895857815155446585779654908553494614153998243915025457723622435704321069014243465742
position.magnification=7972.0
position.rotation=0.0
computation.iteration_limit=100000
rendering.computed_only=false
rendering.inner_color=000000
rendering.outer_color=dddd00
rendering.empty_color_1=ffffff
rendering.empty_color_2=e0e0e0
rendering.transfer_function=8
rendering.color_density=-14
rendering.dwell_bands=0
rendering.de_transfer_function=0
rendering.de_color_density=0
rendering.palette=AAAFxHja7duxccQwFENBqv+iqRYUcEgR2E09duBE70N3YwAAAAAAAAAAAAAAAAAAAAAA//X4FwAAAAAAAAAAAAAAAAD38dUoAAAAAAAAAAAAQvhIHAAAAAAAAADk8XkAAAAAAACAYF4GAQAAAAAABPMyCAAAAAAoYAoFAAAAAPJZQgEAAACAAqZQAAAAACoYwgAAAABKGIIAAACghx0AAAAAoIQhCAAAAHrYAQAAAGcQAAAAEMoOAAAAAD3sAAAAgCsIAAAAyGQHAAAAnEEAAACuIAAAAGcQAACAMwgAAEQwAACAMwgAAMAVBAAAKhgAAMAVBACACAQAABUMAADgCgIAABUMAIAIBABABAMAIAIBAACcQQAAIIIBABCBAIAGAAAAFQwAgAgEAAARDACACAQAABUMAGgAAABEIAAAiGAAQAMAACACAQBABQPgEQgAACoYANAAAACIQAAAEMEAgAYAAEAEAgAaAADQAAAAoIIBAA0AAIAIBAA0AACgAQAAEIEAgAYAADQAAACIYADwDAQADQAAACIYABABAIAGAAA0AAAAIhAA0AAAgAYAADQAAKABAAAQgQCABgAANAAAoAEAAA0AAGgAAABEIACgAQAADQAAaAAAQAMAgAYAAI9AAEADAACACgYANAAAoAEAwCMQANAAAIAGAAA0AACgAQAADQAAaAAAAEQgAKABAAANAABoAABAAwAAGgAA0AAAgAYAwDMQANAAAIAGAAAAEQwAaAAA8AwEADQAAKABAAANAABoAABAAwAAGgAA0AAAgAYAAEAEAgAaAADQAACABgAANAAAoAEAwCMQADQAACACAAANAAAAIhgAPAMBAA0AAGgAAEADAAAaAADQAACABgAAQAQCABoAANAAAIAGAAA0AACgAQAAEIEAgAYAADQAAKABAEADAAAgAgEADQAAaAAAQAMAABoAAAARCABoAABAAwAAGgAAAEQwAHgGAgAaAAAARDAAoAEAAA0AAGgAAABEIACgAQAADQAAIAIBAA0AAAAqGADQAACABgAAQAQCABoAAAARCABoAAAAEMEAgAYAAEAEAgAaAAAAVDAAoAEAABCBAIAGAABABAIAoIIBAA0AAIAIBAA0AAAAiGAAAEQgAACoYABAAwAAIAIBAEAEAwAgAgEAQAUDACACAQANAAAAIhgAABEIAAAqGAAAEQgAgAgGAEAEAgAAOIMAAEAEAwAgAgEAQAUDACACAQAAcAYCACACAQBABAMAADiDAAAQgQAAAK4gAABQwQAAAK4gAADAGQQAAOAKAgAAFQwAAOAKAgAAcAYBAAC4ggAAAICj7AAAAIAzCAAAwBUEAAAABLADAAAAziAAAAAglB0AAAAAetgBAAAAZxAAAAAQyg4AAAAAUMIQBAAAAD3sAAAAAAAlDEEAAAAAVDCEAQAAAJQwBAEAAADQwRIGAAAAAOSzhAIAAAAABUyhAAAAAEA+SygAAAAAAOls4QAAAAAAAMTyMgwAAAAAAAAI5XUoAAAAAAAAAIG8DgcAAAAAAAAACOMDIQAAAAAAAAAAAADA5XwsGgAAAAAAAAAAAAAAAAAAbuHbwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHw1V/5kjpW/M/f8sf1eY0cK9gAABcR42u3cQY7EIBAEQfz/R8MbLCEEVRHX1exhLp3dtmYMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArvH5CgAAAAAAAAAAAAAAAAAAAADu5gciAAAAAAAAAAAAAAB4mffiAQAAAAAAAAAACOGVOAAAAAAAAAAAsngjBgAAAAAAAMjkaSgAAAAAAACk8jQQAAAAAACAXJ6GAQAAAAAQzikcAAAAAACyeRYAAAAAABRwCgUAAAAA8rmEAgAAAAAFnEIBAAAA6OASBgAAAFDCIQgAAACghEMQAAAAABUcwgAAAKCHOwAAAABACYcgAAAA6OEOAAAAgD0YAAAASOQOAAAAAD3cAQAAAKCHOwAAAGALAgAAADK5AwAAANYgAAAAWxAAAAAQwB0AAACwBgEAANiCAAAArEEAAAC2IAAAAKyBAAAA1iAAAABbEAAAIhAAAMAaBAAAgDUQAAARCAAAYAsCAAAVDAAA2IIAABCBAAAAWAMBABCBAACgggEAAGxBAACIQAAAUMEAAIhAAABQwQAAiEAAAACsgQAAiEAAABDBAACIQAAAUMEAACIQANAAAACIQAAAEMEAAKCCAQAQgQAAIIIBABCBAIAGAABABAIAgAoGAAARDABmIAAAiGAAAEQgAKABAABABQMAiEAAQAMAAIAIBgA0AAAAIhAA0AAAAKCCAcAIBAAAFQwAgAgEADQAAKABAABABAMAGgAAABEIAGgAAABQwQBgBAIAGgAAABUMAGgAAEADAAAgAgEADQAAACIYAMxAAEADAAAaAAAAVDAAoAEAAA0AAIAIBAA0AACgAQAADQAAgAgEADQAAKABAAANAAAgAgEADQAAaAAAQAMAABoAAAARCABoAABAAwAAGgAA0AAAACCCAcAMBAA0AACgAQAADQAAaAAAQAMAACACAQANAABoAABAAwCABgAANAAAoAEAAA0AAEYgAACoYABAAwAAGgAA0AAAYAQCABoAANAAAIAGAAA0AACgAQAADQAAgAgEADQAAKABAAANAABoAADQAACABgAANAAAmIEAgAYAADQAAKABAAANAABoAAAARCAAoAEAAA0AAGgAAEADAAAaAADQAACABgAAMxAA0AAAgAYAADQAAGgAAEADAAAaAAAAEQgAaAAAQAMAABoAANAAAIAGAAA0AACgAQDACAQANAAAoAEAAEAFAwAaAACMQABAAwAAGgAA0AAAAKCCAUADAIARCABoAABAAwAAgAoGADQAABiBAACgggEADQAAaAAAAEQgAKABAAANAAAAIhgAzEAAABDBAIAGAABABAIAGgAAABXsKwAADQAAgAgEAAARDABoAAAARCAAAKhgAABEIAAAqGAAQAMAACACAQBABAMAAFiDAAAQgQAAIIIBABCBAACgggEAAFsQAAAiEAAAAGsgAACANQgAABEIAABgCwIAAMAaCAAAAPZgAAAAWxAAAACwjzsAAABgDQIAAABCuQMAAAAAUMEhDAAAAHswAAAAAIRxCAMAAAAACjiFAgAAAAD5XEIBAAAAAEjnFg4AAAAAAEAsD8MAAAAAAAAAAMJ4IQQAAAAAAAAAAAAAgJd5Lx4AAAAAAAAAAAAAAAAAAAD4Ze78yxw7PzPP/LPzFsQvCvYAAAdaeNrt20lu5DAQBEDy/4+mniBAoAgpM+I6GB8atWSx7TEAAAAAAAAAIM/0EQAAAAAAAACRfBsKAAAAQAcvYQAAANDDOwAAAADOYAAAAGcQAAAIwQAACIEAACAFAwCAEAwAgBAIAMgAAIAMAACAEAgAyAAAgAwAAMgAAIAMAGAEAgAyAAAgAwAAMgBgAgIAMgCAEQgAyAAAJiAAIAMAGIEAgAwAgBUAYAICADIAgBEIYAICYAUAgB0IgBUAYAICGIEAgAwAYAICYAUAGIEAJiCAEQiAFQAAyAAAJiCAEQhgAgJYAQBGIIAJCGAEAmAFAJiAAEYggAkIgBUAAMgAAEYggAkIYAQCYAUAGIEAJiCAEQiAFQBgAgIYgQAmIABWAIARCGACAhiBAFgBAIAMAGACAhiBACYgAFYAgBEImIAARiAAIAMAmIAAWAEARiCACQgAyAAARiAAVgCACQgAyAAARiCACQgAyAAARiAAIAMAYAUAmIAAgAwAAMgAAEYgACADAJiAAIAMAADIAACADAAAMgAA2IEAgAwAAMgAAIAMAADIAAAAIAQDgB0IAABCMAAAQiAAAEjBAAAAriAAAABnEAAAgCsIAAAAuOUdAAAAAAAo4CkUAAAAAAAgmC+DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6yfAQAAAAAAAAAAAAAAAAAwJ/440gAAAAAAAAAAADI4HcCAQAAAAAAAAjk63AAAAAAAAAglK9DAQAAAAAAiOXLMAAAAAAA0nkLBwAAAADyeQkFAAAAAAp4CgUAAAAA8nkJBQAAAKCDlzAAAACAEh6CAAAAoId3AAAAAIASHoIAAACgh3cAAAAA6OEdAAAAAHp4BwAAAMAZDAAAgDsQAAAAnMEAAADOIAAAAOCTvAMAAACuIAAAAJyBAAAAziAAAABXEAAAgDMIAADAFQQAAOAMAgAAcAUBAADgDAQAQAgEAABwBgEAALiCAABACgYAAFxBAAAgBQMAALiCAAAQAgEAQAoGAABwBQEAIAQCAIAUDAAA4AoCAAApGAAAIRAAAMAVBAAAUjAAAEIgAAAIwQAAQiAAAIAzCAAAhGAAAIRAAACQggEAQAgGAEAIBAAAKRgAACEQAADAFQQAAFIwAABCIAAASMEAAAiBAAAgBAMAIAQCACAFAwAgBAIAALiCAABACgYAACEYAAAhEAAApGAAAIRAAAAQggEAEAIBAACcQQAAIAQDACAEAgCAFAwAgBAIAADgCgIAQAoGAEAIBAAAwBkIAIAQCAAAQjAAAIAzCAAAIRAAAIRgAAAAZxAAAEIgAAAAzkAAAIRAAAAAVxAAAIAzCAAAhGAAAMAZBAAA4AoCAABwBgEAAOAMBAAAcAUBAAA4gwAAAFxBAAAAziAAAABnEAAAAPCcdwAAAMAVBAAAAGTyDgAAADiDAAAAgFDeAQAAAKCHdwAAAACcwQAAAEAg7wAAAAAAdPASBgAAgDMYAAAAAMJ4CQMAAAAo4SEIAAAAAMjnJRQAAAAAKOApFAAAAADI5yUUAAAAAACy+S4AAAAAAAAgmC+DAAAAAAAAgFC+DgUAAAAAAACAPH4fAAAAAAAAAAAAgBB+JQ4AAAAAAAAAAAAAAAAA4Ef8cSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcNH0EAAAAAEA8L6EAAIAzCAAAhGAAAIRAAEAGAABkAABABgAAZAAAIxAAkAEATEAAIxAAKwDABAQwAgFMQACsAAAjEMAEBMAKQAEAGIEAWAEoAAATEAArAAUAgBWAAgCwAlAAAFgBKAAUAABWAAoAACsABQA6AMAEBB2AAgDACkABgAYAwApAAaAAQAcAYAWgAEADoABABwCYgKADUACgAVAAAFgBoANQAKABUACgAwCwAlAAoAFQAKADUACgAUAHoAAAsAJQAKABQAegAEADoABAB4AGQAGgA0ADoABABwCYgKADUACgAUAHoABAA6AAQAeABkABgA4ADYACAB2AAgANADoABQA6ADQACgB0AGgAFADoABQAaADQASgA0ACgA1AAoAFQAKADQAOgAEAHgAZAAYAOADABfQAAJiAKAHQACgA0AOgAFABoABQA6ADQACgA0AGgAVAA6AAUAGgA0AEoANAAoANQAKABUACgA0ADoABAB4AGQAGADkABgAZAAQBgBYAOQAGABgAdgAIADYACAB0AGgAFADoABQCAFYACAA0AOgAFABoAdAAKAAArAAUAGgAFADoANAAKAAArAAUAOgAFABoAACsABQA6AAUAgBWAAkAD+AgUAABWAAoAdACACQg6AAUAGgAAKwAFAGAEggZAAQBgBaAAALACUAAAWAEoAACsABQAgBEIgBWAAgAwAQGwAlAAAEYgAFYAgAkIYAQCYAUAmIAARiCACQiAFQBgBAIAMgCACQgAMgAAIAMAADIAANiBAAAgBAMAgBQMAADgDAIAAAAA+AQvoQAAAAAAwDFr57+ssfP/rDM/7LwLnDmJ9g==
rendering.color_offset=0

I can't understand, what is going on!


Title: Re: Mandel Machine
Post by: Botond Kósa on October 11, 2014, 10:51:48 PM
Try to render this in a maximal 16:9 rezolution:
Code:
...

I can't understand, what is going on!

My fault, MM tries to calculate reference with precision above 8000 binary digits and freezes. It will be fixed in the next release.


Title: Re: Mandel Machine
Post by: stardust4ever on October 11, 2014, 10:59:04 PM
Hi, stardustforever.

Try to render this in a maximal 16:9 rezolution:
Code:
image.width=640
image.height=360
position.re=-1.27758756259763403598358493296751887263549764875451097943329968584880663728051795081843045368010379413646733171520924017817395729278129531889170765029750388499232992361697618255375789160305163094826233535500658523080242567193751765412629405955459010420590046883742840567082917857046737514453132809464510101274233603883078523670075400185008515000244763144961767531407201475344411644532922581593778111132779777742971089381838162514444952215054507760371922771547917572568812102527507564766767009558597007952832953094012897083367673094530593619523073595404175953921274984391777436305505201391570428601667629201292859758670006414180790777920383111392262597105964229805509522746236540500140668265865883018096338960525250077202040512773902981649859055743288226996474811534897799426701745276003872403863674906847587154778096813639300246475273721014804224829591787689398461699801253690565277613692700516657210162397971660969686461671577751585354791591118332902138451699782481905434507590005170491042215366947412483986910809492898315923197682284333213981206956704651198314902003358197582340451327151276697471107949492874542606209951952152635645761267978955283943341718501172923767781066431514187201136998355403091878316148724575425193096614146572288113563886537099579790570896148621557578948340284642835885540297088080269740682597896375289952720228848484494912917160965977970024012205730464630002566204778356612765061790356964206931000241306278419331577442712440902377174394686606149500832797424964551760656857100793140185951362939574287231992553336954081940581307796609499973132739282527638542616171939786446727504647404276472609376911990153779188599574470599909355381703220819717295462699004572689436286549542382224850458014774000718599863270902177592442216038877535522081552871348778743031101840822884739734736086874098377768306841864136540431052315729246267243806966486031022908082095166734797148881154883981528159540465390768721966551714664837835264690641278202367609620913566149036962034660440575563801128245290498832720023737390875490446826562162904321408597732155267578245449719217236454754218675219434565898691229967014569806302486386329119871361219385018411834973228436656083577851926775633386173137647622717550402278905436289703611787218659155521960214137052181303813451934420580294860108768700305991704458585846555254828802790194467296642711013535625825479425402111410802983255105435120863836869058924638
position.im=0.07536568695782290072012691743253646823135060989710244066292934718821616375020753837974499863618118187301079368927264478945670596259886774084304922214686889833172611919165414859311906916150505392041799193635141444564931462494894957076758596881352718714076720081647874167445458511806733052425760310463610731258886862271409537330045096039233947625137547367733847810351914469077435930266309066536177397871497623212160861027376937988141404431714228116437410848264124277098714982883083798547881447820029052071743038385069346717814999571755332400395729828723069340080429859025764736396249695040717021227983173938892983333316697900193729807216953200405122301796711320807013892993215634139700845098312304432822848771359449819987984396164499310580670617403994871709324632844137401532001214505375389179284156767933970362588347129612322715232278866227926649525601785088758905461754646192417428668093240912258308237863118485162229248194293125819919689038095803720429837466537040811115840628814720138912475192198105424173401140205419731609391782025392670609601302720073713724748996437583852884454888466955408703498131205694494562249255383009222872313829535052485823748684266901870358859707591636466145097811025591337658023865259178479368057029595130117376422712981525840215610694757775549588176618526290217270508412137025972407865141448363723465073368338549387166413786349431710882429544000411964785566510959447400732874472757637627130332534552960381286740417810354033435376938453792241829755461721130778354232197815239563390363925593625862970052137772481064752891936381097633202936829223384978738734878224596274373693342590728769941467962846506306396312558889505715062522307219679482114757469924046320010580254989388018194576208758398896436202833522613299512193500116950632174198230105995402502907130687462509572434057587883794215147398932617068778101482904324223990187122443269031522843080371181556077684996216796089936493437990849888825465919883768413729530933432026767437669120163701488832864764070930984586996585135393029064842339596522372263013754430672607581231224318777184901808512637493918033596847531033002696090844505313978212871749100135974705012310383860909307714395305209772177612532342689301535024682188930812186716080272873404786942227005778359198547512697885604812348247667817954666080867497318614236751826781161731964895857815155446585779654908553494614153998243915025457723622435704321069014243465742
position.magnification=7972.0
position.rotation=0.0
computation.iteration_limit=100000
rendering.computed_only=false
rendering.inner_color=000000
rendering.outer_color=dddd00
rendering.empty_color_1=ffffff
rendering.empty_color_2=e0e0e0
rendering.transfer_function=8
rendering.color_density=-14
rendering.dwell_bands=0
rendering.de_transfer_function=0
rendering.de_color_density=0
rendering.palette=AAAFxHja7duxccQwFENBqv+iqRYUcEgR2E09duBE70N3YwAAAAAAAAAAAAAAAAAAAAAA//X4FwAAAAAAAAAAAAAAAAD38dUoAAAAAAAAAAAAQvhIHAAAAAAAAADk8XkAAAAAAACAYF4GAQAAAAAABPMyCAAAAAAoYAoFAAAAAPJZQgEAAACAAqZQAAAAACoYwgAAAABKGIIAAACghx0AAAAAoIQhCAAAAHrYAQAAAGcQAAAAEMoOAAAAAD3sAAAAgCsIAAAAyGQHAAAAnEEAAACuIAAAAGcQAACAMwgAAEQwAACAMwgAAMAVBAAAKhgAAMAVBACACAQAABUMAADgCgIAABUMAIAIBABABAMAIAIBAACcQQAAIIIBABCBAIAGAAAAFQwAgAgEAAARDACACAQAABUMAGgAAABEIAAAiGAAQAMAACACAQBABQPgEQgAACoYANAAAACIQAAAEMEAgAYAAEAEAgAaAADQAAAAoIIBAA0AAIAIBAA0AACgAQAAEIEAgAYAADQAAACIYADwDAQADQAAACIYABABAIAGAAA0AAAAIhAA0AAAgAYAADQAAKABAAAQgQCABgAANAAAoAEAAA0AAGgAAABEIACgAQAADQAAaAAAQAMAgAYAAI9AAEADAACACgYANAAAoAEAwCMQANAAAIAGAAA0AACgAQAADQAAaAAAAEQgAKABAAANAABoAABAAwAAGgAA0AAAgAYAwDMQANAAAIAGAAAAEQwAaAAA8AwEADQAAKABAAANAABoAABAAwAAGgAA0AAAgAYAAEAEAgAaAADQAACABgAANAAAoAEAwCMQADQAACACAAANAAAAIhgAPAMBAA0AAGgAAEADAAAaAADQAACABgAAQAQCABoAANAAAIAGAAA0AACgAQAAEIEAgAYAADQAAKABAEADAAAgAgEADQAAaAAAQAMAABoAAAARCABoAABAAwAAGgAAAEQwAHgGAgAaAAAARDAAoAEAAA0AAGgAAABEIACgAQAADQAAIAIBAA0AAAAqGADQAACABgAAQAQCABoAAAARCABoAAAAEMEAgAYAAEAEAgAaAAAAVDAAoAEAABCBAIAGAABABAIAoIIBAA0AAIAIBAA0AAAAiGAAAEQgAACoYABAAwAAIAIBAEAEAwAgAgEAQAUDACACAQANAAAAIhgAABEIAAAqGAAAEQgAgAgGAEAEAgAAOIMAAEAEAwAgAgEAQAUDACACAQAAcAYCACACAQBABAMAADiDAAAQgQAAAK4gAABQwQAAAK4gAADAGQQAAOAKAgAAFQwAAOAKAgAAcAYBAAC4ggAAAICj7AAAAIAzCAAAwBUEAAAABLADAAAAziAAAAAglB0AAAAAetgBAAAAZxAAAAAQyg4AAAAAUMIQBAAAAD3sAAAAAAAlDEEAAAAAVDCEAQAAAJQwBAEAAADQwRIGAAAAAOSzhAIAAAAABUyhAAAAAEA+SygAAAAAAOls4QAAAAAAAMTyMgwAAAAAAAAI5XUoAAAAAAAAAIG8DgcAAAAAAAAACOMDIQAAAAAAAAAAAADA5XwsGgAAAAAAAAAAAAAAAAAAbuHbwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHw1V/5kjpW/M/f8sf1eY0cK9gAABcR42u3cQY7EIBAEQfz/R8MbLCEEVRHX1exhLp3dtmYMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArvH5CgAAAAAAAAAAAAAAAAAAAADu5gciAAAAAAAAAAAAAAB4mffiAQAAAAAAAAAACOGVOAAAAAAAAAAAsngjBgAAAAAAAMjkaSgAAAAAAACk8jQQAAAAAACAXJ6GAQAAAAAQzikcAAAAAACyeRYAAAAAABRwCgUAAAAA8rmEAgAAAAAFnEIBAAAA6OASBgAAAFDCIQgAAACghEMQAAAAABUcwgAAAKCHOwAAAABACYcgAAAA6OEOAAAAgD0YAAAASOQOAAAAAD3cAQAAAKCHOwAAAGALAgAAADK5AwAAANYgAAAAWxAAAAAQwB0AAACwBgEAANiCAAAArEEAAAC2IAAAAKyBAAAA1iAAAABbEAAAIhAAAMAaBAAAgDUQAAARCAAAYAsCAAAVDAAA2IIAABCBAAAAWAMBABCBAACgggEAAGxBAACIQAAAUMEAAIhAAABQwQAAiEAAAACsgQAAiEAAABDBAACIQAAAUMEAACIQANAAAACIQAAAEMEAAKCCAQAQgQAAIIIBABCBAIAGAABABAIAgAoGAAARDABmIAAAiGAAAEQgAKABAABABQMAiEAAQAMAAIAIBgA0AAAAIhAA0AAAAKCCAcAIBAAAFQwAgAgEADQAAKABAABABAMAGgAAABEIAGgAAABQwQBgBAIAGgAAABUMAGgAAEADAAAgAgEADQAAACIYAMxAAEADAAAaAAAAVDAAoAEAAA0AAIAIBAA0AACgAQAADQAAgAgEADQAAKABAAANAAAgAgEADQAAaAAAQAMAABoAAAARCABoAABAAwAAGgAA0AAAACCCAcAMBAA0AACgAQAADQAAaAAAQAMAACACAQANAABoAABAAwCABgAANAAAoAEAAA0AAEYgAACoYABAAwAAGgAA0AAAYAQCABoAANAAAIAGAAA0AACgAQAADQAAgAgEADQAAKABAAANAABoAADQAACABgAANAAAmIEAgAYAADQAAKABAAANAABoAAAARCAAoAEAAA0AAGgAAEADAAAaAADQAACABgAAMxAA0AAAgAYAADQAAGgAAEADAAAaAAAAEQgAaAAAQAMAABoAANAAAIAGAAA0AACgAQDACAQANAAAoAEAAEAFAwAaAACMQABAAwAAGgAA0AAAAKCCAUADAIARCABoAABAAwAAgAoGADQAABiBAACgggEADQAAaAAAAEQgAKABAAANAAAAIhgAzEAAABDBAIAGAABABAIAGgAAABXsKwAADQAAgAgEAAARDABoAAAARCAAAKhgAABEIAAAqGAAQAMAACACAQBABAMAAFiDAAAQgQAAIIIBABCBAACgggEAAFsQAAAiEAAAAGsgAACANQgAABEIAABgCwIAAMAaCAAAAPZgAAAAWxAAAACwjzsAAABgDQIAAABCuQMAAAAAUMEhDAAAAHswAAAAAIRxCAMAAAAACjiFAgAAAAD5XEIBAAAAAEjnFg4AAAAAAEAsD8MAAAAAAAAAAMJ4IQQAAAAAAAAAAAAAgJd5Lx4AAAAAAAAAAAAAAAAAAAD4Ze78yxw7PzPP/LPzFsQvCvYAAAdaeNrt20lu5DAQBEDy/4+mniBAoAgpM+I6GB8atWSx7TEAAAAAAAAAIM/0EQAAAAAAAACRfBsKAAAAQAcvYQAAANDDOwAAAADOYAAAAGcQAAAIwQAACIEAACAFAwCAEAwAgBAIAMgAAIAMAACAEAgAyAAAgAwAAMgAAIAMAGAEAgAyAAAgAwAAMgBgAgIAMgCAEQgAyAAAJiAAIAMAGIEAgAwAgBUAYAICADIAgBEIYAICYAUAgB0IgBUAYAICGIEAgAwAYAICYAUAGIEAJiCAEQiAFQAAyAAAJiCAEQhgAgJYAQBGIIAJCGAEAmAFAJiAAEYggAkIgBUAAMgAAEYggAkIYAQCYAUAGIEAJiCAEQiAFQBgAgIYgQAmIABWAIARCGACAhiBAFgBAIAMAGACAhiBACYgAFYAgBEImIAARiAAIAMAmIAAWAEARiCACQgAyAAARiAAVgCACQgAyAAARiCACQgAyAAARiAAIAMAYAUAmIAAgAwAAMgAAEYgACADAJiAAIAMAADIAACADAAAMgAA2IEAgAwAAMgAAIAMAADIAAAAIAQDgB0IAABCMAAAQiAAAEjBAAAAriAAAABnEAAAgCsIAAAAuOUdAAAAAAAo4CkUAAAAAAAgmC+DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6yfAQAAAAAAAAAAAAAAAAAwJ/440gAAAAAAAAAAADI4HcCAQAAAAAAAAjk63AAAAAAAAAglK9DAQAAAAAAiOXLMAAAAAAA0nkLBwAAAADyeQkFAAAAAAp4CgUAAAAA8nkJBQAAAKCDlzAAAACAEh6CAAAAoId3AAAAAIASHoIAAACgh3cAAAAA6OEdAAAAAHp4BwAAAMAZDAAAgDsQAAAAnMEAAADOIAAAAOCTvAMAAACuIAAAAJyBAAAAziAAAABXEAAAgDMIAADAFQQAAOAMAgAAcAUBAADgDAQAQAgEAABwBgEAALiCAABACgYAAFxBAAAgBQMAALiCAAAQAgEAQAoGAABwBQEAIAQCAIAUDAAA4AoCAAApGAAAIRAAAMAVBAAAUjAAAEIgAAAIwQAAQiAAAIAzCAAAhGAAAIRAAACQggEAQAgGAEAIBAAAKRgAACEQAADAFQQAAFIwAABCIAAASMEAAAiBAAAgBAMAIAQCACAFAwAgBAIAALiCAABACgYAACEYAAAhEAAApGAAAIRAAAAQggEAEAIBAACcQQAAIAQDACAEAgCAFAwAgBAIAADgCgIAQAoGAEAIBAAAwBkIAIAQCAAAQjAAAIAzCAAAIRAAAIRgAAAAZxAAAEIgAAAAzkAAAIRAAAAAVxAAAIAzCAAAhGAAAMAZBAAA4AoCAABwBgEAAOAMBAAAcAUBAAA4gwAAAFxBAAAAziAAAABnEAAAAPCcdwAAAMAVBAAAAGTyDgAAADiDAAAAgFDeAQAAAKCHdwAAAACcwQAAAEAg7wAAAAAAdPASBgAAgDMYAAAAAMJ4CQMAAAAo4SEIAAAAAMjnJRQAAAAAKOApFAAAAADI5yUUAAAAAACy+S4AAAAAAAAgmC+DAAAAAAAAgFC+DgUAAAAAAACAPH4fAAAAAAAAAAAAgBB+JQ4AAAAAAAAAAAAAAAAA4Ef8cSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcNH0EAAAAAEA8L6EAAIAzCAAAhGAAAIRAAEAGAABkAABABgAAZAAAIxAAkAEATEAAIxAAKwDABAQwAgFMQACsAAAjEMAEBMAKQAEAGIEAWAEoAAATEAArAAUAgBWAAgCwAlAAAFgBKAAUAABWAAoAACsABQA6AMAEBB2AAgDACkABgAYAwApAAaAAQAcAYAWgAEADoABABwCYgKADUACgAVAAAFgBoANQAKABUACgAwCwAlAAoAFQAKADUACgAUAHoAAAsAJQAKABQAegAEADoABAB4AGQAGgA0ADoABABwCYgKADUACgAUAHoABAA6AAQAeABkABgA4ADYACAB2AAgANADoABQA6ADQACgB0AGgAFADoABQAaADQASgA0ACgA1AAoAFQAKADQAOgAEAHgAZAAYAOADABfQAAJiAKAHQACgA0AOgAFABoABQA6ADQACgA0AGgAVAA6AAUAGgA0AEoANAAoANQAKABUACgA0ADoABAB4AGQAGADkABgAZAAQBgBYAOQAGABgAdgAIADYACAB0AGgAFADoABQCAFYACAA0AOgAFABoAdAAKAAArAAUAGgAFADoANAAKAAArAAUAOgAFABoAACsABQA6AAUAgBWAAkAD+AgUAABWAAoAdACACQg6AAUAGgAAKwAFAGAEggZAAQBgBaAAALACUAAAWAEoAACsABQAgBEIgBWAAgAwAQGwAlAAAEYgAFYAgAkIYAQCYAUAmIAARiCACQiAFQBgBAIAMgCACQgAMgAAIAMAADIAANiBAAAgBAMAgBQMAADgDAIAAAAA+AQvoQAAAAAAwDFr57+ssfP/rDM/7LwLnDmJ9g==
rendering.color_offset=0

I can't understand, what is going on!

You make an awesome beta tester SeryZone. You really enjoy testing the limits and breaking stuff. I was just trying to render your location. It worked at 640x360, failed at 30720x17280. I was also successfully able to render to 6000 zoom levels at 530MP.

One wierd thing, with the latest beta, the resolution window said "1728)" in the bottom instead of 17280. 1.2.9 beta and 1.3.1 exhibited the same behavior, but in the interim, Botond Kosa seems to have beaten me to a reply.


Title: Re: Mandel Machine
Post by: Botond Kósa on October 12, 2014, 11:08:40 AM
One wierd thing, with the latest beta, the resolution window said "1728)" in the bottom instead of 17280. 1.2.9 beta and 1.3.1 exhibited the same behavior.

Which resolution window?


Title: Re: Mandel Machine
Post by: stardust4ever on October 12, 2014, 02:23:40 PM
Which resolution window?
On SeryZone's test image, when I attempt to up the resolution to 30720x17280, after typing in 30720, a ")" appears in the height window, and the software locks up. Here is a screen capture:


Title: Re: Mandel Machine
Post by: cKleinhuis on October 13, 2014, 03:51:33 PM
since a mandel machine board has been created, this thread is going to be locked, it may be split up on request, please use "new entry" in the apropriate board