Unable to create openCL renderer for interactive rendering
Hello,
When I open Fractorium by default it is set to use the CPU for interactive rendering, when I open options and select openCL, selecting both or only one of my GTX 970 cards when I press ok I get an error about being unable to create the renderer, and then reverts back to CPU rendering.
Specific error message in the rendering logs is "EmberCLns::RendererCL<float,float>::Init: failed to init all devices and platforms.
Error initializing OpenCL renderer, using CPU renderer instead."
Oddly enough when I perform final rendering I am able to use the openCL renderer without issue, using one or both cards at the same time.
Fresh installs, deleting .ini files and clearing registry settings seem to have no effect on my issue.
Having looked through your source code I think perhaps there's an issue related to the fact that my system has a Xeon E3 processor with no onboard graphics, meaning the only OpenCL targets are dedicated GPUs. Other systems where I don't have this problem have onboard graphics in addition to dedicated. Obviously if this issue is related to my hardware I understand if you can't focus on it, but I'd really prefer to not have to revert back to the now defunct Fractron 9000 for real time xform editing.
Thanks for all your hard work! I love the results I get, even if it takes me forever to create them!
Comments (10)
-
repo owner -
Hello again, back with an account I should have created in the first place.
This is a desktop. Based on what you suggested I tried every possible combination of primary and enabled GPU in the options dialogue. I would like to point out that each GPU has an identical name so if Fractorium doesn't populate the list in a specific order each time I have no way of knowing which I have selected. Unfortunately I never got anything to work. I also tried disabling SLI to no avail.
What did work however was completely disabling my secondary GPU in device manager so that Fractorium only had one available GPU to choose from.
I'd consider this workaround to be a "good enough" fix at this point as it allows me to work in real time(so excited) but obviously it's a tad bit annoying to have to go enable and disable hardware when switching between editing and batch rendering.
If you'd like to consider this resolved I'd say that's fair but ask that you consider making a note somewhere in the documentation warning people about a potential issue possibly related to using identical GPUs in systems without onboard graphics.
If you'd like to keep working this issue with me and see if we can figure out why only having 2 identical GPUs seems to cause problems with creating the renderer I'd be happy to assist.
Thanks again for all your help!
-
repo owner Hi Isaac, thanks for making an account. It helps me keep track of which users want what.
The behavior you are describing sounds incredibly strange. I have tested multi-gpu setups before and they worked fine. However, they always had different gpu types. There is perhaps a bug when both are the same type, as in your case, but that seems really odd.
One thing I will say is that SLI/Crossfire are not supported. Each device must be seen individually.
Perhaps reboot after disabling SLI?
Not having onboard graphics shouldn't matter. I've tested with and without, and as long as you don't select it for use, you will be fine.
Can you please do me two favors to help diagnose.
Post a screenshot of the options dialog, with the Use OpenCL checkbox checked.
Second, go to the installation folder and run this:
emberrender.exe --openclinfo
and paste the output here.
Hopefully we can solve this.
-
Hi, apologies for the delay, been rather busy.
Just to be absolutely sure I disabled SLI completely and rebooted twice, making sure it stayed disabled both times and was unable to start the OpenCL renderer.
Here is a screenshot of my options dialog as it appears when I have both GPUs enabled (it will fail to create the renderer if I click OK, regardless of the number selected and which one is chosen as primary):
Here is the output from --openclinfo:
OpenCL Info: Platform 0: NVIDIA Corporation NVIDIA CUDA OpenCL 1.2 CUDA 9.1.84 Device 0: NVIDIA Corporation GeForce GTX 970 CL_DEVICE_OPENCL_C_VERSION: OpenCL C 1.2 CL_DEVICE_LOCAL_MEM_SIZE: 49,152 CL_DEVICE_LOCAL_MEM_TYPE: 1 CL_DEVICE_MAX_COMPUTE_UNITS: 13 CL_DEVICE_MAX_READ_IMAGE_ARGS: 256 CL_DEVICE_MAX_WRITE_IMAGE_ARGS: 16 CL_DEVICE_MAX_MEM_ALLOC_SIZE: 1,073,741,824 CL_DEVICE_ADDRESS_BITS: 64 CL_DEVICE_GLOBAL_MEM_CACHE_TYPE: 2 CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE: 128 CL_DEVICE_GLOBAL_MEM_CACHE_SIZE: 212,992 CL_DEVICE_GLOBAL_MEM_SIZE: 4,294,967,296 CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 65,536 CL_DEVICE_MAX_CONSTANT_ARGS: 9 CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: 3 CL_DEVICE_MAX_WORK_GROUP_SIZE: 1,024 CL_DEVICE_MAX_WORK_ITEM_SIZES: 1,024, 1,024, 64 Device 1: NVIDIA Corporation GeForce GTX 970 CL_DEVICE_OPENCL_C_VERSION: OpenCL C 1.2 CL_DEVICE_LOCAL_MEM_SIZE: 49,152 CL_DEVICE_LOCAL_MEM_TYPE: 1 CL_DEVICE_MAX_COMPUTE_UNITS: 13 CL_DEVICE_MAX_READ_IMAGE_ARGS: 256 CL_DEVICE_MAX_WRITE_IMAGE_ARGS: 16 CL_DEVICE_MAX_MEM_ALLOC_SIZE: 1,073,741,824 CL_DEVICE_ADDRESS_BITS: 64 CL_DEVICE_GLOBAL_MEM_CACHE_TYPE: 2 CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE: 128 CL_DEVICE_GLOBAL_MEM_CACHE_SIZE: 212,992 CL_DEVICE_GLOBAL_MEM_SIZE: 4,294,967,296 CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE: 65,536 CL_DEVICE_MAX_CONSTANT_ARGS: 9 CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS: 3 CL_DEVICE_MAX_WORK_GROUP_SIZE: 1,024 CL_DEVICE_MAX_WORK_ITEM_SIZES: 1,024, 1,024, 64
-
repo owner Everything looks normal, and I've tested dual gpu setups before and they were fine, so this is extremely frustrating. But I really want to fix it.
So let's recap what works. With SLI disabled:
One GPU as primary. Can you tell me which one is the primary?
Two GPUs does not work, no matter which you select as the primary?
Can you please try setting the OpenCL Filtering option back to Log Scale (TBH, full DE was sort of just something I tried for engineering interest, it's not that useful).
Also, I assume you have a somewhat reasonable image size in the main window? Not something insane like 20k x 20k? You can sync to the window size by double clicking each of the width and height spinners in the flame tab.
-
Sure thing.
Starting from the top: I assume that the top GPU shown is the primary. My primary GPU is in the first PCIe slot so windows lists it first, in almost every application they are shown exactly the same (both GPUs are identical) Windows shows them as follows:
For all of these tests I first disabled SLI and rebooted twice making sure that SLI was still disabled both times. I rendered/attempted to render a basic flame containing only a single linear variation at a resolution of 2000 x 1000
Options are set as follows:
I have tried for the GPU selection all of the following options:
Top GPU enabled and set as primary, bottom GPU disabled = Failure to create renderer
Bottom GPU enabled and set as primary, top GPU disabled = Failure to create renderer
Top and bottom GPU enabled, top set as primary = Failure to create renderer
Top and bottom GPU enabled, bottom set as primary = Failure to create renderer
If however I use the final render dialogue I can select any of the above mentioned combinations and render an image just fine. The problem only occurs with OpenCL for preview rendering.
If I go into device manager and disable my secondary GPU so that only one GPU appears in the options dialogue I am able to use OpenCL for previewing and rendering without issue. Here are screenshots of that setup:
Let me know if there are any other questions or anything you'd like to try, I'm more than happy to help.
-
repo owner Thank you for this information. I am looking through the device creation code and am seeing some things that look suspicious. Which is odd because I swore up and down years ago that this was rock solid (since it worked perfectly on every configuration I tried). Alas, there is obviously something wrong.
But in order to do test this, I will need your help. I cannot use my own machine since my hardware seems to work fine.
Would you be willing to email me at matt.feemster@gmail.com
I can get you test builds. That's normally how I've done it with users during this effort over the past several years.
-
That's what I figured you'd like to do. I'd be more than happy to run them. I'll send you an email.
-
repo owner We've coordinated via email and fixed this with a workaround that uses OpenCL but without sharing a texture with OpenGL. Marking as closed.
-
repo owner - changed status to resolved
- Log in to comment
Hi, I definitely don't want you feeling like your only resort is Fractron, which has long since been discontinued and is inferior in every way.
Thankfully, Fractorium has been ran on a variety of systems, so I'm sure we can get it working on yours.
When you are in the options dialog, not only do you have to select which GPU you want to use, but you must also select the "primary" one. This is the device that is connected to your display. If this is not done properly, then the symptoms you describe will happen every time.
This is also inline with your observation that GPU rendering works fine in the final render dialog. This is because there is no visual output in that case so selecting a primary doesn't matter as much.
So try going back to the options dialog, and select the GPU which is connected to your display as the primary one.
For good measure, are you using a laptop or desktop? I've heard of some problems with laptops before.