docstr: Range with loop unrolling support.
  
  Args:
      start (int):
          Same as that of built-in :obj:`range`.
      stop (int):
          Same as that of built-in :obj:`range`.
      step (int):
          Same as that of built-in :obj:`range`.
      unroll (int or bool or None):
  
          - If `True`, add ``#pragma unroll`` directive before the
            loop.
          - If `False`, add ``#pragma unroll(1)`` directive before
            the loop to disable unrolling.
          - If an `int`, add ``#pragma unroll(n)`` directive before
            the loop, where the integer ``n`` means the number of
            iterations to unroll.
          - If `None` (default), leave the control of loop unrolling
            to the compiler (no ``#pragma``).
  
  .. seealso:: `#pragma unroll`_
  
  .. _#pragma unroll:
      https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#pragma-unroll
docstr_tok: ["Range","with","loop","unrolling","support",".","Args",":","start","(","int",")",":","Same","as","that","of","built-in",":","obj",":","`","range","`",".","stop","(","int",")",":","Same","as","that","of","built-in",":","obj",":","`","range","`",".","step","(","int",")",":","Same","as","that","of","built-in",":","obj",":","`","range","`",".","unroll","(","int","or","bool","or","None",")",":","-","If","`","True","`",",","add","``","#","pragma","unroll","``","directive","before","the","loop",".","-","If","`","False","`",",","add","``","#","pragma","unroll","(","1",")","``","directive","before","the","loop","to","disable","unrolling",".","-","If","an","`","int","`",",","add","``","#","pragma","unroll","(","n",")","``","directive","before","the","loop",",","where","the","integer","``","n","``","means","the","number","of","iterations","to","unroll",".","-","If","`","None","`","(","default",")",",","leave","the","control","of","loop","unrolling","to","the","compiler","(","no","``","#","pragma","``",")",".","..","seealso",":",":","`","#","pragma","unroll","`","_","..","_","#","pragma","unroll",":","https",":","\/\/docs.nvidia.com\/cuda\/cuda-c-programming-guide\/index.html","#","pragma-unroll"]
code: def __call__(self, *args, unroll=None):
      """Range with loop unrolling support.
  
      Args:
          start (int):
              Same as that of built-in :obj:`range`.
          stop (int):
              Same as that of built-in :obj:`range`.
          step (int):
              Same as that of built-in :obj:`range`.
          unroll (int or bool or None):
  
              - If `True`, add ``#pragma unroll`` directive before the
                loop.
              - If `False`, add ``#pragma unroll(1)`` directive before
                the loop to disable unrolling.
              - If an `int`, add ``#pragma unroll(n)`` directive before
                the loop, where the integer ``n`` means the number of
                iterations to unroll.
              - If `None` (default), leave the control of loop unrolling
                to the compiler (no ``#pragma``).
  
      .. seealso:: `#pragma unroll`_
  
      .. _#pragma unroll:
          https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#pragma-unroll
      """
      super().__call__()
  
imports: from typing import Any, Mapping
  import warnings
  import cupy
  from cupy_backends.cuda.api import runtime
  from cupy.cuda import device
  from cupyx.jit import _cuda_types
  from cupyx.jit import _cuda_typerules
  from cupyx.jit._internal_types import BuiltinFunc
  from cupyx.jit._internal_types import Data
  from cupyx.jit._internal_types import Constant
  from cupyx.jit._internal_types import Range
  from cupyx.jit import _compile
  from functools import reduce
label_desc: Use image node_id 1 for calling the RangeFunc obj's underlying member method code with example usage: obj.__call__() without return types