Logo by mclarekin - Contribute your own Logo!
News: Visit the official fractalforums.com Youtube Channel
 
*
Welcome, Guest. Please login or register. September 24, 2017, 04:07:03 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   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: Fractorium: A new GPU accelerated flam3 fractal flame renderer.  (Read 7060 times)
0 Members and 2 Guests are viewing this topic.
mfeemster
Alien
***
Posts: 24


« on: November 24, 2013, 11:46:57 PM »

Hello Fractal Forums users,

I am happy to announce that after over a year of development, the first beta release of my GPU accelerated fractal flame renderer is ready:

https://code.google.com/p/fractorium/

The project page contains lengthy write-ups for both users and developers (read them!), but the gist of it is that this is a C++ re-write of the flam3 algorithm with optional GPU support, implemented in OpenCL.

The libraries are named Ember and EmberCL, and the editor is named Fractorium.

This first release is for Windows x64, with the GPU rendering only allowed on Fermi and later nVidia cards just because that's my development platform. I plan to support AMD cards in the near future.

In order to use this, you must install video drivers which include the OpenCL.dll file, or else it won't run.

If you are able to successfully enable OpenCL in the options, I think you will be pleasantly surprised with the real-time rendering feedback. As far as I know, there is no faster fractal flame renderer in existence which has full compatibility with the original.

I hope to support other operating systems, like MacOS and perhaps Linux later on if I can get help from other interested developers.

This is my first open source project, so I welcome all feedback. I am very interested in hearing what experienced fractal artists and developers think about the user interface as well as the performance in comparison to existing products.

Thanks.
Logged

cKleinhuis
Administrator
Fractal Senior
*******
Posts: 7044


formerly known as 'Trifox'


WWW
« Reply #1 on: November 25, 2013, 12:13:16 AM »

nice program, zooming to regions would be nice, the ball rolling is far to sloow, or is there another zoom method ?
Logged

---

divide and conquer - iterate and rule - chaos is No random!
mfeemster
Alien
***
Posts: 24


« Reply #2 on: November 25, 2013, 12:19:51 AM »

Thanks for giving it a try. Were you able to get OpenCL to work by selecting it in Tools | Options?

You can rotate and scale by dragging the image with the right mouse button. Let me know if that does what you need.

When you have a chance, check out the user's guide on the project page:

https://code.google.com/p/fractorium/wiki/FractoriumUserGuide

Logged

lycium
Fractal Supremo
*****
Posts: 1157



WWW
« Reply #3 on: November 25, 2013, 01:16:07 AM »

Hiya, first let me say that you've clearly spent quite some effort on this project, and it looks really good for a version 0.1!

However, about being the fastest: you'll find Chaotica is really fast too (especially in version 1.1.1, on a quadcore CPU), might be worth checking out smiley

About being flam3 compatible, I don't think this is a fair claim since in your implementation notes, you say that the concurrent write problem is left unaddressed; with tens of thousands of threads, all banging on the same memory locations with high probability (the distribution is highly nonuniform/concentrated), there will definitely be problems. Have you looked into/measured this problem?

Anyway, sorry for the technical nitpicking! It looks like a good project, and I'll of course keep an eye on it smiley
Logged

mfeemster
Alien
***
Posts: 24


« Reply #4 on: November 25, 2013, 01:56:24 AM »

Hi lycium, thanks for giving it a look. wink I believe you are the author of Chaotica, correct?

I have indeed tried Chaotica during the course of evaluating what's out there. I do like the interface, but never fully understood exactly how to use it. I was also unclear on whether it uses the GPU for iteration or not. I always wanted to learn more about it, but didn't have the time because I was so busy working on Fractorium. Do you have a link to any good write-ups? I know it's closed source, so I understand you probably won't give up the secret sauce. But any information is always welcome.  I find that I can usually understand something better if I first get into the same frame of mind as the person who created it.

As far as speed, you are correct that the performance of the CPU renderers of both of our projects are probably roughly the same. Although I'm not entirely sure what the progress bar in Chaotica is telling me. I would love to know more so I can better gauge performance. One thing I did notice is that Chaotica maxes out all CPU cores. Is it doing that *with* locking? If so, kudos on the algorithm improvement because flam3 basically drops down to single core performance when locking.

Give the GPU a try on Fractorium, it gives real-time interactive feedback that is the fastest I've seen.


As far as thread locking goes, yes that is the killer problem with multi-threaded IFS in general. I've spent time thinking about it and researching it and came up with this:

CPU:
-By default, the threads are not locked when writing to the histogram in both the interactive editor, and during final render.
-If you run the command line executables, there is an option called --lock_accum which does locking. It's false by default, but setting it to true will give full accumulation locking compatibility with flam3. The problem is that it will drop performance down to that of a single thread, because all threads must wait while one accumulates.

