ShaderCache Class — pytorch Architecture
Architecture documentation for the ShaderCache class in Shader.h from the pytorch codebase.
Entity Profile
Source Code
aten/src/ATen/native/vulkan/api/Shader.h lines 152–190
class ShaderCache final {
public:
explicit ShaderCache(VkDevice device);
ShaderCache(const ShaderCache&) = delete;
ShaderCache& operator=(const ShaderCache&) = delete;
ShaderCache(ShaderCache&&) noexcept;
ShaderCache& operator=(ShaderCache&&) = delete;
~ShaderCache();
using Key = ShaderInfo;
using Value = ShaderModule;
struct Hasher {
inline size_t operator()(const ShaderInfo& source) const {
size_t seed = 0;
seed = utils::hash_combine(
seed, std::hash<const uint32_t*>()(source.src_code.bin));
seed = utils::hash_combine(
seed, std::hash<uint32_t>()(source.src_code.size));
return seed;
}
};
private:
// Multiple threads could potentially be adding entries into the cache, so use
// a mutex to manage access
std::mutex cache_mutex_;
VkDevice device_;
std::unordered_map<Key, Value, Hasher> cache_;
public:
VkShaderModule retrieve(const Key&);
void purge();
};
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free