docstr: :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
docstr_tok: [":","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"]
code: 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
  
file_path: neon/neon/benchmark/benchmark.py
imports: from functools import wraps
  from neon import NervanaObject
  from collections import OrderedDict
  from neon import __version__
  from neon import logger
  from neon.layers.container import LayerContainer
  import numpy
label_desc: Use image node_id 2 for calling the Benchmark obj's underlying member method code with example usage: obj.benchmarked(func, start, end, output) and returns: wrapper, res