Больше таймеров

This commit is contained in:
2025-12-11 10:08:22 +00:00
parent 44f297e55a
commit 7f16a5c17a
3 changed files with 156 additions and 18 deletions

View File

@@ -2,6 +2,9 @@
#include <dlfcn.h>
#include <map>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <omp.h>
static void* get_gpu_lib_handle() {
static void* h = dlopen("./libgpu_compute.so", RTLD_NOW | RTLD_LOCAL);
@@ -33,6 +36,12 @@ bool aggregate_days_gpu(
return false;
}
// Общий таймер всей функции
double t_total_start = omp_get_wtime();
// Таймер CPU preprocessing
double t_preprocess_start = omp_get_wtime();
// Группируем записи по дням и подготавливаем данные для GPU
std::map<DayIndex, std::vector<size_t>> day_record_indices;
@@ -80,7 +89,12 @@ bool aggregate_days_gpu(
// Выделяем память для результата
std::vector<GpuDayStats> gpu_stats(num_days);
// Вызываем GPU функцию
double t_preprocess_ms = (omp_get_wtime() - t_preprocess_start) * 1000.0;
std::cout << " GPU CPU preprocessing: " << std::fixed << std::setprecision(3)
<< std::setw(7) << t_preprocess_ms << " ms" << std::endl << std::flush;
// Вызываем GPU функцию (включает: malloc, memcpy H->D, kernel, memcpy D->H, free)
// Детальные тайминги выводятся внутри GPU функции
int result = gpu_fn(
gpu_records.data(),
static_cast<int>(gpu_records.size()),
@@ -92,6 +106,7 @@ bool aggregate_days_gpu(
);
if (result != 0) {
std::cout << " GPU: Function returned error code " << result << std::endl;
return false;
}
@@ -112,5 +127,10 @@ bool aggregate_days_gpu(
out_stats.push_back(ds);
}
// Общее время всей GPU функции (включая preprocessing)
double t_total_ms = (omp_get_wtime() - t_total_start) * 1000.0;
std::cout << " GPU TOTAL (with prep): " << std::fixed << std::setprecision(3)
<< std::setw(7) << t_total_ms << " ms" << std::endl << std::flush;
return true;
}