From ca5def57ec49120b9ba6784c566bba30cedfd64f Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Fri, 4 Aug 2023 12:52:38 +0200 Subject: [PATCH] jfjoch_action_test: Enable pinning modes for mock acquisition device --- receiver/jfjoch_action_test.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/receiver/jfjoch_action_test.cpp b/receiver/jfjoch_action_test.cpp index 3c792463..8e53159e 100644 --- a/receiver/jfjoch_action_test.cpp +++ b/receiver/jfjoch_action_test.cpp @@ -15,6 +15,8 @@ void print_usage(Logger &logger) { logger.Info(" -M use mock device"); logger.Info(" -B blocking mode (FPGA)"); logger.Info(" -v verbose"); + logger.Info(" -H mock aq. dev. with HBM (DL380 with Intel MAX only)"); + logger.Info(" -D mock aq. dev. with DDR (2 NUMA node machines only)"); logger.Info(" -s number of data streams (acquisition devices)"); logger.Info(" -m number of modules per data stream"); logger.Info(" -i number of images"); @@ -38,6 +40,8 @@ int main(int argc, char **argv) { bool nonblocking_mode = true; bool verbose = false; std::string numa_policy_name; + bool use_hbm_for_aq_dev = false; + bool use_ddr_for_aq_dev = false; if (argc == 1) print_usage(logger); @@ -75,6 +79,12 @@ int main(int argc, char **argv) { case 'P': numa_policy_name = std::string(optarg); break; + case 'H': + use_hbm_for_aq_dev = true; + break; + case 'D': + use_ddr_for_aq_dev = true; + break; default: /* '?' */ print_usage(logger); exit(EXIT_FAILURE); @@ -116,8 +126,19 @@ int main(int argc, char **argv) { if (nmodules > 1) { logger.Warning("Conversion results will be wrong with more than 1 module per stream"); } + for (int i = 0; i < nstreams; i++) { - mock_devices.push_back(std::make_unique(i, 1024)); + int16_t numa_node = -1; + + if (use_hbm_for_aq_dev) + numa_node = 2 + (i % 2); + else if (use_ddr_for_aq_dev) + numa_node = i % 2; + + if (numa_node != -1) + logger.Info("Pinning stream {} to NUMA node {}", i, numa_node); + + mock_devices.push_back(std::make_unique(i, 1024, numa_node)); mock_devices[i]->SetCustomInternalGeneratorFrame(input); mock_devices[i]->EnableLogging(&logger); aq_devices.push_back(mock_devices[i].get());