Re: [Piglit] [PATCH v2 3/3] cl: Replace handwritten vload tests with a generator
Quoting Jan Vesely (2017-08-23 12:38:53) > Hi Dylan, > > do you mind taking a look at the python parts? > > thanks, > Jan Sure, I have a few comments, but mostly this looks okay, my comments are mostly style nits anyway. Dylan > On Wed, 2017-08-16 at 20:39 -0400, Jan Vesely wrote: > > v2: simplify > > mark local storage volatile > > Passes on beignet(IVB), and intel CPU > > > > Signed-off-by: Jan Vesely> > --- > > clover on carrizo passes as well, apart from vload_half tests, because > > the function is missing in libclc > > > > + [snip] > > +from __future__ import print_function, division, absolute_import > > +import os > > +import textwrap > > +import random please sort the os, textwrap, and radom imports > > + > > +from six.moves import range > > + > > +from modules import utils > > + > > +TYPES = ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'long', > > 'ulong', 'half', 'float', 'double'] > > +VEC_SIZES = ['2', '4', '8', '16'] > > + > > +dirName = os.path.join("cl", "vload") module level constants should be all caps with underscores like TYPES and VEC_SIZES > > + > > + > > +def gen_array(size): > > +random.seed(size) > > +return [str(random.randint(0, 255)) for i in range(size)] > > + > > + > > +def ext_req(type_name): > > +if type_name[:6] == "double": > > +return "require_device_extensions: cl_khr_fp64" > > +if type_name[:6] == "half": Should this be [:4]? > > +return "require_device_extensions: cl_khr_fp16" > > +return "" > > + > > +def begin_test(suffix, type_name, mem_type, vec_sizes, addr_space): > > +fileName = os.path.join(dirName, 'vload'+ suffix + '-' + type_name + > > '-' + addr_space + '.cl') I think that using str.format here is much more readable: fileName = os.path.join(dirName, "vload{}-{}-{}.cl".format(suffix, type_name, addr_space)) Also, could you use file_name instead of fileName, in keeping with our python style? > > +print(fileName) > > +f = open(fileName, 'w') > > +f.write(textwrap.dedent((""" You can add a \ to the end of """ to avoid an extra newline at the top of the file, if you like > > +/*! > > +[config] > > +name: Vector load{suffix} {addr_space} {type_name}2,4,8,16 > > +clc_version_min: 10 > > + > > +dimensions: 1 > > +global_size: 1 0 0 > > +""" + ext_req(type_name)) > > +.format(type_name=type_name, addr_space=addr_space, suffix=suffix))) > > +for s in vec_sizes: > > +size = int(s) if s != '' else 1 > > +data_array = gen_array(size) > > +ty_name = type_name + s > > +f.write(textwrap.dedent(""" > > +[test] > > +name: vector load{suffix} {addr_space} {type_name} > > +kernel_name: vload{suffix}{n}_{addr_space} > > +arg_in: 0 buffer {mem_type}[{size}] 0 {gen_array} > > +arg_out: 1 buffer {type_name}[2] {first_array} {gen_array} > > + > > +[test] > > +name: vector load{suffix} {addr_space} offset {type_name} > > +kernel_name: vload{suffix}{n}_{addr_space}_offset > > +arg_in: 0 buffer {mem_type}[{offset_size}] {zeros}{gen_array} > > +arg_out: 1 buffer {type_name}[2] {first_array} {gen_array} > > +""".format(type_name=ty_name, mem_type=mem_type, size=size + 1, > > + zeros=("0 " * (size + 1)), offset_size=size*2 + 1, n=s, Spaces around the * operator please (offset_size=size * 2 + 1,) > > + gen_array=' '.join(data_array), suffix=suffix, > > + addr_space=addr_space, > > + first_array="0 " + ' '.join(data_array[:-1] > > + > > +f.write(textwrap.dedent(""" > > +!*/ > > +""")) > > +if type_name == "double": > > +f.write(textwrap.dedent(""" > > +#pragma OPENCL EXTENSION cl_khr_fp64: enable > > +""")) > > +if type_name == "half": > > +f.write(textwrap.dedent(""" > > +#pragma OPENCL EXTENSION cl_khr_fp16: enable > > +""")) > > +return f Two new lines between top level functions and classes please. > > + > > +def gen_test_constant_global(suffix, t, mem_type, vec_sizes, addr_space): > > +f = begin_test(suffix, t, mem_type, vec_sizes, addr_space) > > +for s in vec_sizes: > > +type_name = t + s > > +f.write(textwrap.dedent(""" > > +kernel void vload{suffix}{n}_{addr_space}({addr_space} {mem_type} > > *in, > > + global {type_name} *out) {{ > > +out[0] = vload{suffix}{n}(0, in); > > +out[1] = vload{suffix}{n}(0, in + 1); > > +}} > > + > > +kernel void vload{suffix}{n}_{addr_space}_offset({addr_space} > > {mem_type} *in, > > +global {type_name} *out) {{ > > +out[0] = vload{suffix}{n}(1, in); > > +out[1] = vload{suffix}{n}(1, in + 1); > > +}} > > +""".format(type_name=type_name,
Re: [Piglit] [PATCH v2 3/3] cl: Replace handwritten vload tests with a generator
Hi Dylan, do you mind taking a look at the python parts? thanks, Jan On Wed, 2017-08-16 at 20:39 -0400, Jan Vesely wrote: > v2: simplify > mark local storage volatile > Passes on beignet(IVB), and intel CPU > > Signed-off-by: Jan Vesely> --- > clover on carrizo passes as well, apart from vload_half tests, because > the function is missing in libclc > > generated_tests/CMakeLists.txt | 4 + > generated_tests/gen_cl_vload_tests.py | 212 > + > tests/cl.py| 2 + > tests/cl/program/execute/vload-constant-int.cl | 64 > tests/cl/program/execute/vload-int.cl | 175 > tests/cl/program/execute/vload-local-int.cl| 105 > tests/cl/program/execute/vload-private-int.cl | 105 > 7 files changed, 218 insertions(+), 449 deletions(-) > create mode 100644 generated_tests/gen_cl_vload_tests.py > delete mode 100644 tests/cl/program/execute/vload-constant-int.cl > delete mode 100644 tests/cl/program/execute/vload-int.cl > delete mode 100644 tests/cl/program/execute/vload-local-int.cl > delete mode 100644 tests/cl/program/execute/vload-private-int.cl > > diff --git a/generated_tests/CMakeLists.txt b/generated_tests/CMakeLists.txt > index 44572bdf6..fe82ccfa4 100644 > --- a/generated_tests/CMakeLists.txt > +++ b/generated_tests/CMakeLists.txt > @@ -214,6 +214,9 @@ piglit_make_generated_tests( > cl_vstore_tests.list > gen_cl_vstore_tests.py) > piglit_make_generated_tests( > + cl_vload_tests.list > + gen_cl_vload_tests.py) > +piglit_make_generated_tests( > builtin_cl_math_tests.list > gen_cl_math_builtins.py) > piglit_make_generated_tests( > @@ -271,6 +274,7 @@ add_custom_target(gen-cl-tests > builtin_cl_common_tests.list > cl_store_tests.list > cl_vstore_tests.list > + cl_vload_tests.list > ) > > # Add a "gen-tests" target that can be used to generate all the > diff --git a/generated_tests/gen_cl_vload_tests.py > b/generated_tests/gen_cl_vload_tests.py > new file mode 100644 > index 0..7ebb20fa7 > --- /dev/null > +++ b/generated_tests/gen_cl_vload_tests.py > @@ -0,0 +1,212 @@ > +# Copyright 2016 Advanced Micro Devices, Inc. > +# > +# Permission is hereby granted, free of charge, to any person obtaining a > +# copy of this software and associated documentation files (the "Software"), > +# to deal in the Software without restriction, including without limitation > +# the rights to use, copy, modify, merge, publish, distribute, sublicense, > +# and/or sell copies of the Software, and to permit persons to whom the > +# Software is furnished to do so, subject to the following conditions: > +# > +# The above copyright notice and this permission notice (including the next > +# paragraph) shall be included in all copies or substantial portions of the > +# Software. > +# > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > FROM, > +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN > THE > +# SOFTWARE. > + > +from __future__ import print_function, division, absolute_import > +import os > +import textwrap > +import random > + > +from six.moves import range > + > +from modules import utils > + > +TYPES = ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'long', 'ulong', > 'half', 'float', 'double'] > +VEC_SIZES = ['2', '4', '8', '16'] > + > +dirName = os.path.join("cl", "vload") > + > + > +def gen_array(size): > +random.seed(size) > +return [str(random.randint(0, 255)) for i in range(size)] > + > + > +def ext_req(type_name): > +if type_name[:6] == "double": > +return "require_device_extensions: cl_khr_fp64" > +if type_name[:6] == "half": > +return "require_device_extensions: cl_khr_fp16" > +return "" > + > +def begin_test(suffix, type_name, mem_type, vec_sizes, addr_space): > +fileName = os.path.join(dirName, 'vload'+ suffix + '-' + type_name + '-' > + addr_space + '.cl') > +print(fileName) > +f = open(fileName, 'w') > +f.write(textwrap.dedent((""" > +/*! > +[config] > +name: Vector load{suffix} {addr_space} {type_name}2,4,8,16 > +clc_version_min: 10 > + > +dimensions: 1 > +global_size: 1 0 0 > +""" + ext_req(type_name)) > +.format(type_name=type_name, addr_space=addr_space, suffix=suffix))) > +for s in vec_sizes: > +size = int(s) if s != '' else 1 > +data_array = gen_array(size) > +ty_name = type_name + s > +
Re: [Piglit] [PATCH] draw-pixels: fix KHR_no_error logic
On 08/23/2017 06:11 AM, Timothy Arceri wrote: --- This was my fault. The flaw was in my suggestion from the code review. You probably need to use PIGLIT_HAS_ERRORS as well. tests/general/draw-pixels.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/general/draw-pixels.c b/tests/general/draw-pixels.c index 40b4c0b0f..333bb7f86 100644 --- a/tests/general/draw-pixels.c +++ b/tests/general/draw-pixels.c @@ -730,22 +730,24 @@ piglit_display(void) glPixelStorei(GL_UNPACK_ALIGNMENT, 1); for (i = 0; i < ARRAY_SIZE(data_types); i++) { for (k = 0; k < ARRAY_SIZE(pixel_ops); k++) { for (j = 0; j < ARRAY_SIZE(pixel_formats); j++) { format = pixel_formats[j]; type = data_types[i]; -if (!piglit_khr_no_error && - is_format_type_mismatch(format, type)) { + if (is_format_type_mismatch(format, type)) { + if (piglit_khr_no_error) + continue; + glDrawPixels(piglit_width, piglit_height, format, type, pixels); /* Here GL_INVALID_OPERATION is an * expected GL error */ pass = piglit_check_gl_error( GL_INVALID_OPERATION) && pass; continue; } ___ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit