Больше таймеров
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user