Remember that “kernel” is the term used for functions running on the GPU. In the same way that you need to define your own functions when you use a programming language, you need to write your own kernels.
In this section, we cover how you can do this.
General concepts
Inputs and output format: type + name.
Examples:
float32 a # NumPy data types can be usedT x # T = generic type
Elementwise kernels
<kernel name> = cp.ElementwiseKernel(
'<list of inputs>',
'<list of outputs>',
'<operation to perform>',
'<kernel name>'
)
---------------------------------------------------------------------------NameError Traceback (most recent call last)
CellIn[1], line 7 4returnmse_out 6# Dummy data----> 7y_pred=np.array([1.5,2.0,3.5,4.0],dtype=np.float32) 8y_true=np.array([1.0,2.5,3.5,3.0],dtype=np.float32) 10# Calculate MSENameError: name 'np' is not defined
mse_kernel = cp.ReductionKernel('T y_pred, T y_true','T mse_out','(y_pred - y_true) * (y_pred - y_true)','a + b','mse_out = a / _in_ind.size()','0','mse_kernel')