OpenCL Type Mapping#
Scalar Types#
For ease of use, a the pyopencl.cltypes module provides convenient mapping
from OpenCL type names to their equivalent numpy types. This saves you
from referring back to the OpenCL spec to see that a cl_long is 64 bit
unsigned integer. Use the module as follows:
>>> import numpy as np
>>> import pyopencl as cl
>>> import pyopencl.cltypes
>>> cl_uint = cl.cltypes.uint(42) # maps to numpy.uint32
>>> cl_long = cl.cltypes.long(1235) # maps to numpy.int64
>>> floats = np.empty((128,), dtype=cl.cltypes.float) # array of numpy.float32
Note
The OpenCL type bool does not have a corresponding numpy type
defined here, because OpenCL does not specify the in-memory representation
(or even the storage size) for this type.
Vector Types#
The corresponding vector types are also made available in the same package,
allowing you to easily create numpy arrays with the appropriate memory
layout.
>>> import numpy as np
>>> array_of_float16 = np.empty((128,), dtype=cl.cltypes.float16) # array of float16