11
$\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
  • 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, 2017 at 13:35
  • 6
    $\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, 2017 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$
    – Krupip
    Jun 22, 2017 at 18:44

3 Answers 3

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.

For recent versions of Blender 3.0+ you can also use HIP API for rendering on certain recent models of AMD Graphics cards.

$\endgroup$
3
  • 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$ Jun 22, 2017 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$
    – Krupip
    Jun 22, 2017 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$ Jun 22, 2017 at 19:27
12
$\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
  • 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, 2017 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$
5
  • 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$ Jun 22, 2017 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$
    – Striar
    Jun 22, 2017 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$ Jun 22, 2017 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$ Jun 22, 2017 at 17:46
  • $\begingroup$ Downvote lifted, much better that way, thanks for fixing $\endgroup$ Jun 22, 2017 at 17:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .