Category Archives: Support

Apple – Are you going to fix OpenCL & Metal Compute in El Capitan?

I received this email from an angry customer:

“I have purchased FA2, FA3d, and FA4+gpu Module” 

“All programs rendered ok on the gpu’s ,  now this El Capitan has arrived  and none of the FA’s render on GPU  anymore .”

“They all render on the CPU ok, but the slow speed  defeats the  object of paying “

“So whats the score , do we have to wait for apple to update their drivers? “

“My Gpu  amd ati radeon hd 6770m – 2011 27inch imac”

At this point, both OpenCL and Metal Compute shaders are unusable for most GPUs incorporated in Mac products on El Capitan.

Back in Mountain Lion, the OpenCL drivers worked on EVERY GPU model shipped with Macs.

Does Apple test OpenCL/Metal with real world applications?

It is very, very easy with Fractal Architect 4.

  1. Download the free app.
  2.  Click the GPU Trial button to open the GPU Trial window.
  3. Turn off the Enforce Quarantine, pick a GPU, then click the button under a fractal to render it.

Is this the new status quo – advertise big new features at WWDC like Metal Compute Shaders on OS X only to find them unusable when released??

Please consider that the OpenCL compiler for all Intel GPUs was unable by this app since Mavericks (due to compile issues as reported in a bug report to Apple 2 years ago).

Metal Compute shaders have no problem compiling the app’s kernels for Intel GPUs but do cause GPU hangs – never seen before on OpenCL with Nvidia/AMD GPUs. We believe these hangs are caused by debug asserts in Apple’s Metal math library when NaN values are encountered.

I have recently successfully implemented CUDA rendering for the app for Nvidia GPUs on El Capitan, but of course CUDA is not available to customers on the Mac App store. (Important because the OpenCL + Metal drivers are now broken in El Capitan)

CUDA drivers are meticulously maintained by Nvidia and are the closest thing we have to Reference GPU compute API. And they work very well on OS X.

Neither the developer nor customers have any idea if these bugs will ever be addressed. We are all totally in the dark.

When the OpenCL/Metal drivers work, they deliver huge performance increases.

We have released multiple versions of Fractal Architect using OpenCL on the Mac App Store since 2011. Today we offer rendering on OpenCL, Metal, and CUDA (but not on Mac App store).

Random Generator – the Garbage filter

Some of you have been confused over the Garbage fractal filter used by the Random fractal generator. This important filter plays a very important role and that is to eliminate garbage fractals created from randomly created fractals.

But some of you have unknowingly set some of the filter settings so ALL fractals are filtered out.
What is happening is that the program is rejecting the random fractals. The garbage filter uses several parameter settings to determine the amount of fractal rejection. It also rejects fractals when the image produced is mostly the background color.
Version FA 4.0.3 has changes to make it less confusing and to show you WHY a fractal has been rejected.
Troubleshooting Garbage Fractal Rejection
First step:
Turn off the Filter checkbox. This will show all of the random fractals and turns off the fractal rejection.
Case 1:   If the random fractals now shown are either poor or uninteresting, that means the combination of variations you chose are not working well.  Try a different combination of variations. You can click on one of the Variation Blends to get a better set of variations to work with.
Also some variation combinations produce a lot of uninteresting fractals but with a handful of good ones.Some of the predefined Variation Blends do this.
Case 2:  The random fractals look good but they are being rejected.  Turn on the Show Render Info checkbox. Now you will see the Fuse % and Retain % for each rejected fractal. Version 4.0.3 shows why the fractal was rejected.
Unfused Cutoff and Unretained Cutoff  (or Min Fuse Cutoff / Min Retained Cutoff)
The two settings that are used for fractal rejection are:   Unfused Cutoff and Unretained Cutoff.  The default values are 25% and 10% respectively. These settings are found in the Random Generation Settings  panel.
 If the actual Fuse % is less than the Unfused Cutoff, the fractal will be rejected. If the actual Retain % is less than the Unretained Cutoff, the fractal will be rejected.
