10
$\begingroup$

Why is it that Blender will only allow me to render with a CPU (GPU choice is unavailable)? Or is it until I acquire a graphics card that is specially built for such a task?

The images below show a Dell System Diagnostics (Video calibration) and GPU-Z results.

The diagnostics shows "GPU1" there. Doesn't that mean something?

GPU-Z capture

Platform: Dell Inspiron 3521 notebook with Core i3 Intel HD Graphics 4000

$\endgroup$
  • 3
    $\begingroup$ you have intel integrated graphics. So there is no real graphics card for blender to use. (In most cases blender will not use intel for GPU compute.) However try checking the "CUDA" computing checkbox at the bottom of the driver settings.(your last screen shot) $\endgroup$ – David Jun 22 '17 at 13:35
  • 5
    $\begingroup$ I think those checkboxes' purpose is only to show the computing capabilities that GPU has, it's not like you can just click and enable CUDA on intel integrated graphics. $\endgroup$ – tacofisher Jun 22 '17 at 14:05
  • 4
    $\begingroup$ @David Uh no, Intel Integrated graphics are real graphics hardware, I'm not sure how you think that works, but you can actually use Intel integrated GPUs for compute tasks, and they speed up SIMD phenomenally, the issue here is that blender has opted not to write the code for Intel OpenCL, not that some how intel hardware isn't capable of speeding anything up. I doubt you could use AMD implementation with out having to rewrite major sections of code however, so I doubt they are going to do this (and I don't blame them) $\endgroup$ – opa Jun 22 '17 at 18:44
13
$\begingroup$

Blender Cycles relies on GPU compute languages like CUDA or more recently OpenCL. CUDA is exclusive to Nvidia and while OpenCL is technically cross platform, in practice AMD's implementation is the only one that provides a usable speedup for Cycles.

From the Blender wiki:

https://wiki.blender.org/index.php/OpenCL

... Intel GPU’s are getting more powerful but are not a good target yet and CPU based opencl provides little or no benefit over CPU based cycles.

$\endgroup$
  • 2
    $\begingroup$ OpenCL allows you to schedule across both CPU and GPU cores (at least on Linux with the open source Beignet driver) which gives a nice performance boost for luxrays. $\endgroup$ – Simon Richter Jun 22 '17 at 17:14
  • 1
    $\begingroup$ Intel GPUs provide the same benefit to SIMD processing that any other GPU does, not to mention they actually do support OpenCL quite well, it is unequivocally false that "in practice AMD's implementation is the only one that provides a usable speedup for Cycles" $\endgroup$ – opa Jun 22 '17 at 18:38
  • 4
    $\begingroup$ Blender doesn't officially support rendering with both the cpu and the gpu simultaneously. In order for OpenCL rendering to be useful it needs to be faster than your CPU. If blender added support for rendering across devices that would change the equation a bit. Also, AMD actually paid a developer to work on cycles and optimize it for AMD hardware, so I don't think its too much of a stretch to say AMD has a bit of an advantage when it comes to rendering in Cycles. $\endgroup$ – Lukas Valine Jun 22 '17 at 19:27
8
$\begingroup$

I'm quite surprised at the amount of false information here.

First off Intel does indeed support OpenCL, as far as I can see up to 2.1. Not only this, but I have actual field experience with working with OpenCL on Intel APUs. The implementation works, and works well and will speed your processing the same way any other GPGPU compute technology would.

Integrated graphics (including intels...) offer the same types of performance benefits that one would find in discrete graphics. They also have some advantages because they are on the same die. Recently integrated gpus have become capable of doing zero copy operations, which means you aren't limited by bandwidth in the same way you are with dedicated GPUs. Modern integrated GPUs can access the same address space as your CPU, in OpenCL you release and acquire this memory in a similar way to doing DMA streaming from host to devices in CUDA/OpenCL. In this way, you can often get more of a speed up with certain types of batch SIMD processing than you could with a discrete card.

Additionally these integrated GPUs aren't of some new architecture never seen before, AMD's own integrated GPUs today are based on their discrete graphics line, and modern APUs use GCN for their integrated graphics architecture. You use GCN drivers whether you are using a 580 or your amd APUs dinky integrated graphics. Bonus here is a picture of what integrated graphics actually looks like.

The problem here is that Blender itself doesn't support all OpenCL implementations or rather, because Blender has OpenCL code it uses for rendering, the code itself is not platform independent.

If you want a solution to this, there was another question asked here that claimed for you to be able to force the usage of native OpenCL implementation even if you don't have an AMD GPU. Note that I have doubts about this working at all.

When I mentioned the implementation wasn't platform independent, there are few things you have to realize about OpenCL.

  1. OpenCL has a lot of extensions. So many that it actually can be quite a headache to make cross platform applications in opencl, since many of these extensions are very vendor specific.

  2. OpenCL stands for Open Compute Language, and its main purpose is for heterogenous processing where you many have multiple devices whose vendor don't match but all support some OpenCL specification, allowing you to control and launch programs on each device from a host. OpenCL is not a GPU specific standard like CUDA is. The fact that something supports OpenCL clearly doesn't mean that any program can run on any device. Heck, even the steamlink supports OpenCL, do you think you would actually be able to render in blender on one of those?

  3. Even among GPUs, ignoring OpenCL there are many vendor specific quirks to how they work. Things like wavefront/warp size, or Banked memory size change not only from vendor to vendor can also change from the same vendor. You also have to account for things like memory coalescing, which your GPU may or may not have utilities to aid with (Nvidia used to take memory in as chunks to help with this, and as long as your memory was grouped in RAM things weren't that bad compared to non sequential access).

I suspect that Blender may never add support for Intel OpenCL, because of the effort and lack of power of their integrated GPUs compared to discrete cards. It wouldn't help the majority of their users, and certainly not their core users.

$\endgroup$
  • 1
    $\begingroup$ This was very informative to me, and I thank you for the "OpenCL for dummies" summary, but I still feel that most of this post is a rant and would benefit from some pruning. $\endgroup$ – pipe Jun 23 '17 at 10:38
6
$\begingroup$

The GPU option doesn't show because you don't have a supported dedicated GPU. Intel HD graphics is an integrated graphics solution, which realistically won't work with Blender. Ivy Bridge is the name for the CPU family.

$\endgroup$
  • 1
    $\begingroup$ The GPU does exist, otherwise he would have no image displayed, it is an Intel HD 4000,it is simply an integrated one. $\endgroup$ – Duarte Farrajota Ramos Jun 22 '17 at 13:49
  • $\begingroup$ @DuarteFarrajotaRamos I think its clear I was using GPU in the context of dedicated GPU since I said he had an "integrated graphics solution." If you want to nitpick then yes he does have a GPU, but in the context of blender GPU acceleration (which is what he's asking about) he does not. $\endgroup$ – Aoradon Jun 22 '17 at 13:56
  • 2
    $\begingroup$ You should clarify that in you answer then, and rephrase it to reflect that. As it stands it reads as inaccurate. $\endgroup$ – Duarte Farrajota Ramos Jun 22 '17 at 13:59
  • 1
    $\begingroup$ the "supported dedicated GPU" is definitely the key phrase in your answer. I have a laptop with both an Intel HD card, and a secondary AMD card, but even if I force Blender to use the AMD card it's not supported. The manufacturer drivers (Acer) don't support a current-enough OpenCL version to work with Blender and they're not updating them. I think it's time for an upgrade... $\endgroup$ – Dale Cieslak Jun 22 '17 at 17:46
  • $\begingroup$ Downvote lifted, much better that way, thanks for fixing $\endgroup$ – Duarte Farrajota Ramos Jun 22 '17 at 17:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.