From 80a99350a303ad61723a601df4ea28e382766f4d Mon Sep 17 00:00:00 2001 From: "Sun, Peng" Date: Sat, 1 Apr 2017 14:57:47 -0500 Subject: [PATCH] Add grid_launch.cpp for GGL Change-Id: I87ff9b3f1203d0909f998c96c839f7b321fc3f09 --- src/grid_launch.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/grid_launch.cpp diff --git a/src/grid_launch.cpp b/src/grid_launch.cpp new file mode 100644 index 0000000000..6e2812f159 --- /dev/null +++ b/src/grid_launch.cpp @@ -0,0 +1,38 @@ +#include "hip/hcc_detail/grid_launch_GGL.hpp" + +// Internal header, do not percolate upwards. +#include "hip_hcc_internal.h" +#include "hc.hpp" +#include "trace_helper.h" + +namespace hip_impl +{ + hc::accelerator_view lock_stream_hip_( + hipStream_t& stream, void*& locked_stream) + { // This allocated but does not take ownership of locked_stream. If it is + // not deleted elsewhere it will leak. + using L = decltype(stream->lockopen_preKernelCommand()); + + HIP_INIT(); + + stream = ihipSyncAndResolveStream(stream); + locked_stream = new L{stream->lockopen_preKernelCommand()}; + return (*static_cast(locked_stream))->_av; + } + + void unlock_stream_hip_( + hipStream_t stream, + void* locked_stream, + const char* kernel_name, + hc::accelerator_view* acc_v) + { // Precondition: acc_v is the accelerator_view associated with stream + // which is guarded by locked_stream; + // locked_stream is deletable. + using L = decltype(stream->lockopen_preKernelCommand()); + + stream->lockclose_postKernelCommand(kernel_name, acc_v); + + delete static_cast(locked_stream); + locked_stream = nullptr; + } +}