#include #include namespace utils::cuda { class Event { public: Event() : _p_event(std::make_shared()) { cudaEventCreate(_p_event.get()); } virtual ~Event() { if (_p_event.use_count() == 1) cudaEventDestroy(*_p_event); } operator cudaEvent_t() { return *_p_event; } private: std::shared_ptr _p_event; }; } // namespace utils::cuda