GPU:
-Thread locking is unsupported. Doing so on a GPU pretty much brings it to its knees and defeats the purpose. If you read through the cuburn paper, you'll see that they tried every approach imaginable.

After looking through all of that, I thought to myself "why am I doing this". When inspecting the output images, I didn't see any difference between locking and not locking. It seemed like something that was attempting theoretical purity, for purity's sake. So I decided to omit it. If someone has a demo comparison of images that were rendered using locking vs. not locking, and it has noticeable artifacts, I might look into it some more.

I've thought of a few possible options for locking on the CPU side that don't kill performance so badly, and was planning to look into them more in the future. For now, I just wanted to get this first version out.

When I said full compatibility with flam3, I was focusing more on implementing all of the features, such as interpolation, temporal samples, density filtering, supersampling, spatial filtering and coloring as well as advanced features like early clipping and highlight power. That's what I meant, but technically you are right. Perhaps I'll reword that part of the wiki to be more clear.

Don't worry about nitpicking, I welcome input. That's why I posted it here. I really hope to get more input and involvement from other developers. We'll see how it goes.
Logged

lycium
Fractal Supremo
*****
Posts: 1157



WWW
« Reply #5 on: November 25, 2013, 02:55:58 AM »

I was really impressed that you even made an installer for version 0.1, so I *had* to take a look cheesy

About the progress/status bar, these days there's an online manual, with sections about the status bar and progressive rendering etc. I don't think there's a way to directly compare the programs besides looking at equal-time renders, of course noting the hardware used; on the other hand, with version 1.1.1, if you set the AA level to 1 for fast realtime previews (newly introduced) and move the affine transforms around, you should get a good idea of the performance. This is also shown in the video on the Chaotica website front page.

Chaotica is purely CPU at the moment, however I have some of the GPU rendering core done (the iteration). The GPU density estimation is difficult, but not impossible, and I wonder about cuburn having tried "every approach imaginable" smiley

GPU acceleration will probably be a version 2.0 feature, since it's already pretty fast and I want to focus on other important things like proper (fully correct, with motion blur) animation support. I also plan to add Leap motion controller support as part of the animation support, it's a pretty interesting device! Here are two videos showing realtime interaction with it: http://chaoticafractals.com/video/chaotica_leap_x264.avi http://chaoticafractals.com/video/chaotica_leap_2_x264.avi

I was really hoping that you'd looked into the image differences due to locking in flam3, flam4, cuburn and Fractorium - I think few people know why the images they get come out wrong in pretty much all IFS renderers out there, and even less known is what kind of performance impact doing it correctly has for these programs! As far as I know, here Chaotica is the only one "playing by the rules" smiley

In any case, it's great to see new players in the IFS game, work on Apophysis seems to have all but shut down (to say nothing of flam3), and it's generally been getting awfully quiet in IFS land recently...
Logged

mfeemster
Alien
***
Posts: 24


« Reply #6 on: November 25, 2013, 03:46:41 AM »

I was really impressed that you even made an installer for version 0.1, so I *had* to take a look cheesy

Haha, thanks. I battled Wix for a few weeks just to make that thing. What a *pain*! On a side note, the reason it installs to program data is because I got tired of dealing with the admin prompt stuff and gave up.

Quote
About the progress/status bar, these days there's an online manual, with sections about the status bar and progressive rendering etc. I don't think there's a way to directly compare the programs besides looking at equal-time renders, of course noting the hardware used; on the other hand, with version 1.1.1, if you set the AA level to 1 for fast realtime previews (newly introduced) and move the affine transforms around, you should get a good idea of the performance. This is also shown in the video on the Chaotica website front page.

Chaotica is purely CPU at the moment, however I have some of the GPU rendering core done (the iteration). The GPU density estimation is difficult, but not impossible, and I wonder about cuburn having tried "every approach imaginable" smiley

GPU acceleration will probably be a version 2.0 feature, since it's already pretty fast and I want to focus on other important things like proper (fully correct, with motion blur) animation support. I also plan to add Leap motion controller support as part of the animation support, it's a pretty interesting device! Here are two videos showing realtime interaction with it: http://chaoticafractals.com/video/chaotica_leap_x264.avi http://chaoticafractals.com/video/chaotica_leap_2_x264.avi

I was really hoping that you'd looked into the image differences due to locking in flam3, flam4, cuburn and Fractorium - I think few people know why the images they get come out wrong in pretty much all IFS renderers out there, and even less known is what kind of performance impact doing it correctly has for these programs! As far as I know, here Chaotica is the only one "playing by the rules" smiley

