Skip to content

Latest commit

 

History

History
60 lines (42 loc) · 1.4 KB

File metadata and controls

60 lines (42 loc) · 1.4 KB

SYCL Extension Working NumPy Array Input via SYCL Buffers

Decription

Cython function expecting a 2D array in a C-contiguous layout that computes column-wise total by using SYCL oneMKL (as GEMV call with an all-units vector).

The example illustrates compiling SYCL extension that is linking to oneMKL.

Compiling

NOTE: Make sure oneAPI is activated, $ONEAPI_ROOT must be set.

To compile the example on Linux, run:

CC=icx CXX=icpx python setup.py build_ext --inplace -G Ninja

On Windows, run:

CC=icx CXX=icx python setup.py build_ext --inplace -G Ninja

Running

(dev_dpctl) opavlyk@opavlyk-mobl:~/repos/dpctl/examples/cython/sycl_buffer$ ipython
Python 3.9.12 (main, Jun  1 2022, 11:38:51)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import syclbuffer as sb, numpy as np, dpctl

In [2]: x = np.random.randn(10**6, 7).astype(np.float32)

In [3]: sb.columnwise_total(x)
Out[3]:
array([ -810.02496 ,    42.692146,  -786.71075 , -1417.643   ,
       -1096.2424  ,   212.33067 ,    18.40631 ], dtype=float32)

In [4]: np.sum(x, axis=0)
Out[4]:
array([ -810.03296 ,    42.68893 ,  -786.7023  , -1417.648   ,
       -1096.2699  ,   212.32564 ,    18.412518], dtype=float32)

Running bench.py:

$ python scripts/bench.py

Running tests:

$ python -m pytest tests