11#ifndef PROTEUS_JITCACHE_H
12#define PROTEUS_JITCACHE_H
19#include <llvm/ADT/StringRef.h>
20#include <llvm/Demangle/Demangle.h>
24#include <unordered_map>
38 auto It = CacheMap.find(HashValue);
39 if (It == CacheMap.end())
42 It->second.NumExecs++;
45 return It->second.FunctionPtr;
48 void insert(
HashT &HashValue, Function_t FunctionPtr, StringRef FnName) {
50 if (CacheMap.count(HashValue))
62 printf(
"[proteus][%s] MemoryCache rank %s hits %lu accesses %lu\n",
63 Label.c_str(), DistributedRank.c_str(), Hits, Accesses);
64 for (
const auto &[HashValue, JCE] : CacheMap) {
65 std::cout <<
"[proteus][" << Label <<
"] MemoryCache rank "
66 << DistributedRank <<
" HashValue " << HashValue.toString()
67 <<
" NumExecs " << JCE.NumExecs <<
" NumHits " << JCE.NumHits;
69 std::cout <<
" FnName " << JCE.FnName;
82 size_t Specializations = 0;
83 uint64_t TotalLaunches = 0;
85 std::unordered_map<std::string, KernelStats> Grouped;
86 for (
const auto &[HashValue, JCE] : CacheMap) {
87 auto &KS = Grouped[JCE.FnName];
89 KS.TotalLaunches += JCE.NumExecs;
92 printf(
"[proteus][%s] === Kernel Trace (rank %s) ===\n", Label.c_str(),
93 DistributedRank.c_str());
94 for (
const auto &[MangledName, KS] : Grouped) {
95 std::string Name = llvm::demangle(MangledName);
96 printf(
"[proteus][%s] %s rank=%s specializations=%zu launches=%lu\n",
97 Label.c_str(), Name.c_str(), DistributedRank.c_str(),
98 KS.Specializations, KS.TotalLaunches);
100 printf(
"[proteus][%s] === End Kernel Trace ===\n", Label.c_str());
104 struct MemoryCacheEntry {
105 Function_t FunctionPtr;
111 std::unordered_map<HashT, MemoryCacheEntry> CacheMap;
113 uint64_t Accesses = 0;
114 const std::string Label;
115 const std::string DistributedRank;
#define TIMESCOPE(x)
Definition TimeTracing.h:59
std::string getDistributedRank()
Definition Utils.h:55
static Config & get()
Definition Config.h:334
bool ProteusDebugOutput
Definition Config.h:350
Definition MemoryCache.h:30
void printStats()
Definition MemoryCache.h:61
void insert(HashT &HashValue, Function_t FunctionPtr, StringRef FnName)
Definition MemoryCache.h:48
void printKernelTrace()
Definition MemoryCache.h:74
MemoryCache(const std::string &Label)
Definition MemoryCache.h:32
Function_t lookup(HashT &HashValue)
Definition MemoryCache.h:34
Definition CompiledLibrary.h:7
Definition MemoryCache.h:26
void reportFatalError(const llvm::Twine &Reason, const char *FILE, unsigned Line)
Definition Error.cpp:14
Definition ObjectCache.h:27