[Mesa-dev] [PATCH 1/2] gallium: add PIPE_COMPUTE_CAP_SUBGROUP_SIZE

Giuseppe Bilotta giuseppe.bilotta at gmail.com
Fri Jun 5 01:02:25 PDT 2015


> On Thu, May 28, 2015 at 1:04 PM, Grigori Goronzy <greg at chown.ath.cx> wrote:
>> @@ -286,6 +287,13 @@ ilo_get_compute_param(struct pipe_screen *screen,
>>        ptr = &val.images_supported;
>>        size = sizeof(val.images_supported);
>>        break;
>> +   case PIPE_COMPUTE_CAP_SUBGROUP_SIZE:
>> +      /* best case is SIMD32 */
>> +      val.subgroup_size = 32;
>> +
>> +      ptr = &val.subgroup_size;
>> +      size = sizeof(val.subgroup_size);
>> +      break;
>>     default:
>>        ptr = NULL;
>>        size = 0;
>
> Everything else seems fine to me, but IIRC Intel's IGPs have a SIMD
> width of 16, not 32. (Or if it depends on generation, we should
> probably have a lookup function like for r600).

Ok, scratch that. I was confused by the fact that Beignet reports a
preferred work-group size multiple of 16. Intel IGPs support _logical_
SIMD width of up to 32, but the _hardware_ SIMD width is just 4. So
the question is if here we should report the _hardware_ width, or the
maximum _logical_ width.

For OpenCL, the _logical_ aspect is the only relevant one, but I think
this should be handled on the OpenCL side of things (since it also
depends on things such as the vectorization of each specific kernel
and, for future OpenCL 2.0 support, even on the individual launch
grid). Here, I think the _hardware_ property should be reported
instead.

-- 
Giuseppe "Oblomov" Bilotta


More information about the mesa-dev mailing list