1 2 3 First Previous 388 Replies Latest reply on Feb 2, 2015 11:01 AM by jtrudeau

    Blender Cycles(Opencl on AMD GPUS)

    npm1

      Dear Opencl Developer

      Why doesn't the AMD opencl compiler work with blender cycles?

      whenever i compile the blender cycles kernel, the system either crashes due to lack of memory, or takes too long to compile the blender cycles kernel(which thereafter comes up with the following error:

      opencl build failed:errors in console

      calclcompile failederror: creating kernel_ocl_path_trace failed!

      can't open file c:\tmp\5688.blend@ for writing:no file or directory

       

      ).

      When is AMD opencl compiler going to work properly with blender cycles?

      Why can't the AMD opencl compiler developers test their compiler against blender cycles?

       

      Seasons Greetings,

       

      npm1,

       

      PS i am as well as others(i assume) are considering to make a switch from AMD GPUs to Nvidia.

        • 1. Re: Blender Cycles(Opencl on AMD GPUS)
          nou

          Try consider LuxRender http://www.luxrender.net/forum/viewforum.php?f=34 (you must register to read forum) It is works very well on AMD cards. There is also Blender integration. It has very active development. Now there is fourth version of GPU engine.

          • 2. Re: Blender Cycles(Opencl on AMD GPUS)
            npm1

            but is it as fast as blender cycles.

            i want to mostly render animations...

            what are the best settings for using luxrender for animations

            • 3. Re: Blender Cycles(Opencl on AMD GPUS)
              npm1

              why can't AMD's opencl compiler support the full opencl spefication regardless of the big kernel or not

              • 4. Re: Blender Cycles(Opencl on AMD GPUS)
                nou

                Read the LuxRender forum. You will find it very interesting. http://www.youtube.com/watch?v=jk-N4f9ze4k

                • 5. Re: Blender Cycles(Opencl on AMD GPUS)
                  nou

                  Just downloaded Blender 2.63 and 2.65 and tried BMW Cycles benchmark. It worked for me. So what exactly didn't work for you?

                  • 6. Re: Blender Cycles(Opencl on AMD GPUS)
                    npm1

                    are you still talking about luxrender...or are you talking about cycles

                    in blender 2.65 opencl for cycles isn't included(compiled with blender).

                    I haven't tried blender 2.63 opencl-does that work

                    • 7. Re: Blender Cycles(Opencl on AMD GPUS)
                      npm1

                      i also assume that opencl for AMD GPUs doesn't or else Brecht and team would make the announcment.

                      You were only using CPU mode.(correct me if i was wrong).

                       

                      In which case AMD ought to test their opencl compiler against blender cycles and make the necessary optimizations, as:

                      the compiler runs out of memory, and chokes out errors and complains

                       

                      This is good for AMD, as this will result to loosing a market of users.

                       

                      More specifically the AMDs opencl compiler fails to compile blender cycles SVM(shader virtual machine)....

                      PLEASE, PLEASE, PLEASE.

                      AMD fix your compiler, so that it works with the full opencl specification

                      • 8. Re: Blender Cycles(Opencl on AMD GPUS)
                        nou

                        I was talking about Blender cycles. Indeed I was using CPU, OpenCL must be enabled in preferences. After this I got segfault when compiling OpenCL kernels.

                         

                        You should really check out luxrender. it works well on both nVidia and AMD.

                        • 9. Re: Blender Cycles(Opencl on AMD GPUS)
                          developer

                          Hi Nazim,


                          Sorry that you have to go through this.

                          I think you have posted a repro case http://devgurus.amd.com/message/1285984

                          Will take a look at the repro and get back to you on that thread.

                           

                          Best Regards,

                          Workitem 6

                          • 10. Re: Blender Cycles(Opencl on AMD GPUS)
                            sharlybg

                            Hi I'm a blender user too (but native french peaker).I use blender For Archiviz at professionnal level.But when it's come to speak about productivity there's big shame.My Boss now want to pay cash for high end workstation.I'm the one that can advise the boss about which component are enought powerfull or stable to help us get more Fast rendering.

                             

                            Me like many many blender user wish that AMD radeon card will be full support by cycles.but it's not the case and cycles developper said that:

                             

                            "OpenCL support for AMD

                            is currently on hold. Only a small subset of the entire rendering kernel can currently be compiled, which leaves this mostly at prototype. We will need major driver or hardware improvements to get full cycles support on AMD hardware. For NVidia CUDA still works faster, and Intel integrated GPU's are unlikely to give any speed improvement over CPU rendering.

                             

                            In Blender 2.65, OpenCL is not available as a choice in the UI by default. The environment variable CYCLES_OPENCL_TEST can be defined to show it, which can be useful for developers that want to test it. The OpenCL kernel is located in 2.65/scripts/addons/cycles/kernel. In the file kernel_types.h specific functionality can be enabled/disabled for testing, without recompiling Blender."

                             

                             

                            sentence below explain why luxrender work on AMD and why it doesn't for Cycles:

                             

                             

                            "

                            The path tracing kernel is currently a single big kernel, much bigger than typical OpenCL code. There are about 40 shading nodes, 10 BSDF's, etc.

                            Splitting it up into smaller parts may help, but even then compiling only the shading nodes execution code fails. This would be quite difficult to split up. An alternative would be to compile a kernel for each material in the scene, but I don't have much faith in complex node setups compiling reliably then, and scene startup time would increase considerably.

                            If at all possible I would like to avoid splitting up the kernel in many pieces, mainly because it makes extending the code much harder (we're only getting started in terms of number of features). And also because I haven't really seen this demonstrated working efficiently in other renderers yet, e.g. NVidia Optix also uses a single kernel."

                             

                            AMD

                            The immediate issue that you run into when trying OpenCL, is that compilation will take a long time, or the compiler will crash running out of memory. We can successfully compile a subset of the rendering kernel (thanks to the work of developers at AMD improving the driver), but not enough to consider this usable in practice beyond a demo.

                             


                            • 11. Re: Blender Cycles(Opencl on AMD GPUS)
                              mberger

                              I think register spilling is broken at the AMDIL level.  cycles depends on register spilling for nvidia it uses 24 max-register setting. to force compiler to spill.

                               

                              i looked at public AMDIL llvm branch and it has the following lines:

                               

                              unsigned TrivialRegAlloc::getPhysicalRegister()

                              {

                              for (unsigned i = 0; i < _regInUse.size(); ++i) {

                              if (!_regInUse[i]) {

                              _regInUse[i] = 1;

                              return _regSet[i];

                              }

                              }

                              // No physical register available. Has to spill.

                              // TODO: add spiller

                              abort();

                              return 0;

                              }

                               

                              I do not know if support for spilling registers in the AMD pipeline is on the horizon but the ability to spill would really halp to be able to compile cycles on AMD harware.

                              Additionally the ability to control the ammount of registers the compiler is able to allocate would further allow the program to benefit of GCN

                              • 12. Re: Blender Cycles(Opencl on AMD GPUS)
                                himanshu.gautam

                                Thanks for the feedback. I will let the relevant people know.

                                • 13. Re: Blender Cycles(Opencl on AMD GPUS)
                                  tommie

                                  Any developments on this topic yet?

                                  I think this topic should get high priority within the AMD development. AMD and thus almost all Apple users are unable to use these powerful features in blender!

                                   

                                  Thanks for the update!

                                  • 14. Re: Blender Cycles(Opencl on AMD GPUS)
                                    himanshu.gautam

                                    The issue is being undertaken at high priority. Currently i have nothing to share publicly. I will ask for the status again. Thanks for your patience.

                                    1 2 3 First Previous