def METHOD_NAME() -> Callable[[int], object]:
    """Return a function to create an empty CUDA buffer"""
    global _new_cuda_buffer
    if _new_cuda_buffer is not None:
        return _new_cuda_buffer
    try:
        import rmm
        _new_cuda_buffer = lambda n: rmm.DeviceBuffer(size=n)
        return _new_cuda_buffer
    except ImportError:
        pass
    try:
        import cupy
        _new_cuda_buffer = lambda n: cupy.empty((n,), dtype="u1")
        return _new_cuda_buffer
    except ImportError:
        pass
    try:
        import numba.cuda
        def numba_device_array(n):
            a = numba.cuda.device_array((n,), dtype="u1")
            weakref.finalize(a, numba.cuda.current_context)
            return a
        _new_cuda_buffer = numba_device_array
        return _new_cuda_buffer
    except ImportError:
        pass
    raise RuntimeError("GPUDirect Storage requires RMM, CuPy, or Numba")