blob: cd68a6c705adae5b9bc9a6827489a7d7448d8e9d [file] [log] [blame]
Austin Schuh8c267c72023-11-18 14:05:14 -08001#include "frc971/orin/cuda.h"
2
Austin Schuh99f7c6a2024-06-25 22:07:44 -07003#include "absl/flags/flag.h"
4#include "absl/log/check.h"
Austin Schuh8c267c72023-11-18 14:05:14 -08005
Austin Schuh99f7c6a2024-06-25 22:07:44 -07006ABSL_FLAG(
7 bool, sync, false,
Austin Schuh8c267c72023-11-18 14:05:14 -08008 "If true, force synchronization after each step to isolate errors better.");
9
Stephan Pleinesf63bde82024-01-13 15:59:33 -080010namespace frc971::apriltag {
Austin Schuh8c267c72023-11-18 14:05:14 -080011
Austin Schuh1fc51fa2024-01-01 12:34:00 -080012size_t overall_memory = 0;
13
14void CheckAndSynchronize(std::string_view message) {
15 CHECK_CUDA(cudaDeviceSynchronize()) << message;
16 CHECK_CUDA(cudaGetLastError()) << message;
Austin Schuh8c267c72023-11-18 14:05:14 -080017}
18
19void MaybeCheckAndSynchronize() {
Austin Schuh99f7c6a2024-06-25 22:07:44 -070020 if (absl::GetFlag(FLAGS_sync)) CheckAndSynchronize();
Austin Schuh8c267c72023-11-18 14:05:14 -080021}
22
Austin Schuh1fc51fa2024-01-01 12:34:00 -080023void MaybeCheckAndSynchronize(std::string_view message) {
Austin Schuh99f7c6a2024-06-25 22:07:44 -070024 if (absl::GetFlag(FLAGS_sync)) CheckAndSynchronize(message);
Austin Schuh1fc51fa2024-01-01 12:34:00 -080025}
26
Stephan Pleinesf63bde82024-01-13 15:59:33 -080027} // namespace frc971::apriltag