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