diff --git a/src/pyclblast/samples/saxpybatched.py b/src/pyclblast/samples/saxpybatched.py new file mode 100644 index 00000000..fa523945 --- /dev/null +++ b/src/pyclblast/samples/saxpybatched.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python + +# This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. +# This file follows the PEP8 Python style guide and uses a max-width of 100 characters per line. +# +# Author(s): +# Cedric Nugteren + +import numpy as np +import pyopencl as cl +from pyopencl.array import Array +import pyclblast + +# Settings for this sample: +batch_count = 2 +dtype = 'float32' +alphas = [1.5, 1.0] +n = 4 + +print("# Setting up OpenCL") +ctx = cl.create_some_context() +queue = cl.CommandQueue(ctx) + +print("# Setting up Numpy arrays") +x = np.random.rand(n * batch_count).astype(dtype=dtype) +y = np.random.rand(n * batch_count).astype(dtype=dtype) + +print("# Batch offsets: next after each other") +x_offsets = [0, n] +y_offsets = [0, n] + +print("# Setting up OpenCL arrays") +clx = Array(queue, x.shape, x.dtype) +cly = Array(queue, y.shape, y.dtype) +clx.set(x) +cly.set(y) + +print("# Example level-1 batched operation: AXPY-batched") +assert len(alphas) == len(x_offsets) == len(y_offsets) == batch_count +pyclblast.axpyBatched(queue, n, clx, cly, alphas, x_offsets, y_offsets) +queue.finish() + +print("# Full result for vector y: %s" % str(cly.get())) +for i in range(batch_count): + result = alphas[i] * x[x_offsets[i]:x_offsets[i] + n] + y[y_offsets[i]:y_offsets[i] + n] + print("# Expected result batch #%d: %s" % (i, str(result)))