PyCUDA also has element-wise functionality:
ElementwiseKernel(arguments,operation,name,optional_parameters)
This feature has pretty much the same arguments as the function built for PyOpenCL, except for the context parameter. The same example this section, which is implemented through PyCUDA, has the following listing:
import pycuda.autoinit import numpy from pycuda.elementwise import ElementwiseKernel import numpy.linalg as la vector_dimension=100 input_vector_a = np.random.randint(100,size= vector_dimension) input_vector_b = np.random.randint(100,size= vector_dimension) output_vector_c = gpuarray.empty_like(input_vector_a) elementwiseSum = ElementwiseKernel(" int *a, int * b, int *c", "c[i] = a[i] + b[i]"," elementwiseSum ") elementwiseSum(input_vector_a, input_vector_b,output_vector_c) print ("PyCUDA ELEMENTWISE SUM OF TWO VECTORS") print ("VECTOR LENGTH = %s" %vector_dimension) print ("INPUT VECTOR A") print (vector_a) print ("INPUT VECTOR B") print (vector_b) print ("OUTPUT VECTOR RESULT A + B ") print (result_vector)