Logo by MandelBRO - 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: Support us via Flattr FLATTR Link
 
*
Welcome, Guest. Please login or register. April 20, 2024, 02:57:53 AM


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: Fastest mandelbrot software? Perturbation method?  (Read 20711 times)
0 Members and 1 Guest are viewing this topic.
recursiveidentity
Forums Freshman
**
Posts: 15


« on: March 16, 2017, 09:42:05 PM »

Hi, I've been using Kalles for a while, and see I think that maybe there will not be a version 3... What other software is out there right now that takes advantage of the perturbation method? Or which software in general is the fastest for making regular old Mandelbrot zooms down to about e500 or so? I don't need anything fancy. I was taking a look at Mandel Machine, but it also appears to be not under development any more and also requires an old Java version... Thanks!
Logged
simon.snake
Fractal Bachius
*
Posts: 640


Experienced Fractal eXtreme plugin crasher!


simon.fez SimonSideBurns
« Reply #1 on: March 17, 2017, 11:21:54 PM »

Prior to Kalles Fraktaler and Mandel Machine my old favourite was Fractal eXtreme.

This is still being updated (less so these days maybe but who knows).

It is pretty impressive, multi document based, is free to use up to 100 'zooms', can be extended with plugin formulas (some programming knowledge required) and doesn't slow down your PC while drawing each fractal as it is modest in CPU usage etc. and only costs a nominal amount to register.  The author, Bruce Dawson is on the forum I think.

It's not all rosy though - it only supports one colour palette at a time for all open windows, doesn't use Perturbation, was written over 15 years ago and still feels like it was.

I hoped Bruce would add more features (e.g. perturbation, etc.) and drag it into the 21st Century but updates have been few and far between over the last few years.

Still, worth a try so you can make your own mind up.  There is a 64-bit version too.  It's easy to find on the web.
Logged

To anyone viewing my posts and finding missing/broken links to a website called www.needanother.co.uk, I still own the domain but recently cancelled my server (saving £30/month) so even though the domain address exists, it points nowhere.  I hope to one day sort something out but for now - sorry!
Dinkydau
Fractal Senior
******
Posts: 1616



WWW
« Reply #2 on: March 18, 2017, 04:21:19 AM »

Mandel Machine is so fast it's worth to make java somehow work and learn how to avoid the bugs. In terms of speed I'd say it's the true successor to Fractal eXtreme. Kalles Fraktaler has more useful features and I'm using it for exploring a lot now, but I can definitely recommend using Mandel Machine for making final renders.

The most computationally intensive render I did with Fractal eXtreme took 30 days. It was like a big project. I had my computer running 24/7.

Now with Mandel Machine, same resolution, default settings: 8,5 minutes including glitch correction. It's nothing. You can almost start the render, make a sandwich and it's done.
« Last Edit: March 18, 2017, 04:29:53 AM by Dinkydau » Logged

recursiveidentity
Forums Freshman
**
Posts: 15


« Reply #3 on: March 18, 2017, 03:45:40 PM »

Thanks for the replies. I actually bought Fractal Extreme years ago and really do like it, it's just way too slow on my old machine. I've now been spoiled by Kalles.. smiley

I still use Kalles, I just wondered what else was out there... I will give Mandel Machine another go and get Java working to see what I think.
Logged
Kalles Fraktaler
Fractal Senior
******
Posts: 1458



kallesfraktaler
WWW
« Reply #4 on: March 18, 2017, 04:17:31 PM »

The source of mandel machine is publicly available.
It seems the core functionality is implemented in a native dll written in assembler, and the ui in java.
The choice of java is causing problems for many that cannot use MM, including me since a year back or so.
One with time and knowledge could perhaps attempt to write a C++ ui that access the dll, that would be an awesome thing to do
Logged

Want to create DEEP Mandelbrot fractals 100 times faster than the commercial programs, for FREE? One hour or one minute? Three months or one day? Try Kalles Fraktaler http://www.chillheimer.de/kallesfraktaler
http://www.facebook.com/kallesfraktaler
recursiveidentity
Forums Freshman
**
Posts: 15


« Reply #5 on: March 18, 2017, 06:30:23 PM »

The source of mandel machine is publicly available.
It seems the core functionality is implemented in a native dll written in assembler, and the ui in java.
The choice of java is causing problems for many that cannot use MM, including me since a year back or so.
One with time and knowledge could perhaps attempt to write a C++ ui that access the dll, that would be an awesome thing to do

