// Copyright Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace rocRoller { class GPUArchitectureLibrary : public LazySingleton { public: bool HasCapability(GPUArchitectureTarget const&, GPUCapability const&); bool HasCapability(GPUArchitectureTarget const&, std::string const&); int GetCapability(GPUArchitectureTarget const&, GPUCapability const&); GPUInstructionInfo GetInstructionInfo(GPUArchitectureTarget const&, std::string const&); GPUArchitecture GetArch(GPUArchitectureTarget const& target); GPUArchitecture GetHipDeviceArch(int deviceIdx); GPUArchitecture GetDefaultHipDeviceArch(int& deviceIdx); GPUArchitecture GetDefaultHipDeviceArch(); bool HasHipDevice(); void GetCurrentDevices(std::vector&, int&); std::vector getAllSupportedISAs(); std::vector getCDNAISAs(); std::vector getMFMASupportedISAs(); std::vector getWMMASupportedISAs(); std::map LoadLibrary(); GPUArchitectureLibrary() : m_gpuArchitectures(LoadLibrary()) { } private: std::map m_gpuArchitectures; }; } #include