class_docstr: Wraps around `cupy.RawModule` and `cupy.RawKernel` to verify CuPy availability
  and lazily compile the latter on first invocation.
  
  The default CuPy behaviour triggers the compilation as soon as the `cupy.RawKernel` object
  is accessed.
class_docstr_tok: ["Wraps","around","`","cupy.RawModule","`","and","`","cupy.RawKernel","`","to","verify","CuPy","availability","and","lazily","compile","the","latter","on","first","invocation",".","The","default","CuPy","behaviour","triggers","the","compilation","as","soon","as","the","`","cupy.RawKernel","`","object","is","accessed","."]
code: def __init__(
      self,
      name: str,
      *,
      compile_callback: Optional[Callable[[], "cupy.RawKernel"]] = None,
  ) -> None:
      self.name = name
      self._kernel = None
      self._compile_callback = compile_callback
  
imports: import operator
  import re
  from collections import defaultdict
  from functools import reduce
  from pathlib import Path
  from typing import Callable, Optional, Tuple
  import numpy
  from ..compat import cupy, has_cupy_gpu
label_desc: Use image node_id 1 to create a new LazyKernel object  with example: obj = LazyKernel(name)