Wish I had the time/skill... I am a programmer, but not up to that task I'm afraid.  Wish we could get a bounty going or something for a nice full fledged open source cutting edge program, similar to how blender has has so much success.
Logged
recursiveidentity
Forums Freshman
**
Posts: 15


« Reply #6 on: March 18, 2017, 09:43:50 PM »

Also, I wonder if it would be easy to take the existing Java code and just recompile it for 1.8. There may not even be anything broken and it just needs to be built, but that's probably wishful thinking...
Logged
3dickulus
Global Moderator
Fractal Senior
******
Posts: 1558



WWW
« Reply #7 on: March 18, 2017, 10:17:21 PM »

I managed to convert SuperFractalThing from java to C++ for a 10X speedup and that was a handful, but after having a look at MMs java code I don't think I want to tackle that one. A better idea might be to use the asm core library in a C++ program huh?
Logged

Resistance is fertile...
You will be illuminated!

                            #B^] https://en.wikibooks.org/wiki/Fractals/fragmentarium
Kalles Fraktaler
Fractal Senior
******
Posts: 1458



kallesfraktaler
WWW
« Reply #8 on: March 18, 2017, 10:19:12 PM »

I managed to convert SuperFractalThing from java to C++ for a 10X speedup and that was a handful, but after having a look at MMs java code I don't think I want to tackle that one. A better idea might be to use the asm core library in a C++ program huh?
Yes, that is exactly what I meant. smiley
Logged

Want to create DEEP Mandelbrot fractals 100 times faster than the commercial programs, for FREE? One hour or one minute? Three months or one day? Try Kalles Fraktaler http://www.chillheimer.de/kallesfraktaler
http://www.facebook.com/kallesfraktaler
3dickulus
Global Moderator
Fractal Senior
******
Posts: 1558



WWW
« Reply #9 on: March 18, 2017, 10:34:21 PM »

yes, of course.  embarrass  SFT was 100% java, MMs gui to C++ would still be a big job though.
Logged

Resistance is fertile...
You will be illuminated!

                            #B^] https://en.wikibooks.org/wiki/Fractals/fragmentarium
recursiveidentity
Forums Freshman
**
Posts: 15


« Reply #10 on: March 18, 2017, 11:58:29 PM »

So since the core is in ASM, does that mean the front end programming doesn't have much impact to performance? Would it have to be C++? I would think any front end would work as long as it stays out of the way...
Logged
3dickulus
Global Moderator
Fractal Senior
******
Posts: 1558



WWW
« Reply #11 on: March 19, 2017, 02:57:08 AM »

yep, any language that can use the library would work.
Logged

Resistance is fertile...
You will be illuminated!

                            #B^] https://en.wikibooks.org/wiki/Fractals/fragmentarium
Kalles Fraktaler
Fractal Senior
******
Posts: 1458



kallesfraktaler
WWW
« Reply #12 on: March 19, 2017, 03:56:54 PM »

yep, any language that can use the library would work.
Maybe we can work togehter on this?
The source of the dll is availabe and consist of only 3 files:
mm_WorkerThread.h
mm64.cpp
mm64core.asm

The definition "JNIEXPORT" indicates exported functions, I assume simliar to "__declspec(dllexport)"
There are only 12 exported functions:
1. Java_mm_WorkerThread_getItNative_164a
2. Java_mm_WorkerThread_getItNative_164b
3. Java_mm_WorkerThread_getItNativeEx
4. Java_mm_WorkerThread_getCPUid
5. Java_mm_WorkerThread_getIterationsPTnativeF
6. Java_mm_WorkerThread_getIterationsPTnativeD
7. Java_mm_WorkerThread_getIterationsPTnativeEx
8. Java_mm_WorkerThread_setOrbit
9. Java_mm_WorkerThread_freeOrbit
10. Java_mm_WorkerThread_initRefOrbCoeffsEx
11. Java_mm_WorkerThread_doAuxIterationEx
12. Java_mm_WorkerThread_getIterationsDnative

So, what do they do and how are they called?
If you have converted SuperFractalThing to C++, I assume you have knowledge in Java?
Can you debug MM and see how to use these 12 functions?

If we want to convert this to a C++ project, there is no need to compile the files as a DLL project, and the first parameter of each function, JNIEnv, needs to be implemented.
The jclass parameter is never used so it can be ignored.

I don't have access to Java's SDK, but I was able to compile the code by adding the following piece of code in the top of mm_WorkerThread.h, that defines the used datatypes and implements JNIEnv (although always return NULL):
Code:
#define JNIEXPORT __declspec(dllexport)
#define JNICALL
#define jclass void *
#define jint int
#define jdoubleArray double *
#define jfloatArray float *
#define jdouble double
#define jlong __int64
#define jlongArray __int64 *
#define jboolean bool

