[Piglit] [PATCH 1/8] cl: Add atomic_sub global tests

Aaron Watry awatry at gmail.com
Tue Oct 28 05:54:22 PDT 2014


Thanks for looking at these.

Yes, I agree that they would be easier to understand with separate
output buffers...  I started these long enough ago that I don't
remember why I did it this way, but am just left with the impression
that I thought I had a good reason at the time.

I want to get these in for now, and if we want, I can refactor them to
split up the output arrays. The important bit is to make sure to avoid
barriers if at all possible, since r600g/radeonsi + clover doesn't yet
have working global barriers (at least last I checked).

--Aaron

On Fri, Oct 24, 2014 at 11:08 AM, Jan Vesely <jan.vesely at rutgers.edu> wrote:
> On Fri, 2014-10-24 at 07:55 -0500, Aaron Watry wrote:
>> Tests both usage of return value and no-return-usage variants.
>>
>> Signed-off-by: Aaron Watry <awatry at gmail.com>
>
> I think it would be easier to read/understand if the return variants
> used separate output buffer for the return values instead of offset
> magic.
>
> either way, for the series
> Reviewed-by: Jan Vesely <jan.vesely at rutgers.edu>
>
>> ---
>>  .../builtin/atomic/atomic_sub-global-return.cl     | 62 ++++++++++++++++++++++
>>  .../execute/builtin/atomic/atomic_sub-global.cl    | 59 ++++++++++++++++++++
>>  2 files changed, 121 insertions(+)
>>  create mode 100644 tests/cl/program/execute/builtin/atomic/atomic_sub-global-return.cl
>>  create mode 100644 tests/cl/program/execute/builtin/atomic/atomic_sub-global.cl
>>
>> diff --git a/tests/cl/program/execute/builtin/atomic/atomic_sub-global-return.cl b/tests/cl/program/execute/builtin/atomic/atomic_sub-global-return.cl
>> new file mode 100644
>> index 0000000..8d826be
>> --- /dev/null
>> +++ b/tests/cl/program/execute/builtin/atomic/atomic_sub-global-return.cl
>> @@ -0,0 +1,62 @@
>> +/*!
>> +[config]
>> +name: atomic_sub global, with usage of return variable
>> +clc_version_min: 11
>> +
>> +[test]
>> +name: simple int
>> +kernel_name: simple_int
>> +dimensions: 1
>> +global_size: 1 0 0
>> +local_size:  1 0 0
>> +arg_out: 0 buffer int[2] -6 -4
>> +arg_in:  0 buffer int[2] -4 0
>> +
>> +[test]
>> +name: simple uint
>> +kernel_name: simple_uint
>> +dimensions: 1
>> +global_size: 1 0 0
>> +local_size:  1 0 0
>> +arg_out: 0 buffer uint[2] 1 3
>> +arg_in:  0 buffer uint[2] 3 0
>> +
>> +[test]
>> +name: threads int
>> +kernel_name: threads_int
>> +dimensions: 1
>> +global_size: 8 0 0
>> +local_size:  8 0 0
>> +arg_out: 0 buffer int[18] 0  0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8
>> +arg_in:  0 buffer int[18] 28 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0
>> +
>> +[test]
>> +name: threads uint
>> +kernel_name: threads_uint
>> +dimensions: 1
>> +global_size: 8 0 0
>> +local_size:  8 0 0
>> +arg_out: 0 buffer uint[18] 0  0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8
>> +arg_in:  0 buffer uint[18] 28 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0
>> +
>> +!*/
>> +
>> +#define SIMPLE_TEST(TYPE) \
>> +kernel void simple_##TYPE(global TYPE *mem) { \
>> +  mem[1] = atomic_sub(mem, 2); \
>> +}
>> +
>> +#define THREADS_TEST(TYPE) \
>> +kernel void threads_##TYPE(global TYPE *mem) { \
>> +  TYPE mul = mem[1]; \
>> +  TYPE id = get_global_id(0); \
>> +  TYPE ret = atomic_sub(mem, id); \
>> +  TYPE ret2 = atomic_sub(&mem[(id+1)*2], id+ret*mul); \
>> +  mem[(id+1)*2+1] = ret2; \
>> +}
>> +
>> +SIMPLE_TEST(int)
>> +SIMPLE_TEST(uint)
>> +
>> +THREADS_TEST(int)
>> +THREADS_TEST(uint)
>> diff --git a/tests/cl/program/execute/builtin/atomic/atomic_sub-global.cl b/tests/cl/program/execute/builtin/atomic/atomic_sub-global.cl
>> new file mode 100644
>> index 0000000..a3dca39
>> --- /dev/null
>> +++ b/tests/cl/program/execute/builtin/atomic/atomic_sub-global.cl
>> @@ -0,0 +1,59 @@
>> +/*!
>> +[config]
>> +name: atomic_sub global, no usage of return variable
>> +clc_version_min: 11
>> +
>> +[test]
>> +name: simple int
>> +kernel_name: simple_int
>> +dimensions: 1
>> +global_size: 1 0 0
>> +local_size:  1 0 0
>> +arg_out: 0 buffer int[1] -6
>> +arg_in:  0 buffer int[1] -4
>> +
>> +[test]
>> +name: simple uint
>> +kernel_name: simple_uint
>> +dimensions: 1
>> +global_size: 1 0 0
>> +local_size:  1 0 0
>> +arg_out: 0 buffer uint[1] 1
>> +arg_in:  0 buffer uint[1] 3
>> +
>> +[test]
>> +name: threads int
>> +kernel_name: threads_int
>> +dimensions: 1
>> +global_size: 8 0 0
>> +local_size:  8 0 0
>> +arg_out: 0 buffer int[1] 0
>> +arg_in:  0 buffer int[1] 28
>> +
>> +[test]
>> +name: threads uint
>> +kernel_name: threads_uint
>> +dimensions: 1
>> +global_size: 8 0 0
>> +local_size:  8 0 0
>> +arg_out: 0 buffer uint[1] 0
>> +arg_in:  0 buffer uint[1] 28
>> +
>> +!*/
>> +
>> +#define SIMPLE_TEST(TYPE) \
>> +kernel void simple_##TYPE(global TYPE *mem) { \
>> +  atomic_sub(mem, 2); \
>> +}
>> +
>> +#define THREADS_TEST(TYPE) \
>> +kernel void threads_##TYPE(global TYPE *mem) { \
>> +  TYPE id = get_global_id(0); \
>> +  atomic_sub(mem, id); \
>> +}
>> +
>> +SIMPLE_TEST(int)
>> +SIMPLE_TEST(uint)
>> +
>> +THREADS_TEST(int)
>> +THREADS_TEST(uint)
>
> --
> Jan Vesely <jan.vesely at rutgers.edu>


More information about the Piglit mailing list