code: def pack_cols():
      code = r"""
  __global__ void pack_cols(float *a, unsigned int *b, int m, int n) {
      int j = blockIdx.x * blockDim.x + threadIdx.x;
      int i = blockIdx.y * blockDim.y + threadIdx.y;
  
      if (j < n && 32 * i < m) {
          float num;
          unsigned int rvalue = 0;
          unsigned int sign;
  
          for(int k = 0; k < 32; k++) {
              num = a[j + n * (32 * i + k)];
              sign = (num >= 0);
              rvalue = rvalue | (sign << k);
          }
          b[j + n * i] = rvalue;
      }
  }
  """
  
      module = SourceModule(code)
      kernel = module.get_function("pack_cols")
      sig = "2P 2I"
      kernel.prepare(sig)
      return kernel
  
file_path: neon/neon/backends/kernels/cuda/binary.py
imports: from pycuda.compiler import SourceModule
  from pycuda.tools import context_dependent_memoize
label_desc: Use image node_id 4 for calling a global function with example usage: pack_cols() and returns: kernel