From a09863f5502160a3959f28ff078d9dcf8d3988f9 Mon Sep 17 00:00:00 2001 From: Deepak Mewar Date: Mon, 30 Oct 2023 05:53:49 -0400 Subject: [PATCH] Esmi Auxillary API wrappers removed from amdsmi library that are called during amdsmi inititalization amdsmi_get_cpu_family, amdsmi_get_cpu_model, amdsmi_get_cpu_threads_per_core, amdsmi_get_number_of_cpu_cores, amdsmi_get_number_of_cpu_sockets Added amdsmi_get_cpucore_info to amdsmi library Change-Id: Ib88d580e1d85afdf578963247e585cfae05c58ad [ROCm/amdsmi commit: 28f6383639b11faf819e639ac0d552ccee0dd375] --- projects/amdsmi/include/amd_smi/amdsmi.h | 59 ++++------------- .../include/amd_smi/impl/amd_smi_cpu_core.h | 3 +- projects/amdsmi/src/amd_smi/amd_smi.cc | 64 ++++++------------- 3 files changed, 34 insertions(+), 92 deletions(-) diff --git a/projects/amdsmi/include/amd_smi/amdsmi.h b/projects/amdsmi/include/amd_smi/amdsmi.h index 716d307682..6ea775be3a 100644 --- a/projects/amdsmi/include/amd_smi/amdsmi.h +++ b/projects/amdsmi/include/amd_smi/amdsmi.h @@ -1469,6 +1469,20 @@ amdsmi_status_t amdsmi_get_socket_info( * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail */ amdsmi_status_t amdsmi_get_cpusocket_info(amdsmi_cpusocket_handle socket_handle, uint32_t sockid); + +/** + * @brief Get information about the given cpu core + * + * @details This function retrieves cpu core information. The @p core_handle must + * be provided to retrieve the core ID. + * + * @param[in] core_handle a processor handle + * + * @param[out] coreid The id of the core. + * + * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail + */ +amdsmi_status_t amdsmi_get_cpucore_info(amdsmi_processor_handle core_handle, uint32_t coreid); #endif /** @@ -4588,51 +4602,6 @@ amdsmi_status_t amdsmi_get_metrics_table(amdsmi_cpusocket_handle socket_handle, /*---------------------------------------------------------------------------*/ /** @{ */ -/** - * @brief Get cpu family. - * - * @param[in,out] family - Input buffer to fill family - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_family(uint32_t family); - -/** - * @brief Get cpu model. - * - * @param[in,out] family - Input buffer to fill family - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_model(uint32_t model); - -/** - * @brief Get threads per core. - * - * @param[in,out] threads - Input buffer to fill threads count. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_cpu_threads_per_core(uint32_t threads); - -/** - * @brief Get number of cpus. - * - * @param[in,out] cpus - Input buffer to fill number of cpus. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_number_of_cpu_cores(uint32_t cpus); - -/** - * @brief Get number of sockets - * - * @param[in,out] sockets - Input buffer to fill number of sockets. - * - * @return ::amdsmi_status_t | ::AMDSMI_STATUS_SUCCESS on success, non-zero on fail - */ -amdsmi_status_t amdsmi_get_number_of_cpu_sockets(uint32_t sockets); - /** * @brief Get first online core on socket. * diff --git a/projects/amdsmi/include/amd_smi/impl/amd_smi_cpu_core.h b/projects/amdsmi/include/amd_smi/impl/amd_smi_cpu_core.h index ffcca3a6c9..c721cd671c 100644 --- a/projects/amdsmi/include/amd_smi/impl/amd_smi_cpu_core.h +++ b/projects/amdsmi/include/amd_smi/impl/amd_smi_cpu_core.h @@ -60,14 +60,13 @@ public: virtual ~AMDSmiCpuCore() {} + const uint32_t& get_core_id() const { return core_idx_; } void add_processor(AMDSmiProcessor* processor) { processors_.push_back(processor); } std::vector& get_processors() { return processors_;} amdsmi_status_t get_processor_count(uint32_t* processor_count) const; private: uint32_t core_idx_; - //uint64_t input; - //uint32_t idx; std::vector processors_; }; diff --git a/projects/amdsmi/src/amd_smi/amd_smi.cc b/projects/amdsmi/src/amd_smi/amd_smi.cc index ca5b1aa47a..02ca597ddf 100644 --- a/projects/amdsmi/src/amd_smi/amd_smi.cc +++ b/projects/amdsmi/src/amd_smi/amd_smi.cc @@ -330,6 +330,25 @@ amdsmi_status_t amdsmi_get_cpusocket_info( return AMDSMI_STATUS_SUCCESS; } + +amdsmi_status_t amdsmi_get_cpucore_info( + amdsmi_processor_handle core_handle, + uint32_t core_id) { + AMDSMI_CHECK_INIT(); + + if (core_handle == nullptr) { + return AMDSMI_STATUS_INVAL; + } + + amd::smi::AMDSmiProcessor* core = nullptr; + amdsmi_status_t r = amd::smi::AMDSmiSystem::getInstance() + .handle_to_processor(core_handle, &core); + if (r != AMDSMI_STATUS_SUCCESS) return r; + + core_id = static_cast(core)->get_core_id(); + + return AMDSMI_STATUS_SUCCESS; +} #endif amdsmi_status_t amdsmi_get_processor_handles(amdsmi_socket_handle socket_handle, @@ -2948,51 +2967,6 @@ amdsmi_status_t amdsmi_get_metrics_table(amdsmi_cpusocket_handle socket_handle, return AMDSMI_STATUS_SUCCESS; } -amdsmi_status_t amdsmi_get_number_of_cpu_sockets(uint32_t sockets) -{ - amdsmi_status_t status = amd::smi::AMDSmiSystem::getInstance().get_cpu_sockets(sockets); - if (status != AMDSMI_STATUS_SUCCESS) - return status; - - return AMDSMI_STATUS_SUCCESS; -} - -amdsmi_status_t amdsmi_get_number_of_cpu_cores(uint32_t cpus) -{ - amdsmi_status_t status = amd::smi::AMDSmiSystem::getInstance().get_cpu_cores(cpus); - if (status != AMDSMI_STATUS_SUCCESS) - return status; - - return AMDSMI_STATUS_SUCCESS; -} - -amdsmi_status_t amdsmi_get_cpu_threads_per_core(uint32_t threads) -{ - amdsmi_status_t status = amd::smi::AMDSmiSystem::getInstance().get_threads_per_core(threads); - if (status != AMDSMI_STATUS_SUCCESS) - return status; - - return AMDSMI_STATUS_SUCCESS; -} - -amdsmi_status_t amdsmi_get_cpu_family(uint32_t family) -{ - amdsmi_status_t status = amd::smi::AMDSmiSystem::getInstance().get_cpu_family(family); - if (status != AMDSMI_STATUS_SUCCESS) - return status; - - return AMDSMI_STATUS_SUCCESS; -} - -amdsmi_status_t amdsmi_get_cpu_model(uint32_t model) -{ - amdsmi_status_t status = amd::smi::AMDSmiSystem::getInstance().get_cpu_model(model); - if (status != AMDSMI_STATUS_SUCCESS) - return status; - - return AMDSMI_STATUS_SUCCESS; -} - amdsmi_status_t amdsmi_first_online_core_on_cpu_socket(amdsmi_cpusocket_handle socket_handle, uint32_t sock_ind, uint32_t *pcore_ind) {