I would love to talk offline some more, or perhaps even video chat. This is all very interesting and I'd love to share what I've found so far on those subjects. My G+ is in my signature, you can message me there or PM me here.

Quote
In any case, it's great to see new players in the IFS game, work on Apophysis seems to have all but shut down (to say nothing of flam3), and it's generally been getting awfully quiet in IFS land recently...

I got the same feeling you described, so I am delighted to join. It's a dirty job, but somebody has to do it =)

Thanks
Logged

cKleinhuis
Administrator
Fractal Senior
*******
Posts: 7044


formerly known as 'Trifox'


WWW
« Reply #7 on: November 25, 2013, 02:28:34 PM »

i was not aware that i have to enable the opencl mode by hand wink will give it a try this evening, because the performance did not really convince me, will report back after checking out the opencl gpu mode!
Logged

---

divide and conquer - iterate and rule - chaos is No random!
mfeemster
Alien
***
Posts: 24


« Reply #8 on: November 25, 2013, 04:44:09 PM »

i was not aware that i have to enable the opencl mode by hand wink will give it a try this evening, because the performance did not really convince me, will report back after checking out the opencl gpu mode!


To avoid further confusion, I'll post a link to this. Everyone please read it.

https://code.google.com/p/fractorium/wiki/FractoriumUserGuide

The rest of the Wiki also gives good information about what exactly is taking place.
Logged

lycium
Fractal Supremo
*****
Posts: 1157



WWW
« Reply #9 on: November 26, 2013, 03:04:06 AM »

I was unable to enable OpenCL usage, even though I use OpenCL on this computer all the time (on my old GeForce GTX 470, always up to date drivers).
Logged

mfeemster
Alien
***
Posts: 24


« Reply #10 on: November 26, 2013, 06:33:47 AM »

I was unable to enable OpenCL usage, even though I use OpenCL on this computer all the time (on my old GeForce GTX 470, always up to date drivers).

Ugh, super frustrating to hear that is happening. Good thing I kept "beta" in the title. I'm sure it'll take a while to work through these kinks.

I'm really surprised to hear it's happening on a GTX 470. I have done all development on a GTX 460 v2 and it works fine. I've tested on a couple of other Fermi based cards and they all work.

In the options dialog, does it properly display the available platforms and devices?

If you go to the info tab after it fails, is there any text in the box that says "Rendering"?

Also, I just looked at your videos with the motion controller thing. Fantastic performance, great job! That's roughly what this looks like in terms of feedback once you get OpenCL running.
Logged

_revers_
Conqueror
*******
Posts: 137



« Reply #11 on: November 26, 2013, 10:25:26 AM »

This first release is for Windows x64, with the GPU rendering only allowed on Fermi and later nVidia cards just because that's my development platform. I plan to support AMD cards in the near future.

Why your application with OpenCL enabled don't work on AMD's hardware? Are you using nVidia specific extensions?
I've tried to run Fractorium on my Radeon HD 5850, and as you said, it didn't work smiley

Anyway, you've done great job with this app. Cool it is Open Source  A Beer Cup - I might want to look at its secrets someday, since learning more about IFS fractals is on my TODO list.

Logged
mfeemster
Alien
***
Posts: 24


« Reply #12 on: November 26, 2013, 06:55:59 PM »

Why your application with OpenCL enabled don't work on AMD's hardware? Are you using nVidia specific extensions?

You bring up a good point. Theoretically, it should work on both since OpenCL is a cross hardware and cross platform standard. Sadly, that's not the case. I will be buying an AMD 7970 shortly and will hopefully figure out how to support both GPU vendors in the near future.

Quote
Anyway, you've done great job with this app. Cool it is Open Source  A Beer Cup - I might want to look at its secrets someday, since learning more about IFS fractals is on my TODO list.

Thanks for the kind words, I am glad you like it. I hope to continue improving it with new ideas in the future. If you want to learn more, I highly suggest reading the documentation on the project page. It will tell you everything you need to know.
Logged

mfeemster
Alien
***
Posts: 24


« Reply #13 on: August 06, 2014, 05:45:40 PM »

Just a heads up, the project now has its own site:

http://www.fractorium.com

I've also added AMD support as well as many features and bug fixes since the initial post here. Give it a look if you've got time.
« Last Edit: July 24, 2016, 10:26:38 PM by mfeemster » Logged

TsarveK
Forums Newbie
*
Posts: 9


« Reply #14 on: July 24, 2016, 08:23:54 PM »

 evil  Hi ,  will  this render handel the 3Dfractal flames from Apo? evil
Logged
Pages: [1] 2   Go Down
  Print  
 
Jump to:  


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.547 seconds with 28 queries. (Pretty URLs adds 0.022s, 2q)