class_docstr: GPU version of SparseBlockGemv. Check SparseBlockGemv's docstring for more
  information.
  
  This should not be directly called since the interface is subject
  to change without notice.  Use the sandbox.blocksparse.sparse_block_dot()
  function for a stable interface.
class_docstr_tok: ["GPU","version","of","SparseBlockGemv",".","Check","SparseBlockGemv","'s","docstring","for","more","information",".","This","should","not","be","directly","called","since","the","interface","is","subject","to","change","without","notice",".","Use","the","sandbox.blocksparse.sparse_block_dot","(",")","function","for","a","stable","interface","."]
code: def make_node(self, o, W, h, inputIdx, outputIdx):
      ctx = infer_context_name(o, W, h)
      o = as_gpuarray_variable(o, ctx)
      W = as_gpuarray_variable(W, ctx)
      h = as_gpuarray_variable(h, ctx)
      inputIdx = as_tensor_variable(inputIdx)
      outputIdx = as_tensor_variable(outputIdx)
      assert o.ndim == 3
      assert W.ndim == 4
      assert h.ndim == 3
      assert inputIdx.ndim == 2
      assert outputIdx.ndim == 2
  
      assert inputIdx.type.dtype in discrete_dtypes
      assert outputIdx.type.dtype in discrete_dtypes
  
      return Apply(self, [o, W, h, inputIdx, outputIdx], [o.type()])
  
imports: from __future__ import absolute_import, print_function, division
  import logging
  import numpy
  from theano import Apply, tensor
  from theano.gof import COp, ParamsType
  from theano.tensor import discrete_dtypes, as_tensor_variable
  from theano.scalar import bool
  from theano.gradient import grad_undefined
  from .type import gpu_context_type
  from .basic_ops import as_gpuarray_variable, infer_context_name, gpuarray_helper_inc_dir
label_desc: Use image node_id 5 for calling the GpuSparseBlockGemv obj's underlying member method code with example usage: obj.make_node(o, W, h, inputIdx, outputIdx) and returns: Apply