blob: c5b65662dbcf7144e119f2ccd07c815635b0f07d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#ifndef TENSORFLOW_STREAM_EXECUTOR_CUDA_CUDA_EVENT_H_
#define TENSORFLOW_STREAM_EXECUTOR_CUDA_CUDA_EVENT_H_
#include "tensorflow/stream_executor/cuda/cuda_driver.h"
#include "tensorflow/stream_executor/cuda/cuda_stream.h"
#include "tensorflow/stream_executor/event.h"
#include "tensorflow/stream_executor/lib/status.h"
namespace perftools {
namespace gputools {
namespace cuda {
// CUDAEvent wraps a CUevent in the platform-independent EventInterface
// interface.
class CUDAEvent : public internal::EventInterface {
public:
explicit CUDAEvent(CUDAExecutor* parent);
~CUDAEvent() override;
// Populates the CUDA-platform-specific elements of this object.
port::Status Init();
// Deallocates any platform-specific elements of this object. This is broken
// out (not part of the destructor) to allow for error reporting.
port::Status Destroy();
// Inserts the event at the current position into the specified stream.
port::Status Record(CUDAStream* stream);
// Polls the CUDA platform for the event's current status.
Event::Status PollForStatus();
// The underyling CUDA event element.
const CUevent& cuda_event();
private:
// The Executor used to which this object and CUevent are bound.
CUDAExecutor* parent_;
// The underlying CUDA event element.
CUevent cuda_event_;
};
} // namespace cuda
} // namespace gputools
} // namespace perftools
#endif // TENSORFLOW_STREAM_EXECUTOR_CUDA_CUDA_EVENT_H_
|