You may need to decrease one or both values so that fewer fractals are rejected.
If too many fractals are filtered out, the Unfused Cutoff and Unretained Cutoff settings on the Random Generator can be adjusted to tune the filter.
Use the Show Render Info checkbox on the Make New tab to see the Fuse and Retained percentages of the unfiltered random fractals.
Some Fractals Render Better on CPU than GPU — Need higher Render Quality at Preview quality levels
There are some fractals that do not render well with GPU at low quality settings. Those fractals need a higher render quality setting.
So for those fractals, they will not look good at render quality of 50, but will be good at say 200.
Some of the Lua scripts create fractals that need a higher preview render quality setting.
The quality for the Random Generator comes from the Grid Thumbnails quality in Preferences.
Rather than change the Grid Thumbnails quality in Preferences, use the Quality Adjust setting at the bottom of the Make New window. (Its default value is 1, which is 1X multiplier)
That is a multiplier.  So if Grid Thumbnails Quality is 50.
A value of 1 on Quality Adjust  means the random generator will use   1 X 50   =  50
A value of 4 on Quality Adjust  means the random generator will use   4 X 50   = 200
The Variants Editor has the same Quality Adjust setting.
The Quality Adjust setting is saved in the fractal definition, so Quicklook will use it too. That is why it takes Quicklook longer to render.
GPU rendering is not as “random” as CPU rendering – which leads to slightly lower quality. You cannot see any difference at quality of 1000, but at quality 50 you can see a difference with a few fractals.

Rendering FA 4 fractals on FA 3D

In case you already have FA 3D (the previous FA app version), this news might be of interest.
The last update to FA 3D included an update to read files created in FA 4.
The renderer in FA 3D does not support the new features in FA 4, so if a fractal built with FA 4 uses either Pre or Post variation groups, it can’t be rendered in FA 3D.
If the fractal uses just a single Normal variation group per transform in all transforms, it can be rendered in FA 3D. Its a little confusing to understand, but all Flam3/Apophysis fractals have a single variation group per transform. (They do not use this terminology).
Apophysis pre/post variation types (as distinct from Pre/Post variation groups), can be rendered in FA 3D.

How To Tell if  a Fractal uses the New Features in FA 4

Open the Info window on the fractal,  Look at each transform and their variations.

Note in this example, transform #1 uses a Pre and a Normal Variation Group:

Xform #1 weight: 0.9634 colorIndex: 0.0536 color_speed: 0.785 opacity: 100% var_color: 1 rotates: YES
Variation Group Pre#1 ========
 npolar #1: -0.6421 parity: 0.1687 n: -1.5161 
 post_flatten #1: 1.384 
Variation Group Normal ========
 julia #1: 0.3463 
 post_flatten #1: -0.1504

This transform has a single normal variation group.

Xform #2 weight: 0.5347 colorIndex: 0.0615 color_speed: 0.5 opacity: 100% var_color: 1 rotates: YES
Variation Group Normal ========
 julian #1: 0.7325 power: 6 dist: -0.1098

Why GPU Rendering is an Optional In-App Purchase

Today in 2015, my guess is that only in 1 in 4 customers have Macs whose GPUs are compatible with FA 4 GPU OpenCL rendering. Before Mavericks, almost 100% of Macs (those with Nvidia or ATI GPUs)  could use FA 2’s GPU rendering.
There are multiple OpenCL driver issues causing this and frankly there is nothing that can be done to fix it as a small app developer.
That is why free GPU Trial was put in the app and why GPU rendering is an optional purchase.  We did not want customers to feel they spent money on a broken feature, especially when we have no ability to fix the underlying bugs in Mac OS X’s OpenCL drivers.

Keeping GPU Rendering Support in the Product

