Welcome Mandelbrot Enthusiasts
| 520700 Mar 18 20:09SFTC_0.94-src.zip | SFTC by 3Dickulus Source Code #B^] |
| 20744008 Mar 18 20:09SFTC_0.94-release.zip | (: tnx knighty :) Windows binaries #B^] |
S.F.T.C.SuperFractalThing C++ portThis version also contains a cmdline exe "sftcmd" that takes four parameters. "-s nnnxnnn" is the desired image resolution. "-f /the/full/path/of/a/folder/full/of/settings/files/" for batch mode or "-f /the/full/path/of/a/folder/full/of/settings/files/name.sft" for single files. "-x png" where png can be any image format supported by Qt :) "-r nnn" where nnn is the frame offset from the start to begin rendering. !!! Sequence Generator/Renderer is now integrated into the GUI !!!Also included is "sequencegen". Make a folder for your sequence files, put two settings files in this folder ie:begin.sft and end.sft run sequencegen from a command prompt like... $> /path/to/sequencegen -f numberOfFrames -b /path/to/begin.sft -e /path/to/end.sft or load the files from the gui and set numberOfFrames there, this will generate a folder named "/path/to/begin" and fill it with sft settings files named begin_00001_640x360.sft etc... when you hit the "Generate" button. The sequencegen gui will show the coords and palette for the start and end frames. You can also load kfr files (: but only generates sft files :) This is the first version with a bit of CUDA code!!! ib2d.h and ib2d.cu a very small kernel that converts iteration data to a color image with some blending functions. For linux users with CUDA SDK uncomment the #define USE_CUDA line and recompile :) You will need... Windows: Qt installed and setup. MinGW installed and setup, usually done with the Qt install :) Linux: The developer stuff for Qt GL CUDA etc. Just run QtCreator and open the .pro files in each folder GUI, Engine and SequenceGen and build each project ;) |
|
|
You may not have to download and install arprec because Knighty was kind enough to share a static lib compiled on WinXP, along with the Windows binaries, I have included the same thing for linux (in the source project) so this compiles and runs on both OSs with QtCreator. If you want to tweak some config settings or include qd.lib you will have to download, compile, install and adjust the .pro file to reflect this change. You can find ARPREC here http://crd.lbl.gov/~dhbailey/mpdist/arprec-2.2.17.tar.gz and optionaly QD here http://crd.lbl.gov/~dhbailey/mpdist/qd-2.3.14.tar.gz |
|
|
Abitrary(ish) precision Mandelbrot set rendering in Qt C++ Based on SFT
Version 0.8.2 (c) Kevin Martin |
|
| 21455 Jan 23 12:35 | CudaBrot by 3Dickulus (Source Code Only) #B^] |
Y.A.M.ZYet Another Mandelbrot ZoomerRequires: nVidia SM1.3 minimum compute capable device (double precision) +SDK. C Compiler and development environment setup :) CMake Qt |
|
|
For Windows you need Qt dev kit, you can get it here from qt-project.org. You will also need CMake but QtCreator might work (bundled with Qt dev package) and CUDA SDK DEV KIT for Windows For most linux machines you can download and compile this after installing the CUDA SDK from https://developer.nvidia.com/cuda-downloads nVidia's SDK also provides nSight, a very nice integrated environment for CUDA coding and other projects. |
|
|
Resurrecting an old favorite from my collection of antiques... This program just pans and zooms around the Mandelbrot set using the mouse or arrow keys. ---------------------------< Commandline Options >--------------------------- Option 1 "benchmark" will calculate 1000 frames and quit. Reports average time in mSec per frame. -------------------------------------< Controls >------------------------------------ F1 F2 F3 keys select function to iterate Mandelbrot, Julia and Hybrib JulMan Arrows = Pan Plus and Minus (keypad) = Zoom In/Out Greater Than (Period) = iterations + 256 Less Than (Comma) = iterations - 256 (min = 256) R key resets to defaults Left Mouse Button + Drag = Pan Mouse Wheel = Zoom In/Out Right Mouse Button + Drag = Adjust ReConst and ImConst (for Julia and Hybrid) I kept it as simple as possible to make it easy to tinker with Qt, CUDA and Fractals For the novice, this is an easy bit of code to get your head around. It demonstrates how to use Qt's QGLWidget, Mouse and Keyboard Events, Timers, QtDesigner Forms (: add some menus if you like :) , how to set variables on the GPU for CUDA kernels from C++ and how to setup and access buffers/textures for writing on the GPU and rendering by OpenGL For the expert, it's an uncluttered simple bit of code that can be used to test crunching routines on CUDA GPUs. Two kernels, one fills an array with x,y datas the other one reads data, makes a calculation and stores the result in an RGBA pixel buffer. Currently only double precision but some preliminary tests with double double and quad double are promising, this is intended as a test bed leading to arbitrary precision on the GPU for calculating fractals. That's it #B^] |
|
| 79427 Jan 26 00:24 | garprec 1.2 modified for CUDA 5.5 by 3Dickulus (Source Code Only) #B^] |
|
You will also need to compile and install these before compiling GARPREC arprec-2.2.17 qd-2.3.14.tar.gz |
|
Preliminary test result
*********************
omp_num_threads = 16
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
test_sqrt ........................................
*** all are stored in the global memory ***
*** GPU sqrt: 0.084 sec ***
*** CPU sqrt: 3.348 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 = 54375
GOLD = 10 ^ -1 x 3.53869669024343986535289726737444346957590877485643229745368723110121165963858965
511109115716049932872161170003314628612036839031424928150417293445769197889
REF = 10 ^ -1 x 3.53869669024343986535289726737444346957590877485643229745368723110121165963858965
511109115716049932872161170003314628612036839031424928150417293445769197889
test_exp ........................................
numBlock = 2400, numThread = 128
all intermediate results are stored in the device memory.
Additional global memory allocated: 210.938 MB
*** GPU exp: 0.674 sec ***
*** CPU exp: 23.295 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 = 158800
GOLD = 10 ^ 0 x 1.859398170734213682586481105574980352402233662981697889938336128748756125911795695
53906461763039229024296104676768544475051490534395161752379999979093511699
REF = 10 ^ 0 x 1.859398170734213682586481105574980352402233662981697889938336128748756125911795695
53906461763039229024296104676768544475051490534395161752379999979093511699
test_log ........................................
numBlock = 2400, numThread = 128
all intermediate results are stored in the device memory.
Additional global memory allocated: 253.125 MB
*** GPU log: 1.291 sec ***
*** CPU log: 63.053 sec ***
*** The abs. of max. rel. error = 10 ^ -151 x 1.19769 ***
*** The abs. of avg. rel. error = 10 ^ -156 x 1.49517 ***
i = 283568
GOLD = 10 ^ -6 x -1.1214657650443285569982515844630711978679974572936561366376406791173372728468062
2686206362476943141508707814002395469988907829707973243458977575217057767562
REF = 10 ^ -6 x -1.1214657650443285569982515844630711978679974572936561366376406791173372728468062
2686206362476943141508707814002395469988907829707973243458977575217057780994
test_sin ........................................
numBlock = 2400, numThread = 128
all intermediate results are stored in the device memory.
Additional global memory allocated: 337.500 MB
*** GPU sin: 0.727 sec ***
*** CPU sin: 20.820 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 = 87711
GOLD = 10 ^ -1 x 7.28271250696968015362884883636702258516968778574511252760649798846229075413225651
794748257111973094346961083952752184895226272301897073473228511886625639161
REF = 10 ^ -1 x 7.28271250696968015362884883636702258516968778574511252760649798846229075413225651
794748257111973094346961083952752184895226272301897073473228511886625639161
test_cos ........................................
numBlock = 2400, numThread = 128
all intermediate results are stored in the device memory.
Additional global memory allocated: 337.500 MB
*** GPU cos: 0.714 sec ***
*** CPU cos: 20.734 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 = 183417
GOLD = 10 ^ -1 x 6.78844123727305098755215389215712948429538850594272466426754068941859649545919050
095387351075937464266920141487785028070362258734002389472769476901243013714
REF = 10 ^ -1 x 6.78844123727305098755215389215712948429538850594272466426754068941859649545919050
095387351075937464266920141487785028070362258734002389472769476901243013714
test_tan ........................................
numBlock = 2400, numThread = 128
numElement = 307200, interval = 307200
all intermediate results are stored in the device memory.
Additional global memory allocated: 417.188 MB
*** GPU tan: 0.714 sec ***
*** CPU tan: 21.478 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 = 133481
GOLD = 10 ^ -1 x 4.96668462660850951424503973735082773537321555779388316609736250147794228933276772
085232024496381512971789490884644861858782818240050702923030026704684487992
REF = 10 ^ -1 x 4.96668462660850951424503973735082773537321555779388316609736250147794228933276772
085232024496381512971789490884644861858782818240050702923030026704684487992
|
|