diff --git a/projects/rdc/include/rdc/rdc.h b/projects/rdc/include/rdc/rdc.h index 1e99f79489..aa5e46be91 100644 --- a/projects/rdc/include/rdc/rdc.h +++ b/projects/rdc/include/rdc/rdc.h @@ -519,6 +519,7 @@ typedef enum { RDC_DIAG_SYS_MEM_CHECK, //!< Check System memory RDC_DIAG_NODE_TOPOLOGY, //!< Report node topology RDC_DIAG_RVS_TEST, //!< TODO: Replace with real RVS tests + RDC_DIAG_RVS_MEMBW_TEST, //!< RVS memory bandwidth test RDC_DIAG_GPU_PARAMETERS, //!< GPU parameters in range RDC_DIAG_TEST_LAST = RDC_DIAG_GPU_PARAMETERS } rdc_diag_test_cases_t; diff --git a/projects/rdc/include/rdc_modules/rdc_rvs/RvsBase.h b/projects/rdc/include/rdc_modules/rdc_rvs/RvsBase.h index 7f94baf022..5fe732bd97 100644 --- a/projects/rdc/include/rdc_modules/rdc_rvs/RvsBase.h +++ b/projects/rdc/include/rdc_modules/rdc_rvs/RvsBase.h @@ -29,6 +29,8 @@ THE SOFTWARE. #include "rdc/rdc.h" #include "rvs/rvs.h" +static constexpr size_t MAX_CONFIG_LENGTH = 1024; + namespace amd { namespace rdc { diff --git a/projects/rdc/protos/rdc.proto b/projects/rdc/protos/rdc.proto index f0fc2a8a22..74c76375f9 100755 --- a/projects/rdc/protos/rdc.proto +++ b/projects/rdc/protos/rdc.proto @@ -504,7 +504,8 @@ message DiagnosticTestResult { SYS_MEM_CHECK = 4; NODE_TOPOLOGY = 5; RVS_TEST = 6; - GPU_PARAMETERS = 7; + RVS_MEMBW_TEST = 7; + GPU_PARAMETERS = 8; }; DiagnosticTestCase test_case = 3; uint32 per_gpu_result_count = 4; @@ -533,7 +534,8 @@ message DiagnosticTestCaseRunRequest { SYS_MEM_CHECK = 4; NODE_TOPOLOGY = 5; RVS_TEST = 6; - GPU_PARAMETERS = 7; + RVS_MEMBW_TEST = 7; + GPU_PARAMETERS = 8; }; TestCaseType test_case = 2; string config = 3; diff --git a/projects/rdc/rdc_libs/rdc/src/RdcDiagnosticModule.cc b/projects/rdc/rdc_libs/rdc/src/RdcDiagnosticModule.cc index 5b3fa7d03b..3edf512407 100644 --- a/projects/rdc/rdc_libs/rdc/src/RdcDiagnosticModule.cc +++ b/projects/rdc/rdc_libs/rdc/src/RdcDiagnosticModule.cc @@ -89,6 +89,7 @@ rdc_status_t RdcDiagnosticModule::rdc_diagnostic_run(const rdc_group_info_t& gpu if (level >= RDC_DIAG_LVL_MED) { // Medium run and above rdc_runs.push_back(RDC_DIAG_RVS_TEST); + rdc_runs.push_back(RDC_DIAG_RVS_MEMBW_TEST); } if (callback != nullptr && callback->callback != nullptr && callback->cookie != nullptr) { diff --git a/projects/rdc/rdc_libs/rdc_modules/rdc_rvs/RdcDiagnosticLib.cc b/projects/rdc/rdc_libs/rdc_modules/rdc_rvs/RdcDiagnosticLib.cc index 39c671b6e5..13b1ba78fa 100644 --- a/projects/rdc/rdc_libs/rdc_modules/rdc_rvs/RdcDiagnosticLib.cc +++ b/projects/rdc/rdc_libs/rdc_modules/rdc_rvs/RdcDiagnosticLib.cc @@ -27,6 +27,11 @@ THE SOFTWARE. #include "rdc_lib/rdc_common.h" #include "rdc_modules/rdc_rvs/RvsBase.h" + static const char babel_config[MAX_CONFIG_LENGTH] = + "{actions: [{name: babel-float-256MiB, device: all, module: babel, " + "parallel: false, count: 1, num_iter: 5000, array_size: 268435456, " + "test_type: 1, mibibytes: true, o/p_csv: false, subtest: 5}]}"; + rdc_status_t rdc_diag_init(uint64_t) { return RDC_ST_OK; } rdc_status_t rdc_diag_destroy() { return RDC_ST_OK; } @@ -37,8 +42,9 @@ rdc_status_t rdc_diag_test_cases_query(rdc_diag_test_cases_t test_cases[MAX_TEST return RDC_ST_BAD_PARAMETER; } - *test_case_count = 1; + *test_case_count = 2; test_cases[0] = RDC_DIAG_RVS_TEST; + test_cases[1] = RDC_DIAG_RVS_MEMBW_TEST; return RDC_ST_OK; } @@ -53,10 +59,6 @@ rdc_status_t rdc_diag_test_case_run(rdc_diag_test_cases_t test_case, return RDC_ST_BAD_PARAMETER; } - if (test_case != RDC_DIAG_RVS_TEST) { - return RDC_ST_BAD_PARAMETER; - } - amd::rdc::RdcRVSBase rvs_base; // init the return data @@ -74,9 +76,14 @@ rdc_status_t rdc_diag_test_case_run(rdc_diag_test_cases_t test_case, strncpy_with_null(result->info, "Finished running RDC_DIAG_RVS_TEST", MAX_DIAG_MSG_LENGTH); rvs_status = rvs_base.run_rvs_app(config, config_size, callback); break; + case RDC_DIAG_RVS_MEMBW_TEST: + strncpy_with_null(result->info, "Finished running RDC_DIAG_RVS_MEMBW_TEST", MAX_DIAG_MSG_LENGTH); + rvs_status = rvs_base.run_rvs_app(babel_config, MAX_CONFIG_LENGTH, callback); + break; default: result->status = RDC_DIAG_RESULT_SKIP; strncpy_with_null(result->info, "Not supported yet", MAX_DIAG_MSG_LENGTH); + return RDC_ST_BAD_PARAMETER; } if (rvs_status != RVS_STATUS_SUCCESS) { diff --git a/projects/rdc/rdc_libs/rdc_modules/rdc_rvs/RvsBase.cc b/projects/rdc/rdc_libs/rdc_modules/rdc_rvs/RvsBase.cc index 065ecfdf50..57d45db518 100644 --- a/projects/rdc/rdc_libs/rdc_modules/rdc_rvs/RvsBase.cc +++ b/projects/rdc/rdc_libs/rdc_modules/rdc_rvs/RvsBase.cc @@ -31,7 +31,6 @@ THE SOFTWARE. // TODO: Make generic test // TODO: Allow for user to override defaults with a custom string -static constexpr size_t MAX_CONFIG_LENGTH = 1024; amd::rdc::RdcRVSBase* amd::rdc::RdcRVSBase::s_instance = nullptr; diff --git a/projects/rdc/rdci/src/RdciDiagSubSystem.cc b/projects/rdc/rdci/src/RdciDiagSubSystem.cc index 078bc73d29..1dfc1caa58 100644 --- a/projects/rdc/rdci/src/RdciDiagSubSystem.cc +++ b/projects/rdc/rdci/src/RdciDiagSubSystem.cc @@ -137,6 +137,7 @@ std::string RdciDiagSubSystem::get_test_name(rdc_diag_test_cases_t test_case) co {RDC_DIAG_SYS_MEM_CHECK, "System memory check"}, {RDC_DIAG_NODE_TOPOLOGY, "Node topology check"}, {RDC_DIAG_RVS_TEST, "Pre-defined config RVS check"}, + {RDC_DIAG_RVS_MEMBW_TEST, "Pre-defined memory bandwidth RVS check"}, {RDC_DIAG_GPU_PARAMETERS, "GPU parameters check"}, {RDC_DIAG_TEST_LAST, "Unknown"}};