From d90826c1cc5f03fdc0aaef5bf20c57aec6556940 Mon Sep 17 00:00:00 2001 From: Joshua Bakita Date: Mon, 19 Feb 2024 20:53:09 -0500 Subject: Always synchronize GPU and CPU time in the current process Performing the synchronization in a child process was fragile, high-overhead, and unnecessary for our use cases. --- copy_experiments/mon_cross_ctx_copies.cu | 4 ++-- preemption_logger.cu | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/copy_experiments/mon_cross_ctx_copies.cu b/copy_experiments/mon_cross_ctx_copies.cu index 2912aec..e836179 100644 --- a/copy_experiments/mon_cross_ctx_copies.cu +++ b/copy_experiments/mon_cross_ctx_copies.cu @@ -1,4 +1,4 @@ -/* Copyright 2022 Joshua Bakita +/* Copyright 2024 Joshua Bakita * Starts two copies of configurable size in seperate contexts at the same time * (by default) and logs the times that pages are copied to the GPU. Supports * monitoring copy progress from either the GPU or the CPU. All output times are @@ -12,7 +12,7 @@ WARNING: By default, assumes that GPU and CPU clocks tick at the same rate. * */ #include "copy_testbench.h" -#include "../task_host_utilities.cu" // Just for GetHostDeviceTimeOffset() +#include "../task_host_utilities.cu" #include #include #include diff --git a/preemption_logger.cu b/preemption_logger.cu index d93600e..89b348a 100644 --- a/preemption_logger.cu +++ b/preemption_logger.cu @@ -1,4 +1,4 @@ -/* Copyright 2023 Joshua Bakita +/* Copyright 2024 Joshua Bakita * Tool that tracks preemptions as discontinuities in GPU time and logs them. * * The logged intervals are output to standard out as a CSV, with each row @@ -92,8 +92,11 @@ int main(int argc, char **argv) { if (!skip_conversion) { // Note that this appears to almost always be 1.0 on recent GPUs d2h_scale = GetGPUTimerScale(0); - // The following uses a subprocess for clock synchronization. Sketch? - GetHostDeviceTimeOffset(0, &host_s, &dev_ns); + InternalReadGPUNanoseconds(0, &host_s, &dev_ns); + if (host_s == 0 && !dev_ns) { + fprintf(stderr, "Unable to synchronize time with the GPU. Aborting...\n"); + return 1; + } } // Initialize GPU and CPU memory to store the intervals of execution -- cgit v1.2.2