• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright 2021 Huawei Technologies Co., Ltd
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef MINDSPORE_ASCEND_EVENT_H
18 #define MINDSPORE_ASCEND_EVENT_H
19 
20 #include "runtime/base.h"
21 #include "ir/device_event.h"
22 
23 namespace mindspore::device::ascend {
24 class AscendEvent : public DeviceEvent {
25  public:
26   AscendEvent();
27   ~AscendEvent() override;
28 
29   void WaitEvent() override;
30   void RecordEvent() override;
31   bool NeedWait() override;
32   void SyncEvent() override;
33   void ElapsedTime(float *cost_time, const DeviceEvent *other) override;
set_wait_stream(rtStream_t wait_stream)34   void set_wait_stream(rtStream_t wait_stream) override { wait_stream_ = wait_stream; }
set_record_stream(rtStream_t record_stream)35   void set_record_stream(rtStream_t record_stream) override { record_stream_ = record_stream; }
36 
37  protected:
38   rtEvent_t event_{nullptr};
39   rtStream_t wait_stream_{nullptr};
40   rtStream_t record_stream_{nullptr};
41   bool need_wait_{false};
42 };
43 
44 class AscendTimeEvent : public AscendEvent {
45  public:
46   AscendTimeEvent();
47   ~AscendTimeEvent() override = default;
48 };
49 }  // namespace mindspore::device::ascend
50 #endif  // MINDSPORE_ASCEND_EVENT_H
51