https://bugzilla.kernel.org/show_bug.cgi?id=82581
Bug ID: 82581 Summary: CL_DEVICE_MAX_COMPUTE_UNITS increases by 100 every time runpm powers on 7970M pitcairn Product: Drivers Version: 2.5 Kernel Version: 3.16.1 Hardware: All OS: Linux Tree: Mainline Status: NEW Severity: normal Priority: P1 Component: Video(DRI - non Intel) Assignee: drivers_video-dri@kernel-bugs.osdl.org Reporter: haagch.christoph@googlemail.com Regression: No
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Wimbledon XT [Radeon HD 7970M] (rev ff)
linux 3.16.1
drmCommandWriteRead() in mesa receives the wrong value already so I put this here.
As long as the gpu is not powered off in between runs the value stays the same. When the gpu is powered off and on, the value will be increased by 100.
Test program output:
$ g++ numcomp.cpp -o numcomp -lOpenCL; ./numcomp; ./numcomp; sleep 10; ./numcomp; ./numcomp OpenCL Number of compute units: 7500 OpenCL Number of compute units: 7500 OpenCL Number of compute units: 7600 OpenCL Number of compute units: 7600
Test program source:
#include <CL/cl.hpp> #include <iostream> int main() { int err, numberOfComputeUnits = 0; std::vectorcl::Platform platformList; cl::Platform::get(&platformList); cl_context_properties cprops[3] = { CL_CONTEXT_PLATFORM, (cl_context_properties) (platformList[0])(), 0 }; cl::Context *context = new cl::Context(CL_DEVICE_TYPE_GPU, cprops, NULL, NULL, &err); std::vectorcl::Device devices = context->getInfo<CL_CONTEXT_DEVICES>(); devices[0].getInfo(CL_DEVICE_MAX_COMPUTE_UNITS, &numberOfComputeUnits); std::cout << "OpenCL Number of compute units: " << numberOfComputeUnits << std::endl;; return 0; }
Also with other tools like http://graphics.stanford.edu/~yoel/notes/clInfo.c: $ ./clInfo | grep MAX_COMPUTE_UNITS device[0x1118288]: MAX_COMPUTE_UNITS: 10400
https://bugzilla.kernel.org/show_bug.cgi?id=82581
Alex Deucher alexdeucher@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |alexdeucher@gmail.com
--- Comment #1 from Alex Deucher alexdeucher@gmail.com --- Created attachment 147041 --> https://bugzilla.kernel.org/attachment.cgi?id=147041&action=edit possible fix
The attached patch should fix it.
https://bugzilla.kernel.org/show_bug.cgi?id=82581
--- Comment #2 from Christoph Haag haagch.christoph@googlemail.com --- It helps for the issue of increasing.
But now it always returns 100.
I don't think the HD 7970M has 100 compute units.
http://www.amd.com/de-de/products/graphics/notebook/7900m#2 says "20 Compute Units (1280 Stream Processors)"
To see how it adds up to 100 I added some debug info like this:
printk("rdbg max_shader_engines: %d\n", rdev->config.si.max_shader_engines); printk("rdbg max_sh_per_se: %d\n", rdev->config.si.max_sh_per_se); printk("rdbg max_cu_per_sh: %d\n", rdev->config.si.max_cu_per_sh); for (i = 0; i < rdev->config.si.max_shader_engines; i++) { for (j = 0; j < rdev->config.si.max_sh_per_se; j++) { for (k = 0; k < rdev->config.si.max_cu_per_sh; k++) { rdev->config.si.active_cus += hweight32(si_get_cu_active_bitmap(rdev, i, j)); printk("rdbg inner: rdev->config.si.active_cus: %d, hweight32(si_get_cu_active_bitmap(rdev, %d, %d)): %d\n", rdev->config.si.active_cus, i, j, hweight32(si_get_cu_active_bitmap(rdev, i, j))); } } }
And then I got this output:
rdbg max_shader_engines: 2 rdbg max_sh_per_se: 2 rdbg max_cu_per_sh: 5 rdbg inner: rdev->config.si.active_cus: 5, hweight32(si_get_cu_active_bitmap(rdev, 0, 0)): 5 rdbg inner: rdev->config.si.active_cus: 10, hweight32(si_get_cu_active_bitmap(rdev, 0, 0)): 5 rdbg inner: rdev->config.si.active_cus: 15, hweight32(si_get_cu_active_bitmap(rdev, 0, 0)): 5 rdbg inner: rdev->config.si.active_cus: 20, hweight32(si_get_cu_active_bitmap(rdev, 0, 0)): 5 rdbg inner: rdev->config.si.active_cus: 25, hweight32(si_get_cu_active_bitmap(rdev, 0, 0)): 5 rdbg inner: rdev->config.si.active_cus: 30, hweight32(si_get_cu_active_bitmap(rdev, 0, 1)): 5 rdbg inner: rdev->config.si.active_cus: 35, hweight32(si_get_cu_active_bitmap(rdev, 0, 1)): 5 rdbg inner: rdev->config.si.active_cus: 40, hweight32(si_get_cu_active_bitmap(rdev, 0, 1)): 5 rdbg inner: rdev->config.si.active_cus: 45, hweight32(si_get_cu_active_bitmap(rdev, 0, 1)): 5 rdbg inner: rdev->config.si.active_cus: 50, hweight32(si_get_cu_active_bitmap(rdev, 0, 1)): 5 rdbg inner: rdev->config.si.active_cus: 55, hweight32(si_get_cu_active_bitmap(rdev, 1, 0)): 5 rdbg inner: rdev->config.si.active_cus: 60, hweight32(si_get_cu_active_bitmap(rdev, 1, 0)): 5 rdbg inner: rdev->config.si.active_cus: 65, hweight32(si_get_cu_active_bitmap(rdev, 1, 0)): 5 rdbg inner: rdev->config.si.active_cus: 70, hweight32(si_get_cu_active_bitmap(rdev, 1, 0)): 5 rdbg inner: rdev->config.si.active_cus: 75, hweight32(si_get_cu_active_bitmap(rdev, 1, 0)): 5 rdbg inner: rdev->config.si.active_cus: 80, hweight32(si_get_cu_active_bitmap(rdev, 1, 1)): 5 rdbg inner: rdev->config.si.active_cus: 85, hweight32(si_get_cu_active_bitmap(rdev, 1, 1)): 5 rdbg inner: rdev->config.si.active_cus: 90, hweight32(si_get_cu_active_bitmap(rdev, 1, 1)): 5 rdbg inner: rdev->config.si.active_cus: 95, hweight32(si_get_cu_active_bitmap(rdev, 1, 1)): 5 rdbg inner: rdev->config.si.active_cus: 100, hweight32(si_get_cu_active_bitmap(rdev, 1, 1)): 5
I think the k loop is already iterating over the compute units, but instead of 1 unit being added to the total, the result of si_get_cu_active_bitmap is added, which also seems to add up the compute units.
https://bugzilla.kernel.org/show_bug.cgi?id=82581
Alex Deucher alexdeucher@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #147041|0 |1 is obsolete| |
--- Comment #3 from Alex Deucher alexdeucher@gmail.com --- Created attachment 147161 --> https://bugzilla.kernel.org/attachment.cgi?id=147161&action=edit possible fix
This should do the trick.
https://bugzilla.kernel.org/show_bug.cgi?id=82581
--- Comment #4 from Christoph Haag haagch.christoph@googlemail.com --- OpenCL Number of compute units: 20
Works for me.
https://bugzilla.kernel.org/show_bug.cgi?id=82581
Christoph Haag haagch.christoph@googlemail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |CODE_FIX
--- Comment #5 from Christoph Haag haagch.christoph@googlemail.com --- Since it's in the 3.17 rc I use, I'm closing this as fixed.
dri-devel@lists.freedesktop.org