blob: 6994790ab537a366bed53977f6f4b3f396ff6fce [file] [edit]
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include <sycl/__impl/event.hpp>
#include <sycl/__impl/exception.hpp>
#include <detail/event_impl.hpp>
_LIBSYCL_BEGIN_NAMESPACE_SYCL
event::event() : impl(detail::EventImpl::createDefaultEvent()) {}
backend event::get_backend() const noexcept { return impl->getBackend(); }
void event::wait(const std::vector<event> &EventList) {
for (auto Event : EventList) {
Event.wait();
}
}
void event::wait() { impl->wait(); }
void event::wait_and_throw() { impl->waitAndThrow(); }
void event::wait_and_throw(const std::vector<event> &EventList) {
for (auto E : EventList) {
E.wait_and_throw();
}
}
std::vector<event> event::get_wait_list() {
const auto &WaitList = impl->getWaitList();
std::vector<event> Result;
Result.reserve(WaitList.size());
for (const auto &EventImpl : WaitList)
Result.push_back(detail::createSyclObjFromImpl<event>(EventImpl));
return Result;
}
template <typename Param>
typename detail::is_event_profiling_info_desc_t<Param>
event::get_profiling_info() const {
throw sycl::exception(make_error_code(errc::feature_not_supported),
"Profiling features are not supported.");
}
#define _LIBSYCL_EXPORT_GET_PROFILING_INFO(Desc) \
template _LIBSYCL_EXPORT \
detail::is_event_profiling_info_desc_t<info::event_profiling::Desc> \
event::get_profiling_info<info::event_profiling::Desc>() const;
_LIBSYCL_EXPORT_GET_PROFILING_INFO(command_submit)
_LIBSYCL_EXPORT_GET_PROFILING_INFO(command_start)
_LIBSYCL_EXPORT_GET_PROFILING_INFO(command_end)
#undef _LIBSYCL_EXPORT_GET_PROFILING_INFO
_LIBSYCL_END_NAMESPACE_SYCL