(func, start, end, output)
return wrapper
:param func: Function that is timed
        :param start: Start marker
        :param end: End marker
        :param output: Array to which func execution time will be appended
        :return: Wrapped function
:param func: Function that is timed
        :param start: Start marker
        :param end: End marker
        :param output: Array to which func execution time will be appended
        :return: Wrapped function
: param func : Function that is timed : param start : Start marker : param end : End marker : param output : Array to which func execution time will be appended : return : Wrapped function
def benchmarked(func, start, end, output):
        '''
        :param func: Function that is timed
        :param start: Start marker
        :param end: End marker
        :param output: Array to which func execution time will be appended
        :return: Wrapped function
        '''
        nerv_be = NervanaObject.be

        @wraps(func)
        def wrapper(*args, **kwargs):
            nerv_be.record_mark(start)
            res = func(*args, **kwargs)
            nerv_be.record_mark(end)
            nerv_be.synchronize_mark(end)
            output.append(nerv_be.get_time(start, end))
            return res

        return wrapper
def benchmarked ( func , start , end , output ) : nerv_be = NervanaObject . be @ wraps ( func ) def wrapper ( * args , * * kwargs ) : nerv_be . record_mark ( start ) res = func ( * args , * * kwargs ) nerv_be . record_mark ( end ) nerv_be . synchronize_mark ( end ) output . append ( nerv_be . get_time ( start , end ) ) return res return wrapper