Source code for cudapyint.PyCudaUtils
import pycuda.driver as driver
[docs]def create_2D_array( mat ):
"""
Creates a 2D array on the GPU which can be used to assign texture memory from 2D numpy array
:param mat: the 2D array to use
"""
descr = driver.ArrayDescriptor()
descr.width = mat.shape[1]
descr.height = mat.shape[0]
descr.format = driver.dtype_to_array_format( mat.dtype )
descr.num_channels = 1
descr.flags = 0
ary = driver.Array(descr)
return ary
[docs]def copy2D_host_to_array(arr, host, width, height ):
"""
Copies the array from the host to the device
:param arr: the GPU array
:param host: the source on the host
:param width: width of the array
:param height: height of the array
"""
copy = driver.Memcpy2D()
copy.set_src_host(host)
copy.set_dst_array(arr)
copy.height = height
copy.width_in_bytes = copy.src_pitch = width
copy.height = height
copy(aligned=True)
[docs]def copy_host_to_device(src):
"""
Allocates the memory on the device and copies the data
:param src: the source data structure
:returns:
y: handle to data structure on device
"""
dst = driver.mem_alloc(src.size * src.dtype.itemsize)
driver.memcpy_htod(dst, src)
return dst