Page MenuHome

OpenCL issue with AMD 7870 and B3D 2.78.5 build
Closed, ArchivedPublic

Description

blender-2.78-94a3bc6-win64, Win10
Latest drivers

This is a default scene with sphere:


Render on GPU gives this:

Viewport rendering works fine altough it takes long to open render kernels:

Viewport rendering on CPU:

On GPU memory usage is about 585 MB and on CPU is only 10MB.

After I open viewport rendering again, this error happens:


Event Timeline

soulfire (vejn) updated the task description. (Show Details)
soulfire (vejn) updated the task description. (Show Details)
soulfire (vejn) updated the task description. (Show Details)
Aaron Carlisle (Blendify) changed the task status from Unknown Status to Archived.May 30 2017, 1:41 AM
Aaron Carlisle (Blendify) claimed this task.

The AMD HD 7870 is only a GCN 1.0 card for 2.79 we bumped our requirement to GCN 2.0. For the final release, these cards will not be selectable from the menu.

soulfire (vejn) changed the task status from Archived to Unknown Status.May 30 2017, 1:41 AM
soulfire (vejn) removed Aaron Carlisle (Blendify) as the assignee of this task.
soulfire (vejn) updated the task description. (Show Details)
Ray Molenkamp (LazyDodo) changed the task status from Unknown Status to Archived.May 30 2017, 1:50 AM
Ray Molenkamp (LazyDodo) claimed this task.
soulfire (vejn) added a comment.EditedMay 30 2017, 2:11 AM

Please, could you leave the compatibility requirement for 7870?
Maybe someday AMD will change the drivers so that issue will be fixed. I have been writing the feedback to them often.

No this is on the hardware level and not software so the GCN (Graphics Core Next) version will not change.
You can view what GCN a card is on https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units

soulfire (vejn) added a comment.EditedMay 30 2017, 2:33 AM

No this is on the hardware level and not software so the GCN (Graphics Core Next) version will not change.
You can view what GCN a card is on https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units

Why are you leaving GCN 1.0 behind? I think this is some kind of memory leak issue.

First render on GPU has memory usage about 585 MB and on CPU is only 10MB. Shouldn't this be the same ?
I believe second render gives an error because memory allocation is stacked.

We are leaving GCN 1.0 behind because of various errors like this that we cannot fix. @Mai Lavelle (maiself) may wish to comment further is she would like.

soulfire (vejn) added a comment.EditedMay 30 2017, 2:02 PM

@Aaron Carlisle (Blendify) , @Mai Lavelle (maiself)

On this thread https://community.amd.com/message/2772700 there is a confirmation that ticket has been raised against this issue with 7870. It is being investigated.

Please, don't remove 7870 from 2.79 if anyhow possible.

We will be dropping support for GCN1 because we cant fix these issues for a variety of reasons:

  • I don't have a GCN1 card to test on or try to find a workaround.
  • Everything seems to be fine on GCN2 and 3 as well as Nvidia OpenCL, so we know the kernels work.
  • That means this is most likely a driver bug, which is something we cant fix anyways.
  • It seems that AMD hasn't provided updates for these cards in a while now.

Its very unfortunate that we have to drop support for those cards, but there's really nothing we can do about it. If AMD manages to fix all the issues we could enable them again, but there's no telling if or when that would happen, so for 2.79 they will be disabled.

As for the memory usage, it is expected. The way the split kernel works is it tries to render 100s of 1000s of rays concurrently, each ray kept in memory to pass from kernel to kernel, each of which processes a different part of rendering the rays. Each ray state is about 2kb-5kb in size (depending on the scene), so you have something like 2kb*(100000..1000000rays) = 200mb .. 2gb of storage. Cycles will detect the largest block of available memory on the device and will create just the right number of rays to fit into that memory, so even tho it looks like a lot it will never affect the ability to render a scene.