Writing Device Functions ======================== HSA device functions are functions that will run on the device but can only be invoked from a kernel or another device function. Unlike a kernel function, a device function can return a value like normal functions. To define a device function the kwarg ``device`` must be set to ``True`` in the ``roc.jit`` decorator:: from numba import roc @roc.jit(device=True) def a_device_function(a, b): return a + b An example of using a device function:: from numba import roc import numpy as np @roc.jit def kernel(an_array): pos = roc.get_global_id(0) if pos < an_array.size: # Check array boundaries an_array[pos] = a_device_function(1, pos) # call device function @roc.jit(device = True) def a_device_function(a, b): return a + b n = 16 x = np.zeros(n) kernel[1, n](x) print(x)