code: def copy2D_array_to_device(dst, src, type_sz, width, height):
      copy = cuda_driver.Memcpy2D()
      copy.set_src_array(src)
      copy.set_dst_device(dst)
      copy.height = height
      copy.dst_pitch = copy.src_pitch = copy.width_in_bytes = (
          width * type_sz
      )
      copy(aligned=True)
  
imports: from OpenGL.GL import *
  from OpenGL.GLUT import *
  from OpenGL.GLU import *
  from OpenGL.GL.ARB.vertex_buffer_object import *
  import numpy, Image
  import sys, time, os
  import pycuda.driver
  import pycuda.gl
  import pycuda
  from pycuda.compiler import SourceModule
label_desc: Use image node_id 1 for calling a global function with example usage: copy2D_array_to_device(dst, src, type_sz, width, height) without return types