Logo by S Nelson - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Visit the official fractalforums.com Youtube Channel
 
*
Welcome, Guest. Please login or register. July 19, 2018, 07:38:36 PM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: 1 2 [3]   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: mightymandel GPU Mandelbrot set renderer (OpenGL 4)  (Read 9865 times)
Description: perturbation for unlimited zoom, but no glitch correction
0 Members and 1 Guest are viewing this topic.
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #30 on: January 06, 2015, 10:35:09 PM »

Highlights from recent changes in the git version:

b082a74: decouple window --geometry from image --size
d37e581: check available video memory on startup
41f6bef: collect lots of metadata and save it in PPM comment

See https://gitorious.org/maximus/mightymandel/commits for more detail
See http://code.mathr.co.uk/mightymandel/shortlog for more detail

mightymandel is quite greedy with video memory at the moment, 1GB (minus overheads for OS) gives around 3072x1728 image size (and now the window size can be smaller if you don't have a screen that big).  I plan to fix this in a way that circumvents the problems(*) with tiled rendering (image uses 20 bytes per pixel, calculation uses 144 160 bytes per pixel, how about not calculating all of the pixels at once...).

(*) problems with tiling include seams when re-assembling output, wasted re-calculation of references, non-termination issues with 100% interior tiles, ...
« Last Edit: March 10, 2015, 02:34:38 AM by claude, Reason: gitorious.org is closing » Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #31 on: January 09, 2015, 09:56:50 PM »

Highlights from recent changes in the git version:

* timeout command line option
* sliced rendering
* progressive rendering

Sliced rendering reduces video memory usage for calculations so larger images can be rendered without having to resort to tiling: --size 7680x4320 with --slice 2 is just about fine on my 1GB card,  --slice 3 is more comfortable and a bit faster.  Progressive rendering re-orders the slices so that you get a lofi (pixelated) preview image first, which gradually becomes more refined.  Reference iteration calculations are shared between slices to avoid recomputation.  The slice layout looks roughly like this for --slice 2 (tables up to --slice 8 are generated at runtime):
Code:
{ {     0,     8,     2,    10}
, {    12,     4,    14,     6}
, {     3,    11,     1,     9}
, {    15,     7,    13,     5}
}

Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #32 on: January 11, 2015, 01:33:31 PM »

Highlights from recent changes in the git version (HEAD at 6467fce375a820575c24ed226a6951c8874fabd5):

* reference finding improved
  * fewer references should be needed as better references are chosen
  * two-pass blob extraction method: first pass extracts glitched blobs, second pass extracts most erroneous sub-blobs
  * --max-blob flag to ignore small blobs (default 1 pixel, set to 0 for previous behaviour)
* zoom assembler adds motion blur
  * variable shutter speed (default 0.5, set to 0.0 for previous behaviour without blur)
  * some comparison videos at http://www.fractalforums.com/format-printing-and-post-production/motion-blur
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #33 on: January 11, 2015, 04:39:48 PM »

New Windows binaries are available:

http://mathr.co.uk/mandelbrot/mightymandel-v15-189-g8605661.zip (2.1MB)

The zip contains 32bit and 64bit binaries each with standard and nodebug versions.  The standard versions are to be preferred, switch to nodebug only if you had no problems and need maximum performance (though the difference is probably tiny).

The 64bit binaries are completely untested as I don't have a 64bit WINE yet.
Logged
youhn
Fractal Molossus
**
Posts: 696


Shapes only exists in our heads.


« Reply #34 on: January 11, 2015, 05:10:03 PM »

mightymandel-v15-189-g8605661-win64.exe is working on Wine 64 on Linux Slackware. Just did a bit of zooming, saving an image, re-render the location from command line. Might need more testing to get a feel of stability, but the basics are working.
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #35 on: January 17, 2015, 02:09:55 PM »

mightymandel-v15-189-g8605661-win64.exe is working on Wine 64 on Linux Slackware.
Good to know.  Thanks for testing!



Highlights from recent changes in the git version (HEAD at 4b9d9291ae9c73dca6d275ec29cae396658139d3, changes):

* per-pixel vram usage reduced by 4 bytes (--de) or 8 bytes (--no-de)
* stopwatch implementation for OS X
* better --no-de colouring

The OS X changes are untested (I don't have access to any OS X), experience reports very welcome.



High priority bugs still to fix before the next release:

* GUI is unresponsive during reference point finding and series approximation
* version string generation only works from a git clone (no tarball)
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #36 on: January 19, 2015, 07:06:46 PM »

mightymandel v16 has been released!

release announce
http://mathr.co.uk/blog/2015-01-19_mightymandel_v16.html

new home page
http://mightymandel.mathr.co.uk/

source tarball
http://mightymandel.mathr.co.uk/download/mightymandel-v16.tar.gz (789kB)

windows binaries
http://mightymandel.mathr.co.uk/download/mightymandel-v16-windows.zip (2.1MB)

documentation
http://mightymandel.mathr.co.uk/v16/
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #37 on: March 10, 2015, 03:31:27 PM »

Recent changes in git (with major changes in bold):

699d922 update atom feed link
e0e4d87 automatic orb example
e49418f latest test suite results
4eb5aaa test with distance estimate
a437627 pre-scale derivative instead of post-scaling de
763b77c update code host
d079448 debug shaders as well as programs
b59a609 OS X bugs
8eefa05 OS X build system and documentation
98b63f3 rewrite build system: make SYSTEM=system
5cfd6c8 only include perturbation metadata for fpxx
3588da8 re-order window hints to glfw faq
59e4e87 use an explicit format in date instead of --iso=s
0844246 OS X bugs
7761d9c correct frappuccino CPU
f278fa1 post-release version bump

pre-scaling derivative instead of post-scaling distance estimate means that --de now works all the way to the zoom depth limit of mightymandel (around 1e-300, when double precision floating point underflows to zero it's game over sad )

series approximation for derivative (used in distance estimate) is broken (I don't think it was ever working properly), so pick one of --no-de (fast) or --no-approx (pretty)

OS X is not working (someone managed to get it to compile and run, but it displayed a blank window despite the output PPM being saved correctly, and the changes haven't been merged into git yet).
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #38 on: May 21, 2015, 02:17:41 AM »

Recent changes in git:

started porting from transform feedback to compute shaders with the calculation engine in a reusable library (lots of work still to do, so this isn't live yet)
323b505 rename symbols (all with mightymandel prefix, private with additional _ prefix)
373e9e7 remove unimplemented status
6475c03 reduce file count; build a shared library
938ae1e conditional compaction; debug output
f7f60ed first compute shader test
ba46c6d start of library API with test of threading

The primary issue with transform feedback is that the CPU is waiting for the GPU to finish before issuing the next commands to the GPU - with compute shaders and conditional rendering the throughput should increase, at the cost of a little latency when checking whether rendering is done.  Compute shaders are also more sane than vertex/geometry shaders when doing computations.  The library API will be quite simple - there'll be functions to create/destroy a mightymandel context, start a render, stop the render, wait until the render is done, get current raw iteration results (whether done or not, for progressive display), and clean up after rendering.  The rendering runs in a separate thread so your main loop isn't stolen.  This work will bump the version requirement to OpenGL 4.3, the no-deep-zoom OpenGL 3.3 version will no longer be supported.

changes to the existing engine
2936c26 accumulate error flags to improve reference point finding
2da20be new series approximation in fpxx_approx2; flag --order
f23d2b2 series approximation code generator

Accumulating error flags means that points that are glitched with multiple references are given higher priority for consideration as the next reference.  Seems to reduce the total number of references needed.

The series approximation code generator is written in Haskell, so you now need ghc to compile mightymandel.  After updating the source from git, run
Code:
make -C src generate
before following the previous build instructions.  Code is generated for various numbers of coefficients, the highest is 64.  The number used can be selected at runtime with the --order N flag, I usually use 12 as a reasonable trade-off between series approximation calculation time and per-pixel calculation time.  You also need --no-de.  The default --order is 0, which selects the old non-parallel 3rd order method, use --help to see the available orders.  The coefficient calculations use MPFR and are parallelized using OpenMP, which gives a speed boost if you have several cores.  The eventual aim is to do the arbitrary precision maths on the GPU, using OpenGL compute shaders instead of MPFR+OpenMP (GLSL has uaddCarry() and usubBorrow() which should make this less painful).

Here's a diagram showing how the 4th order series approximation coefficient recurrence is parallelized.  Higher orders would be even more incomprehensible smiley

Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #39 on: July 30, 2015, 04:35:41 PM »

the rendering method is nice, buuuuuuuuuuuuuuuuuuuuuuuuuut i was expecting a pertubation gpu method, and after a few clicks the images takes already 2secs to render wink i have a i7 3,2 ghz and a radeon 7970 gpu Sceptical

I've been working slowly as time allows on a different renderer (CPU-based so far), trying new algorithms.  This helped diagnose the main reason why mightymandel is so slow when zooming:

1. primary reference is recalculated for every image
2. series approximation coefficients are recalculated for every image
3. secondary reference calculation requires analyzing the whole in-progress image for glitches

My new renderer solves all of these issues, reducing time taken for a test zoom video from a few days in mightymandel to a few hours in the new renderer.  But there are still some bugs, particularly at low zoom depths where an outer reference series approximation skips too many iterations and corrupts regions around visible inner minibrots; also some calculations are not yet interruptible, and there is no GPU usage yet either.
Logged
Pages: 1 2 [3]   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
OpenGL+cuda renderer (video+src) Mandelbulb Implementation kyrlian 3 4117 Last post April 12, 2010, 05:32:34 AM
by keldor314
Billy Stiltner's 3d mandelbrot opengl Others grailseeker 5 2055 Last post May 01, 2012, 04:31:24 PM
by grailseeker
mightymandel 2015-01-01 Movies Showcase (Rate My Movie) claude 0 323 Last post January 08, 2015, 04:49:16 PM
by claude
CUDA mandelbrot renderer - should I publish? General Discussion kubinator4321 3 4195 Last post January 16, 2015, 04:38:58 PM
by kubinator4321
OpenCL Mandelbrot renderer (Linux/Windows/Mac, opensource) General Discussion trenmost 0 1827 Last post April 29, 2015, 08:44:39 PM
by trenmost

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.193 seconds with 27 queries. (Pretty URLs adds 0.012s, 2q)