From ba93e1ae21c49e0e5deb8dfd6a1cb91045f2d5eb Mon Sep 17 00:00:00 2001
From: foreman
Date: Wed, 1 May 2019 18:43:47 -0400
Subject: [PATCH] P4 to Git Change 1777158 by cpaquot@cpaquot-ocl-lc-lnx on
2019/05/01 17:12:01
SWDEV-188219 - [HIP] Add hipStreamCreateWithPriority. NOP right now.
Affected files ...
... //depot/stg/opencl/drivers/opencl/api/hip/hip_device_runtime.cpp#14 edit
... //depot/stg/opencl/drivers/opencl/api/hip/hip_hcc.def.in#13 edit
... //depot/stg/opencl/drivers/opencl/api/hip/hip_hcc.map.in#14 edit
... //depot/stg/opencl/drivers/opencl/api/hip/hip_stream.cpp#17 edit
... //depot/stg/opencl/drivers/opencl/runtime/platform/commandqueue.hpp#21 edit
---
api/hip/hip_device_runtime.cpp | 5 -----
api/hip/hip_hcc.def.in | 2 ++
api/hip/hip_hcc.map.in | 2 ++
api/hip/hip_stream.cpp | 33 +++++++++++++++++++++++++++++----
4 files changed, 33 insertions(+), 9 deletions(-)
diff --git a/api/hip/hip_device_runtime.cpp b/api/hip/hip_device_runtime.cpp
index bfaf5558d3..6bb4261964 100644
--- a/api/hip/hip_device_runtime.cpp
+++ b/api/hip/hip_device_runtime.cpp
@@ -343,11 +343,6 @@ hipError_t hipDeviceGetSharedMemConfig ( hipSharedMemConfig * pConfig ) {
HIP_RETURN(hipSuccess);
}
-hipError_t hipDeviceGetStreamPriorityRange ( int* leastPriority, int* greatestPriority ) {
- assert(0);
- HIP_RETURN(hipSuccess);
-}
-
hipError_t hipDeviceReset ( void ) {
HIP_INIT_API();
diff --git a/api/hip/hip_hcc.def.in b/api/hip/hip_hcc.def.in
index 01e58aef73..6f2295dbf7 100644
--- a/api/hip/hip_hcc.def.in
+++ b/api/hip/hip_hcc.def.in
@@ -24,6 +24,7 @@ hipDeviceGet
hipDeviceGetAttribute
hipDeviceGetByPCIBusId
hipDeviceGetCacheConfig
+hipDeviceGetStreamPriorityRange
hipDeviceGetLimit
hipDeviceGetName
hipDeviceGetPCIBusId
@@ -123,6 +124,7 @@ hipSetDeviceFlags
hipStreamAddCallback
hipStreamCreate
hipStreamCreateWithFlags
+hipStreamCreateWithPriority
hipStreamDestroy
hipStreamGetFlags
hipStreamQuery
diff --git a/api/hip/hip_hcc.map.in b/api/hip/hip_hcc.map.in
index 64d55460a9..b29d81f2f6 100644
--- a/api/hip/hip_hcc.map.in
+++ b/api/hip/hip_hcc.map.in
@@ -25,6 +25,7 @@ global:
hipDeviceGetAttribute;
hipDeviceGetByPCIBusId;
hipDeviceGetCacheConfig;
+ hipDeviceGetStreamPriorityRange;
hipDeviceGetLimit;
hipDeviceGetName;
hipDeviceGetPCIBusId;
@@ -123,6 +124,7 @@ global:
hipStreamAddCallback;
hipStreamCreate;
hipStreamCreateWithFlags;
+ hipStreamCreateWithPriority;
hipStreamDestroy;
hipStreamGetFlags;
hipStreamQuery;
diff --git a/api/hip/hip_stream.cpp b/api/hip/hip_stream.cpp
index 3331688424..1e4c820a44 100644
--- a/api/hip/hip_stream.cpp
+++ b/api/hip/hip_stream.cpp
@@ -63,13 +63,13 @@ void CL_CALLBACK ihipStreamCallback(cl_event event, cl_int command_exec_status,
delete cbo;
}
-static hipError_t ihipStreamCreateWithFlags(hipStream_t *stream, unsigned int flags) {
+static hipError_t ihipStreamCreate(hipStream_t *stream, unsigned int flags, amd::CommandQueue::Priority priority) {
amd::Device* device = hip::getCurrentContext()->devices()[0];
cl_command_queue_properties properties = CL_QUEUE_PROFILING_ENABLE;
amd::HostQueue* queue = new amd::HostQueue(*hip::getCurrentContext(), *device, properties,
amd::CommandQueue::RealTimeDisabled,
- amd::CommandQueue::Priority::Normal);
+ priority);
if (queue == nullptr || !queue->create()) {
return hipErrorOutOfMemory;
@@ -92,13 +92,38 @@ static hipError_t ihipStreamCreateWithFlags(hipStream_t *stream, unsigned int fl
hipError_t hipStreamCreateWithFlags(hipStream_t *stream, unsigned int flags) {
HIP_INIT_API(stream, flags);
- HIP_RETURN(ihipStreamCreateWithFlags(stream, flags));
+ HIP_RETURN(ihipStreamCreate(stream, flags, amd::CommandQueue::Priority::Normal));
}
hipError_t hipStreamCreate(hipStream_t *stream) {
HIP_INIT_API(stream);
- HIP_RETURN(ihipStreamCreateWithFlags(stream, hipStreamDefault));
+ HIP_RETURN(ihipStreamCreate(stream, hipStreamDefault, amd::CommandQueue::Priority::Normal));
+}
+
+hipError_t hipStreamCreateWithPriority(hipStream_t* stream, unsigned int flags, int priority) {
+ HIP_INIT_API(stream, flags, priority);
+
+ if (priority > static_cast(amd::CommandQueue::Priority::High)) {
+ priority = static_cast(amd::CommandQueue::Priority::High);
+ } else if (priority < static_cast(amd::CommandQueue::Priority::Normal)) {
+ priority = static_cast(amd::CommandQueue::Priority::Normal);
+ }
+
+ return HIP_RETURN(ihipStreamCreate(stream, flags, static_cast(priority)));
+}
+
+hipError_t hipDeviceGetStreamPriorityRange(int* leastPriority, int* greatestPriority) {
+ HIP_INIT_API(leastPriority, greatestPriority);
+
+ if (leastPriority != nullptr) {
+ *leastPriority = static_cast(amd::CommandQueue::Priority::Normal);
+ }
+ if (greatestPriority != nullptr) {
+ // Only report one kind of priority for now.
+ *greatestPriority = static_cast(amd::CommandQueue::Priority::Normal);
+ }
+ return HIP_RETURN(hipSuccess);
}
hipError_t hipStreamGetFlags(hipStream_t stream, unsigned int *flags) {