#define JNI_TRUE 1
#define JNI_ABORT -1

class JNIEnv
{
public:
double *GetPrimitiveArrayCritical(jdoubleArray dbla, jboolean isCopy)
{
return NULL;
}
jlongArray GetPrimitiveArrayCritical(jlongArray jzx,jboolean isCopy)
{
return NULL;
}
void ReleasePrimitiveArrayCritical(jdoubleArray dbla, jdouble* xyzbailout, jint i)
{
}
void ReleasePrimitiveArrayCritical(jlongArray dbla, jlong* xyzbailout, jint i)
{
}
void ReleaseFloatArrayElements(jfloatArray orbxyFref, float * orbxyF,jint i)
{
}
void DeleteGlobalRef(jfloatArray orbxyFref)
{
}
void DeleteGlobalRef(jdoubleArray orbxyFref)
{
}
void DeleteGlobalRef(jlongArray orbxyFref)
{
}
void ReleaseDoubleArrayElements(jdoubleArray orbxyDref, double *orbxyD, jint i)
{
}
void ReleaseLongArrayElements(jlongArray orbxyEref, __int64 *orbxyE, jint i)
{
}
double *GetDoubleArrayElements(jdoubleArray orbxyDref,jint i)
{
return NULL;
}
float *GetFloatArrayElements(jfloatArray orbxyFref,jint i)
{
return NULL;
}
__int64 *GetLongArrayElements(jlongArray orbxyEref,jint i)
{
return NULL;
}
jfloatArray NewGlobalRef(jfloatArray orbitXYF)
{
return NULL;
}
jlongArray NewGlobalRef(jlongArray orbitXYE)
{
return NULL;
}
jdoubleArray NewGlobalRef(jdoubleArray orbitXYD)
{
return NULL;
}
};

Now since I don't have knowledge in Java I don't understand the difference between e.g. GetPrimitiveArrayCritical and GetDoubleArrayElements and NewGlobalRef, which all seems to return arrays of the 3 different datatypes __int64, double and float.
Logged

Want to create DEEP Mandelbrot fractals 100 times faster than the commercial programs, for FREE? One hour or one minute? Three months or one day? Try Kalles Fraktaler http://www.chillheimer.de/kallesfraktaler
http://www.facebook.com/kallesfraktaler
recursiveidentity
Forums Freshman
**
Posts: 15


« Reply #13 on: March 19, 2017, 05:21:44 PM »

Awesome, I am willing to help however I can. Testing if nothing else...
Logged
3dickulus
Global Moderator
Fractal Senior
******
Posts: 1558



WWW
« Reply #14 on: March 19, 2017, 07:33:51 PM »

ok will have a look at it... I am not a java programmer, the SFT conversion was done based entirely on the similarity between java and C, the hardest part was figuring out which things were pointers because of dynamic typing.
I am also working on linux so no DLLs only .so or static .a(lib) files, the asm part is not very big and could be compiled into the prog or linked as static lib instead of using it as an external dynamic library and for cross platform compat I would want to use Qt for the gui part.

you're definitely on the right track, mm_WorkerThread.h is machine generated and should be re-generated based on the target platform but in a pinch modifying manually should work too.

the java code will just be a map for re-creating the interface, must pay attention to work flow and threading implementation.

The first thing I would do is to hardcode some working settings and just get it to render an image in a simple "hello world" window...
Logged

Resistance is fertile...
You will be illuminated!

                            #B^] https://en.wikibooks.org/wiki/Fractals/fragmentarium
Pages: [1] 2   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
3D Mandelbrot, pole vector method (see Theory forum) Mandelbulb Renderings cbuchner1 4 9979 Last post December 11, 2009, 08:25:51 PM
by cbuchner1
BBM15 software for layered 3D Mandelbrot sets Other / General Discussion Jules Ruis 0 5562 Last post December 31, 2009, 03:31:08 PM
by Jules Ruis
Priorities list for develop mandelbrot software. Programming Tux89 5 5311 Last post June 27, 2011, 08:30:55 PM
by ker2x
The Mandelbrot Set. Perturbation Theory. UltraFractal SeryZone 0 5670 Last post October 14, 2014, 07:54:14 PM
by SeryZone
Output from my own Software - simple Mandelbrot 2D Detail Images Showcase (Rate My Fractal) Florian 0 5075 Last post December 27, 2015, 06:03:39 PM
by Florian

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.185 seconds with 27 queries. (Pretty URLs adds 0.011s, 2q)