When FA 3D was under development in 2012, Mountain Lion was the current of OS X and its OpenCL GPU drivers worked very well. Basically GPU rendering worked on all Macs with discrete Nvidia or AMD (excepting the AMD 4XXX series GPUs) from 2009 and later.

Then Mavericks appeared and OpenCL driver hell began for so many FA customers. FA 3D was released right after Mavericks release. We had no idea that Apple would release such bad drivers and for most Mac models, never fix them. Continue reading Keeping GPU Rendering Support in the Product

State of OpenCL GPU Rendering on Macs in 2015

Fractal Architect is testament to the power of OpenCL powered GPU rendering.

The 2013 Mac Pro OpenCL drivers are world-class and deliver amazing performance. The 2011 and 2012 Macbook Pros are solid GPU rendering workhorses.

The Intel CPU OpenCL driver was greatly improved in Yosemite with a doubling of performance over Mavericks.

It is also serves as a stark reminder of what happens when the OpenCL driver/compiler/runtime provided by Mac OS X is not maintained and bugs are ignored. The Intel OpenCL GPU drivers on the Mac OS X platform are best described as: unusable, broken.

We have no control over the state of these drivers. Apple can do amazing things with their drivers, as the Mac Pro team did. They can also give you a miserable experience, when bug reports are ignored and years go by without useable drivers.

Unfortunately, for most of you having Macs that are powered by Intel GPUs, you will not have the chance of using GPU rendering.

These are the Mac models currently having OpenCL driver issues and a short comment on why they don’t work:

  • All Intel Iris, HD 5×00, HD 4000 GPUs

    OpenCL LLVM compiler targeting those GPU’s can’t compile our kernels.

  • 2014 Macbook Pro with Nvidia 750M GPU

    Automatic GPU switching breaks OpenCL apps. Other Macbook Pro models also use automatic GPU switching, but they work fine.

  • 2010 and earlier Macbook Pros

    GPU rendering worked fine on Mountain Lion. Mavericks and Yosemite drivers are broken/useless.

Apple – you have shown what you can do. Please give attention to your OpenCL driver stack.

OS X Mavericks 10.9.1 and ATI GPUs – Big Problem (Fixed by OS X 10.9.2)

Important Update: Apple’s OS X Mavericks 10.9.2 update (released the last week of February 2014)  fixes this problem for the 2011 ATI GPUs found in many 2011 Macs. Also the new 2013 Mac Pro was apparently never affected by this problem and works correctly on both 10.9.1 and 10.9.2.

Customers on 2011 and 2012 Macs that have ATI GPUs should update their Macs to 10.9.2.


Continue reading OS X Mavericks 10.9.1 and ATI GPUs – Big Problem (Fixed by OS X 10.9.2)

To GPU or not GPU Render – That is the Question

Flam4CUDA for Mac and Fractal Architect have supported fractal rendering on the GPU since 2009. Flam4CUDA for Mac (I am its author) was an open source precursor to Fractal Architect.

Fractal Architect 3D, FA 2, and Serendipity all use the powerful OpenCL platform to render on either a CPU or a GPU. On OS X Mavericks, all recent Mac GPUs from Nvidia, ATI, and Intel are supported.

The beauty of  rendering on the GPU is quite simple:   Speed !!    (speed varies by GPU model)

Continue reading To GPU or not GPU Render – That is the Question

Hotfix Updates for Fractal Architect & Serendipity

Mavericks 10.9.1 has a change that breaks the cached OpenCL rendering code for users using the Intel Iris Graphics GPUs. This change does not affect Nvidia or ATI discrete GPUs. Intel CPU based rendering is unaffected.

News Update (Jan 15, 2014): All 3 apps have been updated for this issue.

All 3 apps have had an update sent to Apple which fixes the problem. Apple’s Christmas shutdown for all App reviewers will delay the mandatory review by Apple. So you may not see the free update on the Mac App Store until the New Year or so.

Workarounds until the Update is Released 

Continue reading Hotfix Updates for Fractal Architect & Serendipity