11#ifndef PROTEUS_JITCACHE_H
12#define PROTEUS_JITCACHE_H
19#include <llvm/ADT/StringRef.h>
20#include <llvm/Demangle/Demangle.h>
25#include <unordered_map>
39 auto It = CacheMap.find(HashValue);
40 if (It == CacheMap.end())
43 It->second.NumExecs++;
46 return It->second.FunctionPtr;
49 void insert(
HashT &HashValue, Function_t FunctionPtr, StringRef FnName) {
51 if (CacheMap.count(HashValue))
63 printf(
"[proteus][%s] MemoryCache rank %s hits %" PRIu64
64 " accesses %" PRIu64
"\n",
65 Label.c_str(), DistributedRank.c_str(), Hits, Accesses);
66 for (
const auto &[HashValue, JCE] : CacheMap) {
67 std::cout <<
"[proteus][" << Label <<
"] MemoryCache rank "
68 << DistributedRank <<
" HashValue " << HashValue.toString()
69 <<
" NumExecs " << JCE.NumExecs <<
" NumHits " << JCE.NumHits;
71 std::cout <<
" FnName " << JCE.FnName;
84 size_t Specializations = 0;
85 uint64_t TotalLaunches = 0;
87 std::unordered_map<std::string, KernelStats> Grouped;
88 for (
const auto &[HashValue, JCE] : CacheMap) {
89 auto &KS = Grouped[JCE.FnName];
91 KS.TotalLaunches += JCE.NumExecs;
94 printf(
"[proteus][%s] === Kernel Trace (rank %s) ===\n", Label.c_str(),
95 DistributedRank.c_str());
96 for (
const auto &[MangledName, KS] : Grouped) {
97 std::string Name = llvm::demangle(MangledName);
99 "[proteus][%s] %s rank=%s specializations=%zu launches=%" PRIu64
101 Label.c_str(), Name.c_str(), DistributedRank.c_str(),
102 KS.Specializations, KS.TotalLaunches);
104 printf(
"[proteus][%s] === End Kernel Trace ===\n", Label.c_str());
108 struct MemoryCacheEntry {
109 Function_t FunctionPtr;
115 std::unordered_map<HashT, MemoryCacheEntry> CacheMap;
117 uint64_t Accesses = 0;
118 const std::string Label;
119 const std::string DistributedRank;
#define TIMESCOPE(...)
Definition TimeTracing.h:66
std::string getDistributedRank()
Definition Utils.h:55
static Config & get()
Definition Config.h:334
bool ProteusDebugOutput
Definition Config.h:350
Definition MemoryCache.h:31
void printStats()
Definition MemoryCache.h:62
void insert(HashT &HashValue, Function_t FunctionPtr, StringRef FnName)
Definition MemoryCache.h:49
void printKernelTrace()
Definition MemoryCache.h:76
MemoryCache(const std::string &Label)
Definition MemoryCache.h:33
Function_t lookup(HashT &HashValue)
Definition MemoryCache.h:35
Definition CompiledLibrary.h:7
Definition MemoryCache.h:27
void reportFatalError(const llvm::Twine &Reason, const char *FILE, unsigned Line)
Definition Error.cpp:14
Definition ObjectCache.h:27