by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
Martin
@acidhunter
everyone can get 300$ credit on google compute for free
with my documentation and dockerfiles its really easy to get up a cluster, nearly unlimited in size
Martin
@acidhunter

is it possibly to render in tiles?
i think this could give better performance

example:
a settings file will distributed to 4 worker, every worker renders 1 tile.
later the finished tiles get pushed to a server that merges the tiles to 1 picture

Krzysztof Marczak
@buddhi1980
Now it's divided to lines, which gives the same result as dividing by titles
Martin
@acidhunter
some days ago i tried to network render at 20k x 20k
i took 5 minutes to start the rendering
if every worker is standalone i think this could give a sppedup
Krzysztof Marczak
@buddhi1980
Ok, I agrre with this case, but it's not typical usage. If the image will be divided to tiles, then would be difficult to balance it
every tile will have different rendering time
Martin
@acidhunter
on small images the actual way of doing network rendering is nice
but if u scale up to 100 or more workers it would get rrealy slow
Krzysztof Marczak
@buddhi1980
And now every worker is independent. Can work even with very slow internet connection, because doens't need requests from server all the time. Every worker can decide what to render next.
Why you think that it would be slow?
Martin
@acidhunter
a 20k x 20k image needs some minutes to get the network clients start rendering
Krzysztof Marczak
@buddhi1980
The problem is lack of memory in this case
Martin
@acidhunter
yes that is the point
sry its difficult to explain, my english sucks a bit
beacause that i ask if it would be possible to render tiles
if a settings file get uploaded to the nodes, every node is only rendering a part and uploads the image afterwards to a ftp
so every node works alone
Krzysztof Marczak
@buddhi1980
What I can change is another allocation of memory for NetRender clients. Now it allocates memory for full image. I can change this to allocate only that parts which are actually rendered by given client.
It should solve this problem.
Martin
@acidhunter
i dont know if this works
just an idea
Krzysztof Marczak
@buddhi1980
I don't like idea with tiles, because it will be difficult to balance between nodes. Some of nodes can finish rendering very fast and some after very long time. Then it will be unefficient.
Martin
@acidhunter
i dont mean to implement this in netrender
Krzysztof Marczak
@buddhi1980
If you just ask to rendering parts of image, it's only partially implemented in the code, but not finished.
Martin
@acidhunter
another example,
uploading a settings file to 100 servers, every server renders a defined part and uploads it afterwards to a ftp or something else
so it would be possible to distribute it to a cloud provider to render images with unlimited size
after all nodes are finished the tiles can merged
Martin
@acidhunter
output could be something like this
Sebastian Jennen
@zebastian
@buddhi1980 please see latest commit. this may interfere with your code changes. watchout for merge conflicts! buddhi1980/mandelbulber2@2fb9571
Krzysztof Marczak
@buddhi1980
Thanks for your commit. It's good idea to test fractal formulas. Now I'm merging changes.
Krzysztof Marczak
@buddhi1980
I can take some time, because I have to solve problem with mandelbulber_cl_data.h inclusion
Krzysztof Marczak
@buddhi1980
I have merged all code. You can continue. But before please read comments added on GitHub in latest commit.
Martin
@acidhunter
hello there
is opencl included by default when building from git?
i can do some tests on archlinux and docker
Krzysztof Marczak
@buddhi1980
in mandelbulber2/qmake directory there is mandelbulber-opencl.pro. This will create makefile for opencl version. When you start Mandelbulber go to preferences and enable OpenCl on GPU tab.
Sebastian Jennen
@zebastian
i am having a problem with fractal.hpp, the enums are nested inside structs, like:
// basic combo
struct sFractalCombo
{
    enum combo
    {
        mode0,
        mode1,
        mode2,
        mode3,
        mode4,
        mode5,
        mode6,
        mode7,
    };
    combo modeA;
    //        combo modeB;
    //        combo modeC;
};
Krzysztof Marczak
@buddhi1980
doesn't work in pure C?
Sebastian Jennen
@zebastian
this does not work inside opencl:
/usr/share/mandelbulber2/opencl/../opencl/fractal_cl.h:278:2: error: type name does not allow storage class to be specified
typedef enum {
my first idea was to simply unloop this and put enums before the including struct, but we have got collisions with each other and the global namespace: acos
Krzysztof Marczak
@buddhi1980
It can be done if you convert them to correct names like: enumFractalComboCombo and items cound be: FractalComboComboMode0, FractalComboComboMode1...
another example: enumFractalMagTransformsMulti_orderOfTransf, and items like enumFractalMagTransformsMulti_orderOfTransfTypeT1, enumFractalMagTransformsMulti_orderOfTransfTypeT2 ...
they are long but will be no collissions
Sebastian Jennen
@zebastian
i see, thats problably the right way in the first place, and decouples the formula specific struct from the general enum types which are used cross formula
Krzysztof Marczak
@buddhi1980
I think we have no other choice
Sebastian Jennen
@zebastian
puh, got it
that was a lot of find and replace, if we want to change the names again, this should now be easier
Krzysztof Marczak
@buddhi1980
@zebastan, I have changed names of all enums to start with enum..., but now your script cannot rename items in emums body, so we have duplicate names. I have corrected all enums manually, but would be good to correct php script (if it is possible).