Program Listing for File Utils.h¶
↰ Return to documentation for file (Source\PowerBench\Inc\PowerBench\Utils.h
)
#pragma once
#include <random>
#include <vector>
using TestMatrix = std::vector<std::vector<double>>;
namespace Utils {
constexpr uint32_t CACHE_LINE_BYTES = 64;
constexpr uint32_t ELEMENTS_PER_LINE = CACHE_LINE_BYTES / sizeof(double);
constexpr size_t BIGGER_THAN_CACHE = 8 * 1024 * 1024;
inline auto g_dummyVec = std::vector<double>(BIGGER_THAN_CACHE);
const double MATRIX_VAL_MIN = -5.0;
const double MATRIX_VAL_MAX = 5.0;
inline void ClearCache() {
for(int i = 0; i < BIGGER_THAN_CACHE; i++)
{
g_dummyVec[i] = rand();
}
}
inline void CreateRandomMatrix(int64_t size, double* result) {
std::random_device rd;
std::mt19937 mt(rd());
const std::uniform_real_distribution<double> randomValue(MATRIX_VAL_MIN, MATRIX_VAL_MAX);
for(int64_t i = 0; i < size; i++)
{
for (int64_t j = 0; j < size; j++) {
result[i * size + j] = randomValue(mt);
}
}
}
inline void CreateEmpty(int64_t size, double* result) {
for(int64_t i = 0; i < size; i++)
{
for (int64_t j = 0; j < size; j++) {
result[i * size + j] = 0.0;
}
}
}
} // namespace Utils