1 #ifndef _NNDEPLOY_BASE_CUDA_MEMORY_TRACKER_H_
2 #define _NNDEPLOY_BASE_CUDA_MEMORY_TRACKER_H_
4 #ifdef ENABLE_NNDEPLOY_GPU_MEM_TRACKER
5 #include <cuda_runtime.h>
21 class GpuMemoryTracker {
23 GpuMemoryTracker(
unsigned int interval_ms = 10)
24 : keep_running_(false), max_used_(0), interval_ms_(interval_ms) {}
30 size_t get_max_used_bytes()
const {
return max_used_; }
32 double get_max_used_megabytes()
const {
33 return max_used_ / (1024.0 * 1024.0);
36 void print_max_used_mem()
const {
37 std::cout <<
"Max GPU memory used: " << get_max_used_megabytes() <<
" MB"
41 ~GpuMemoryTracker() { stop(); }
44 std::atomic<bool> keep_running_;
45 std::thread monitor_thread_;
47 unsigned int interval_ms_;
59 #define NNDEPLOY_MEM_TRACKER_START() nndeploy::base::memTrackerStart()
60 #define NNDEPLOY_MEM_TRACKER_END() nndeploy::base::memTrackerEnd()
61 #define NNDEPLOY_MEM_TRACKER_PRINT() nndeploy::base::memTrackerPrint()
65 #define NNDEPLOY_MEM_TRACKER_START()
66 #define NNDEPLOY_MEM_TRACKER_END()
67 #define NNDEPLOY_MEM_TRACKER_PRINT()
#define NNDEPLOY_CC_API
api