diff --git a/projects/hipblaslt/tensilelite/Tensile/Common/ValidParameters.py b/projects/hipblaslt/tensilelite/Tensile/Common/ValidParameters.py index 3b7fd9280e3..b2046684f49 100644 --- a/projects/hipblaslt/tensilelite/Tensile/Common/ValidParameters.py +++ b/projects/hipblaslt/tensilelite/Tensile/Common/ValidParameters.py @@ -27,6 +27,23 @@ from .Architectures import SUPPORTED_ISA +from rocisa import getGitVersion + +# Force version check here +def verifyRocisaVersion(): + import subprocess + def getGitVersionPython(): + return subprocess.check_output( + ['git', 'rev-parse', '--short', 'HEAD'] + ).decode('ascii').strip() + cppVersion = getGitVersion() + pyVersion = getGitVersionPython() + if cppVersion != pyVersion: + raise RuntimeError(f"rocisa version mismatch: C++ version {cppVersion} != Python version {pyVersion}. Please rebuild rocisa.") + print(f"rocisa version {cppVersion} (git commit hash) is same as Python version {pyVersion}") + +verifyRocisaVersion() + ################################################################################ # Enumerate Valid Solution Parameters ################################################################################ diff --git a/projects/hipblaslt/tensilelite/rocisa/CMakeLists.txt b/projects/hipblaslt/tensilelite/rocisa/CMakeLists.txt index c345ecfa82f..23af46ee0e6 100644 --- a/projects/hipblaslt/tensilelite/rocisa/CMakeLists.txt +++ b/projects/hipblaslt/tensilelite/rocisa/CMakeLists.txt @@ -26,6 +26,14 @@ set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) +execute_process( + COMMAND git rev-parse --short HEAD + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + OUTPUT_VARIABLE ROCISA_GIT_COMMIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE +) +add_compile_definitions(ROCISA_GIT_COMMIT_HASH="${ROCISA_GIT_COMMIT_HASH}") + if(DEFINED Python_EXECUTABLE AND Python_EXECUTABLE) message(STATUS "Manually set Python_EXECUTABLE to ${Python_EXECUTABLE}") endif() diff --git a/projects/hipblaslt/tensilelite/rocisa/rocisa/include/base.hpp b/projects/hipblaslt/tensilelite/rocisa/rocisa/include/base.hpp index 21d04347b5e..47f41d04d14 100644 --- a/projects/hipblaslt/tensilelite/rocisa/rocisa/include/base.hpp +++ b/projects/hipblaslt/tensilelite/rocisa/rocisa/include/base.hpp @@ -44,6 +44,8 @@ namespace nb = nanobind; namespace rocisa { + std::string getGitVersion(); + struct KernelInfo { IsaVersion isaVersion; diff --git a/projects/hipblaslt/tensilelite/rocisa/rocisa/src/base.cpp b/projects/hipblaslt/tensilelite/rocisa/rocisa/src/base.cpp index 015fc828fc7..7b480334cf2 100644 --- a/projects/hipblaslt/tensilelite/rocisa/rocisa/src/base.cpp +++ b/projects/hipblaslt/tensilelite/rocisa/rocisa/src/base.cpp @@ -26,6 +26,11 @@ namespace nb = nanobind; namespace rocisa { + std::string getGitVersion() + { + return ROCISA_GIT_COMMIT_HASH; + } + std::string isaToGfx(const nb::tuple& arch) { return getGfxNameTuple( @@ -58,6 +63,7 @@ namespace rocisa void init_base(nb::module_ m) { + m.def("getGitVersion", &rocisa::getGitVersion, "Get git commit hash of rocisa."); m.def("isaToGfx", nb::overload_cast(&rocisa::isaToGfx)); m.def("isaToGfx", nb::overload_cast(&rocisa::isaToGfx)); m.def("getGlcBitName", &rocisa::getGlcBitName);