14 Replies Latest reply on Apr 16, 2012 10:25 AM by MicahVillmow

    register usage in kernel again...




      I have a problem with the register usage of one of my kernels again.

      Now I have a kernel which needs roughly 2500 Byte register space.

      I am running on a Radeon HD6450 where each Compute Unit has 256 KByte of register space available.

      The kernel has the following line before the actual __kernel... definition:

      __attribute__((reqd_work_group_size(64, 1, 1))).


      My aim here is to let the compiler use the maximum number of registers, because I will execute the kernel with only 128 work-items, or 2 wavefronts. And each wavefront should run on one compute unit.


      The problem is now, that the kernel uses spilled registers, which it shouldn't as far as I can see.


      - 2500 Byte register space per work-item

      - 64 work-items per wavefront

      - gives: 160'000 Byte register space per wavefront

      and with 256 KByte available per compute-unit, there is more than enough, so I don't understand the spill


      Can anyone point out where I lie wrong?