summaryrefslogtreecommitdiff
path: root/volk/lib/qa_utils.cc
diff options
context:
space:
mode:
Diffstat (limited to 'volk/lib/qa_utils.cc')
-rw-r--r--volk/lib/qa_utils.cc32
1 files changed, 24 insertions, 8 deletions
diff --git a/volk/lib/qa_utils.cc b/volk/lib/qa_utils.cc
index f30f0097ae..3ab4a9970c 100644
--- a/volk/lib/qa_utils.cc
+++ b/volk/lib/qa_utils.cc
@@ -5,7 +5,9 @@
#include <boost/tokenizer.hpp>
#include <boost/xpressive/xpressive.hpp>
#include <iostream>
+#include <fstream>
#include <vector>
+#include <map>
#include <list>
#include <ctime>
#include <cmath>
@@ -328,9 +330,9 @@ bool run_volk_tests(volk_func_desc_t desc,
lv_32fc_t scalar,
int vlen,
int iter,
- std::vector<std::string> *best_arch_vector = 0,
- std::string puppet_master_name = "NULL",
- bool benchmark_mode,
+ std::vector<volk_test_results_t> *results,
+ std::string puppet_master_name,
+ bool benchmark_mode,
std::string kernel_regex
) {
boost::xpressive::sregex kernel_expression = boost::xpressive::sregex::compile(kernel_regex);
@@ -338,6 +340,12 @@ bool run_volk_tests(volk_func_desc_t desc,
// in this case we have a regex and are only looking to test one kernel
return false;
}
+ if(results) {
+ results->push_back(volk_test_results_t());
+ results->back().name = name;
+ results->back().vlen = vlen;
+ results->back().iter = iter;
+ }
std::cout << "RUN_VOLK_TESTS: " << name << "(" << vlen << "," << iter << ")" << std::endl;
// The multiply and lv_force_cast_hf are work arounds for GNU Radio bugs 582 and 583
@@ -453,6 +461,13 @@ bool run_volk_tests(volk_func_desc_t desc,
end = clock();
double arch_time = 1000.0 * (double)(end-start)/(double)CLOCKS_PER_SEC;
std::cout << arch_list[i] << " completed in " << arch_time << "ms" << std::endl;
+ if(results) {
+ volk_test_time_t result;
+ result.name = arch_list[i];
+ result.time = arch_time;
+ result.units = "ms";
+ results->back().results[result.name] = result;
+ }
profile_times.push_back(arch_time);
}
@@ -553,13 +568,14 @@ bool run_volk_tests(volk_func_desc_t desc,
std::cout << "Best aligned arch: " << best_arch_a << std::endl;
std::cout << "Best unaligned arch: " << best_arch_u << std::endl;
- if(best_arch_vector) {
+ if(results) {
if(puppet_master_name == "NULL") {
- best_arch_vector->push_back(name + " " + best_arch_a + " " + best_arch_u);
- }
- else {
- best_arch_vector->push_back(puppet_master_name + " " + best_arch_a + " " + best_arch_u);
+ results->back().config_name = name;
+ } else {
+ results->back().config_name = puppet_master_name;
}
+ results->back().best_arch_a = best_arch_a;
+ results->back().best_arch_u = best_arch_u;
}
return fail_global;