def find_emap(): """Search and read a perfmon event map. When the EVENTMAP environment variable is set read that, otherwise read the map for the current CPU. Return an emap object that contains the events and can be queried or None if nothing is found or the current CPU is unknown.""" el = os.getenv("EVENTMAP") if el and el.find("/") >= 0: try: return EmapNativeJSON(el) except IOError: return None if not el: el = event_download.get_cpustr() try: emap = EmapNativeJSON(event_download.eventlist_name(el)) if emap: return emap except IOError: pass try: event_download.download(el) return EmapNativeJSON(event_download.eventlist_name(el)) except IOError: pass return None
def json_with_offcore(el, need_oc): emap = EmapNativeJSON(event_download.eventlist_name(el, "core")) if not emap: return None oc = event_download.eventlist_name(el, "offcore") if os.path.exists(oc): emap.add_offcore(oc) elif need_oc: return None return emap
def json_with_extra(el): name = event_download.eventlist_name(el, "core") emap = EmapNativeJSON(name) if not emap or emap.error: print >>sys.stderr, "parsing", name, "failed" return None if experimental: try: emap.read_events(event_download.eventlist_name(el, "core experimental")) except IOError: pass add_extra_env(emap, el) return emap
def add_extra_env(emap, el): oc = os.getenv("OFFCORE") if oc: emap.add_offcore(oc) else: oc = event_download.eventlist_name(el, "offcore") if os.path.exists(oc): emap.add_offcore(oc) uc = os.getenv("UNCORE") if uc: emap.add_uncore(uc) else: uc = event_download.eventlist_name(el, "uncore") if os.path.exists(uc): emap.add_uncore(uc) return emap
def add_extra_env(emap, el): try: oc = os.getenv("OFFCORE") if oc: oc = canon_emapvar(oc, "matrix") emap.add_offcore(oc) else: oc = event_download.eventlist_name(el, "offcore") if os.path.exists(oc): emap.add_offcore(oc) if experimental: oc = event_download.eventlist_name(el, "offcore experimental") if os.path.exists(oc): emap.add_offcore(oc) except IOError: print >>sys.stderr, "Cannot open", oc try: uc = os.getenv("UNCORE") if uc: uc = canon_emapvar(uc, "uncore") emap.add_uncore(uc) else: uc = event_download.eventlist_name(el, "uncore") if os.path.exists(uc): emap.add_uncore(uc) if experimental: uc = event_download.eventlist_name(el, "uncore experimental") if os.path.exists(uc): emap.add_uncore(uc) except IOError: print >>sys.stderr, "Cannot open", uc try: e2 = os.getenv("EVENTMAP2") if e2: e2 = canon_emapvar(e2, "core") emap.read_events(e2) # don't try to download for now except IOError: print >>sys.stderr, "Cannot open", e2 try: u2 = os.getenv("UNCORE2") if u2: u2 = canon_emapvar(u2, "uncore") emap.add_uncore(u2, True) except IOError: print >>sys.stderr, "Cannot open", u2 return emap
def add_extra_env(emap, el): oc = os.getenv("OFFCORE") if oc: emap.add_offcore(oc) else: oc = event_download.eventlist_name(el, "offcore") if os.path.exists(oc): emap.add_offcore(oc) uc = os.getenv("UNCORE") if uc: emap.add_uncore(uc) else: uc = event_download.eventlist_name(el, "uncore") if os.path.exists(uc): emap.add_uncore(uc) e2 = os.getenv("EVENTMAP2") if e2: emap.read_events(e2) # don't try to download for now u2 = os.getenv("UNCORE2") if u2: emap.add_uncore(u2, True) return emap
def add_extra_env(emap, el): try: oc = os.getenv("OFFCORE") if oc: oc = canon_emapvar(oc, "matrix") oc = event_download.eventlist_name(el, "offcore") emap.add_offcore(oc) else: oc = event_download.eventlist_name(el, "offcore") if os.path.exists(oc): emap.add_offcore(oc) if experimental: oc = event_download.eventlist_name(el, "offcore experimental") if os.path.exists(oc): emap.add_offcore(oc) except IOError: print("Cannot open", oc, file=sys.stderr) try: uc = os.getenv("UNCORE") if uc: uc = canon_emapvar(uc, "uncore") uc = event_download.eventlist_name(uc, "uncore") emap.add_uncore(uc) else: uc = event_download.eventlist_name(el, "uncore") if os.path.exists(uc): emap.add_uncore(uc) if experimental: uc = event_download.eventlist_name(el, "uncore experimental") if os.path.exists(uc): emap.add_uncore(uc) except IOError: print("Cannot open", uc, file=sys.stderr) def read_map(env, typ, r): try: e2 = os.getenv(env) if e2: e2 = canon_emapvar(e2, typ) r(e2) # don't try to download for now except IOError: print("Cannot open", e2, file=sys.stderr) read_map("EVENTMAP2", "core", lambda r: emap.read_events(r)) read_map("EVENTMAP3", "core", lambda r: emap.read_events(r)) read_map("UNCORE2", "uncore", lambda r: emap.add_uncore(r))
def json_with_extra(el): emap = EmapNativeJSON(event_download.eventlist_name(el, "core")) if not emap: return None add_extra_env(emap, el) return emap