From 3d0c227fa5004067d857c74f7963876b34ed4170 Mon Sep 17 00:00:00 2001 From: Cedric Nugteren Date: Sun, 7 May 2023 20:02:52 +0200 Subject: AMAX/AMIN integer testing and bug fixes (#457) * Fixed a bug in XAMAX/XMIN routines that caused the increment and offset to be included in the result * Perform proper integer-output testing in XAMAX tests * A few changes towards getting it ready for a PR * Also fix compilation for clBLAS and cuBLAS references * Fix a bug that would only use the real part of complex numbers in the amax/amin routines * A few small fixes related to the AMAX tests --- scripts/generator/generator/routine.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'scripts/generator/generator/routine.py') diff --git a/scripts/generator/generator/routine.py b/scripts/generator/generator/routine.py index 8b6ab57f..c2201c0d 100644 --- a/scripts/generator/generator/routine.py +++ b/scripts/generator/generator/routine.py @@ -282,7 +282,10 @@ class Routine: """As above but for OpenCL""" prefix = "const " if name in self.inputs else "" if name in self.inputs or name in self.outputs: - a = [prefix + "Buffer<" + flavour.buffer_type + ">& " + name + "_buffer"] + if name == "imax": + a = [prefix + "Buffer& " + name + "_buffer"] + else: + a = [prefix + "Buffer<" + flavour.buffer_type + ">& " + name + "_buffer"] b = ["const size_t " + name + "_offset"] c = ["const size_t " + name + "_" + self.postfix(name)] if name not in self.buffers_without_ld_inc() else [] return [", ".join(a + b + c)] @@ -292,7 +295,10 @@ class Routine: """As above but for CUDA""" prefix = "const " if name in self.inputs else "" if name in self.inputs or name in self.outputs: - a = [prefix + flavour.buffer_type + "* " + name + "_buffer"] + if name == "imax": + a = [prefix + "unsigned int * " + name + "_buffer"] + else: + a = [prefix + flavour.buffer_type + "* " + name + "_buffer"] b = ["const size_t " + name + "_offset"] c = ["const size_t " + name + "_" + self.postfix(name)] if name not in self.buffers_without_ld_inc() else [] return [", ".join(a + b + c)] @@ -302,7 +308,10 @@ class Routine: """As above but as vectors""" prefix = "const " if name in self.inputs else "" if name in self.inputs or name in self.outputs: - a = [prefix + "std::vector<" + flavour.buffer_type + ">& " + name + "_buffer"] + if name == "imax": + a = [prefix + "std::vector& " + name + "_buffer"] + else: + a = [prefix + "std::vector<" + flavour.buffer_type + ">& " + name + "_buffer"] b = ["const size_t " + name + "_offset"] c = ["const size_t " + name + "_" + self.postfix(name)] if name not in self.buffers_without_ld_inc() else [] return [", ".join(a + b + c)] -- cgit v1.2.3