![]() ![]() UPDATE and Editor’s Note: Based on excellent feedback from our readers, we have added info on discrete GPU performance. So, what does this look like in the real world? Well, a Beemer seems like a nice car, so we picked that as a model to render. Not only that, now there are fewer batches to process. This means less idle time in the next iteration. Waves that ended quickly, leaving compute units idle within the GPU waiting for other waves to complete, are packed into a single wave. After the first round, the CPU packs the data and the number of waves might drop to, say, 300. But you have 500 waves you must run to process your data. ![]() Each iteration becomes more and more efficient, typically following an asymptotic curve – lots of improvement in the second iteration, a bit less in the next, and so on.įor example, assume you have a GPU with the capacity to run 50 waves simultaneously. Multiple waves that each end quickly are packed together into fewer waves, increasing utilization. The packing process performed on the CPU is significant. The number of iterations varies, depending upon the nature of the scene being rendered, and the quality settings. Multiple iterations follow until enough have occurred to provide the image quality desired. The CPU may then repack the work for the next iteration, so it processes more efficiently. Once the small kernels have processed the data, the data goes back to the CPU. Then the smaller kernels operate on the data, communicating via device memory to avoid relatively slower communication with the CPU. But the computational performance gains will outweigh this transfer cost. This takes time, and is a performance hit. Conceptually, the algorithm works like this: move all the required data from the CPU to the GPU. We turned the monolithic kernel into a pipeline of about 10 new small kernels that run in sequence. Our submission was reviewed and modified by the Blender community.) Like any well-run open source project, there is a commit process. ( Edit for clarification: We didn’t do this entirely on our own, by any means. A resource-constrained open source project has to prioritize carefully. It is (or perhaps I should say “ was”) a decidedly non-trivial task to split the existing monolithic and large kernel. As a resource constrained open-source project this will most likely not be a top priority.” Also it is not clear that it is going to help and how much. “A: While this would likely help it is not a trivial matter to split up cycles in this way. “ Q: Why don’t you just split up cycles so it can run better on AMD hardware? This is what was there before we did our work!) There is a Q&A at the end of that WIKI page, and this is intriguing. Ever since the support or lack thereof in cycles has been a topic of debate.” For sure. The release notes mention: ‘… OpenCL, which is intended to support rendering on AMD/ATI graphics cards’. These are certifiable “bad things.”Īt the Blender WIKI page on OpenCL™, you’ll see this: “Cycles was included into blender with the release of 2.61 in December 2011. In addition to producing inefficient code, the compiler would sometimes not successfully complete the build, or would generate incorrect code that could lead to black screens or a kernel hang. (Occupancy represents the actual number of waves running on the GPU simultaneously. These spill/unspill operations cause slower performance, and reduced occupancy. As a result of the kernel’s size, the generated code had to spill/unspill registers. Prior to this effort, the GPU kernel used for rendering was monolithic and huge. ![]() Using the compute capability of a GPU can improve performance of such renderers.ĪMD undertook to improve the support for GPU compute inside Blender Cycles. ![]() Ray tracing produces very pleasant visual effects and is typically used when rendering for film or other cases where real-time results are not required but high fidelity is. In fact, it is so math-intensive it is not commonly used for most games or other applications. Ray tracing is a very math-intensive process. The Cycles engine converts a 3D model into the 2D representation you see on the computer screen, using ray tracing technology. Blender includes the Cycles render engine. Our developers actively contribute to and maintain a variety of open source projects, from highly optimized math libraries to… well, let’s talk about Blender Cycles.īlender is a free, open source 3D animation suite. AMD is a real believer in open source projects. This article is part of an occasional series about what developers can do when they collaborate. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |