Implement CPU discovery support (#77)
* Implement CPU discovery support
SWDEV-482949:
enable the CPU model name info support to the RDC, rdci command
can detect GPU and CPU modules at the same time.
It will query the CPU info through the amdsmi interface like below:
1 GPUs found.
-----------------------------------------------------------------
GPU Index Device Information
0 AMD Radeon PRO W7800
=================================================================
1 CPUs found.
-----------------------------------------------------------------
CPU Index Device Information
0 AMD Ryzen Threadripper PRO 7995WX 96-Cores
-----------------------------------------------------------------
Change-Id: Ibc6533c9a61000cd86c45b1bae14c3eb6788c119
Signed-off-by: Perry Yuan <perry.yuan@amd.com>
* CMAKE - Add required version for amdsmi
Change-Id: I341a89351d196ec66cce215a5d1d3953302fcc66
Signed-off-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com>
---------
Signed-off-by: Perry Yuan <perry.yuan@amd.com>
Signed-off-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com>
Co-authored-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com>
[ROCm/rdc commit: 3bdca8b8b6]
このコミットが含まれているのは:
@@ -43,10 +43,17 @@ class RdcAPIServiceImpl final : public ::rdc::RdcAPI::Service {
|
||||
::grpc::Status GetAllDevices(::grpc::ServerContext* context, const ::rdc::Empty* request,
|
||||
::rdc::GetAllDevicesResponse* reply) override;
|
||||
|
||||
::grpc::Status GetAllCpuDevices(::grpc::ServerContext* context, const ::rdc::Empty* request,
|
||||
::rdc::GetAllCpuDevicesResponse* reply) override;
|
||||
|
||||
::grpc::Status GetDeviceAttributes(::grpc::ServerContext* context,
|
||||
const ::rdc::GetDeviceAttributesRequest* request,
|
||||
::rdc::GetDeviceAttributesResponse* reply) override;
|
||||
|
||||
::grpc::Status GetDeviceCpuAttributes(::grpc::ServerContext* context,
|
||||
const ::rdc::GetCpuDeviceAttributesRequest* request,
|
||||
::rdc::GetCpuDeviceAttributesResponse* reply) override;
|
||||
|
||||
::grpc::Status GetComponentVersion(::grpc::ServerContext* context,
|
||||
const ::rdc::GetComponentVersionRequest* request,
|
||||
::rdc::GetComponentVersionResponse* reply) override;
|
||||
|
||||
@@ -99,6 +99,28 @@ RdcAPIServiceImpl::~RdcAPIServiceImpl() {
|
||||
return ::grpc::Status::OK;
|
||||
}
|
||||
|
||||
::grpc::Status RdcAPIServiceImpl::GetAllCpuDevices(::grpc::ServerContext* context,
|
||||
const ::rdc::Empty* request,
|
||||
::rdc::GetAllCpuDevicesResponse* reply) {
|
||||
(void)(context);
|
||||
(void)(request);
|
||||
if (!reply) {
|
||||
return ::grpc::Status(::grpc::StatusCode::INTERNAL, "Empty reply");
|
||||
}
|
||||
uint32_t cpu_index_list[RDC_MAX_NUM_DEVICES];
|
||||
uint32_t count = 0;
|
||||
rdc_status_t result = rdc_device_get_all_cpu(rdc_handle_, cpu_index_list, &count);
|
||||
reply->set_status(result);
|
||||
if (result != RDC_ST_OK) {
|
||||
return ::grpc::Status::OK;
|
||||
}
|
||||
for (uint32_t i = 0; i < count; i++) {
|
||||
reply->add_cpus(cpu_index_list[i]);
|
||||
}
|
||||
|
||||
return ::grpc::Status::OK;
|
||||
}
|
||||
|
||||
::grpc::Status RdcAPIServiceImpl::GetDeviceAttributes(
|
||||
::grpc::ServerContext* context, const ::rdc::GetDeviceAttributesRequest* request,
|
||||
::rdc::GetDeviceAttributesResponse* reply) {
|
||||
@@ -118,6 +140,25 @@ RdcAPIServiceImpl::~RdcAPIServiceImpl() {
|
||||
return ::grpc::Status::OK;
|
||||
}
|
||||
|
||||
::grpc::Status RdcAPIServiceImpl::GetDeviceCpuAttributes(
|
||||
::grpc::ServerContext* context, const ::rdc::GetCpuDeviceAttributesRequest* request,
|
||||
::rdc::GetCpuDeviceAttributesResponse* reply) {
|
||||
(void)(context);
|
||||
if (!reply || !request) {
|
||||
return ::grpc::Status(::grpc::StatusCode::INTERNAL, "Empty contents");
|
||||
}
|
||||
uint32_t cpu_index = request->cpu_index();
|
||||
rdc_device_attributes_t attribute;
|
||||
rdc_status_t result = rdc_device_get_cpu_attributes(rdc_handle_, cpu_index, &attribute);
|
||||
|
||||
::rdc::DeviceAttributes* attr = reply->mutable_attributes();
|
||||
attr->set_device_name(attribute.device_name);
|
||||
|
||||
reply->set_status(result);
|
||||
|
||||
return ::grpc::Status::OK;
|
||||
}
|
||||
|
||||
::grpc::Status RdcAPIServiceImpl::GetComponentVersion(
|
||||
::grpc::ServerContext* context, const ::rdc::GetComponentVersionRequest* request,
|
||||
::rdc::GetComponentVersionResponse* reply) {
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする