Skip to content

Commit 33f5bd5

Browse files
committed
Redo using .yml as primary changes.
1 parent f568080 commit 33f5bd5

File tree

5 files changed

+118
-48
lines changed

5 files changed

+118
-48
lines changed

include/ur.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1518,6 +1518,9 @@ class ur_queue_flags_v(IntEnum):
15181518
DISCARD_EVENTS = UR_BIT(4) ## Events will be discarded
15191519
PRIORITY_LOW = UR_BIT(5) ## Low priority queue
15201520
PRIORITY_HIGH = UR_BIT(6) ## High priority queue
1521+
SUBMISSION_BATCHED = UR_BIT(7) ## Enqueue and submit in a batch later, as determined by adaptor or
1522+
## driver
1523+
SUBMISSION_IMMEDIATE = UR_BIT(8) ## Enqueue and submit immediately
15211524

15221525
class ur_queue_flags_t(c_int):
15231526
def __str__(self):

include/ur_api.h

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4000,20 +4000,16 @@ typedef enum ur_queue_flag_t {
40004000
UR_QUEUE_FLAG_DISCARD_EVENTS = UR_BIT(4), ///< Events will be discarded
40014001
UR_QUEUE_FLAG_PRIORITY_LOW = UR_BIT(5), ///< Low priority queue
40024002
UR_QUEUE_FLAG_PRIORITY_HIGH = UR_BIT(6), ///< High priority queue
4003-
UR_QUEUE_FLAG_SUBMISSION_BATCHED = UR_BIT(7), ///< Opportunistically submit the operation some
4004-
///< time after enqueueing. Collect operations
4005-
///< and then submit at a later time in a batch.
4006-
///< Batch size will be determined automatically
4007-
///< by the adapter or underlying driver.
4008-
UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE = UR_BIT(8), ///< Submit immediately after the enqueue operation
4009-
///< completes.
4003+
UR_QUEUE_FLAG_SUBMISSION_BATCHED = UR_BIT(7), ///< Enqueue and submit in a batch later, as determined by adaptor or
4004+
///< driver
4005+
UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE = UR_BIT(8), ///< Enqueue and submit immediately
40104006
/// @cond
40114007
UR_QUEUE_FLAG_FORCE_UINT32 = 0x7fffffff
40124008
/// @endcond
40134009

40144010
} ur_queue_flag_t;
40154011
/// @brief Bit Mask for validating ur_queue_flags_t
4016-
#define UR_QUEUE_FLAGS_MASK 0xffffff80
4012+
#define UR_QUEUE_FLAGS_MASK 0xfffffe00
40174013

40184014
///////////////////////////////////////////////////////////////////////////////
40194015
/// @brief Query information about a command queue

scripts/core/queue.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ etors:
6262
- name: PRIORITY_HIGH
6363
value: "$X_BIT(6)"
6464
desc: "High priority queue"
65+
- name: SUBMISSION_BATCHED
66+
value: "$X_BIT(7)"
67+
desc: "Enqueue and submit in a batch later, as determined by adaptor or driver"
68+
- name: SUBMISSION_IMMEDIATE
69+
value: "$X_BIT(8)"
70+
desc: "Enqueue and submit immediately"
6571
--- #--------------------------------------------------------------------------
6672
type: function
6773
desc: "Query information about a command queue"

source/common/ur_params.hpp

Lines changed: 98 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7095,12 +7095,12 @@ inline std::ostream &operator<<(std::ostream &os, enum ur_queue_flag_t value) {
70957095
break;
70967096

70977097
case UR_QUEUE_FLAG_SUBMISSION_BATCHED:
7098-
os << "UR_QUEUE_FLAG_SUBMISSION_BATCHED";
7099-
break;
7098+
os << "UR_QUEUE_FLAG_SUBMISSION_BATCHED";
7099+
break;
71007100

71017101
case UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE:
7102-
os << "UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE";
7103-
break;
7102+
os << "UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE";
7103+
break;
71047104
default:
71057105
os << "unknown enumerator";
71067106
break;
@@ -7114,28 +7114,103 @@ inline void serializeFlag<ur_queue_flag_t>(std::ostream &os, uint32_t flag) {
71147114
uint32_t val = flag;
71157115
bool first = true;
71167116

7117-
auto showFlag = [&](ur_queue_flag_t flag) {
7118-
if ((val & flag) == (uint32_t)flag) {
7119-
val ^= (uint32_t)flag;
7117+
if ((val & UR_QUEUE_FLAG_OUT_OF_ORDER_EXEC_MODE_ENABLE) ==
7118+
(uint32_t)UR_QUEUE_FLAG_OUT_OF_ORDER_EXEC_MODE_ENABLE) {
7119+
val ^= (uint32_t)UR_QUEUE_FLAG_OUT_OF_ORDER_EXEC_MODE_ENABLE;
7120+
if (!first) {
7121+
os << " | ";
7122+
} else {
7123+
first = false;
7124+
}
7125+
os << UR_QUEUE_FLAG_OUT_OF_ORDER_EXEC_MODE_ENABLE;
7126+
}
7127+
7128+
if ((val & UR_QUEUE_FLAG_PROFILING_ENABLE) ==
7129+
(uint32_t)UR_QUEUE_FLAG_PROFILING_ENABLE) {
7130+
val ^= (uint32_t)UR_QUEUE_FLAG_PROFILING_ENABLE;
71207131
if (!first) {
7121-
os << " | ";
7132+
os << " | ";
71227133
} else {
7123-
first = false;
7124-
}
7125-
os << flag;
7126-
}
7127-
};
7128-
7129-
showFlag(UR_QUEUE_FLAG_OUT_OF_ORDER_EXEC_MODE_ENABLE);
7130-
showFlag(UR_QUEUE_FLAG_PROFILING_ENABLE);
7131-
showFlag(UR_QUEUE_FLAG_ON_DEVICE);
7132-
showFlag(UR_QUEUE_FLAG_ON_DEVICE_DEFAULT);
7133-
showFlag(UR_QUEUE_FLAG_DISCARD_EVENTS);
7134-
showFlag(UR_QUEUE_FLAG_PRIORITY_LOW);
7135-
showFlag(UR_QUEUE_FLAG_PRIORITY_HIGH);
7136-
showFlag(UR_QUEUE_FLAG_SUBMISSION_BATCHED);
7137-
showFlag(UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE);
7134+
first = false;
7135+
}
7136+
os << UR_QUEUE_FLAG_PROFILING_ENABLE;
7137+
}
71387138

7139+
if ((val & UR_QUEUE_FLAG_ON_DEVICE) == (uint32_t)UR_QUEUE_FLAG_ON_DEVICE) {
7140+
val ^= (uint32_t)UR_QUEUE_FLAG_ON_DEVICE;
7141+
if (!first) {
7142+
os << " | ";
7143+
} else {
7144+
first = false;
7145+
}
7146+
os << UR_QUEUE_FLAG_ON_DEVICE;
7147+
}
7148+
7149+
if ((val & UR_QUEUE_FLAG_ON_DEVICE_DEFAULT) ==
7150+
(uint32_t)UR_QUEUE_FLAG_ON_DEVICE_DEFAULT) {
7151+
val ^= (uint32_t)UR_QUEUE_FLAG_ON_DEVICE_DEFAULT;
7152+
if (!first) {
7153+
os << " | ";
7154+
} else {
7155+
first = false;
7156+
}
7157+
os << UR_QUEUE_FLAG_ON_DEVICE_DEFAULT;
7158+
}
7159+
7160+
if ((val & UR_QUEUE_FLAG_DISCARD_EVENTS) ==
7161+
(uint32_t)UR_QUEUE_FLAG_DISCARD_EVENTS) {
7162+
val ^= (uint32_t)UR_QUEUE_FLAG_DISCARD_EVENTS;
7163+
if (!first) {
7164+
os << " | ";
7165+
} else {
7166+
first = false;
7167+
}
7168+
os << UR_QUEUE_FLAG_DISCARD_EVENTS;
7169+
}
7170+
7171+
if ((val & UR_QUEUE_FLAG_PRIORITY_LOW) ==
7172+
(uint32_t)UR_QUEUE_FLAG_PRIORITY_LOW) {
7173+
val ^= (uint32_t)UR_QUEUE_FLAG_PRIORITY_LOW;
7174+
if (!first) {
7175+
os << " | ";
7176+
} else {
7177+
first = false;
7178+
}
7179+
os << UR_QUEUE_FLAG_PRIORITY_LOW;
7180+
}
7181+
7182+
if ((val & UR_QUEUE_FLAG_PRIORITY_HIGH) ==
7183+
(uint32_t)UR_QUEUE_FLAG_PRIORITY_HIGH) {
7184+
val ^= (uint32_t)UR_QUEUE_FLAG_PRIORITY_HIGH;
7185+
if (!first) {
7186+
os << " | ";
7187+
} else {
7188+
first = false;
7189+
}
7190+
os << UR_QUEUE_FLAG_PRIORITY_HIGH;
7191+
}
7192+
7193+
if ((val & UR_QUEUE_FLAG_SUBMISSION_BATCHED) ==
7194+
(uint32_t)UR_QUEUE_FLAG_SUBMISSION_BATCHED) {
7195+
val ^= (uint32_t)UR_QUEUE_FLAG_SUBMISSION_BATCHED;
7196+
if (!first) {
7197+
os << " | ";
7198+
} else {
7199+
first = false;
7200+
}
7201+
os << UR_QUEUE_FLAG_SUBMISSION_BATCHED;
7202+
}
7203+
7204+
if ((val & UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE) ==
7205+
(uint32_t)UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE) {
7206+
val ^= (uint32_t)UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE;
7207+
if (!first) {
7208+
os << " | ";
7209+
} else {
7210+
first = false;
7211+
}
7212+
os << UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE;
7213+
}
71397214
if (val != 0) {
71407215
std::bitset<32> bits(val);
71417216
if (!first) {

test/conformance/queue/urQueueCreate.cpp

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -78,27 +78,17 @@ TEST_P(urQueueCreateTest, InvalidValueProperties) {
7878

7979
TEST_P(urQueueCreateTest, InvalidQueueProperties) {
8080
ur_queue_handle_t queue = nullptr;
81-
82-
// It should be an error to specify both low/high priorities
8381
ur_queue_properties_t props = {
8482
/*.stype =*/UR_STRUCTURE_TYPE_QUEUE_PROPERTIES,
8583
/*.pNext =*/nullptr,
86-
/*.flags =*/UR_QUEUE_FLAG_PRIORITY_HIGH | UR_QUEUE_FLAG_PRIORITY_LOW,
84+
/*.flags =*/UR_QUEUE_FLAG_PRIORITY_HIGH | UR_QUEUE_FLAG_PRIORITY_LOW |
85+
UR_QUEUE_FLAG_SUBMISSION_BATCHED |
86+
UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE,
8787
};
88+
// It should be an error to specify both low/high priorities
89+
ASSERT_EQ_RESULT(UR_RESULT_ERROR_INVALID_QUEUE_PROPERTIES,
90+
urQueueCreate(context, device, &props, &queue));
91+
// It should be an error to specify both batched and immediate submission
8892
ASSERT_EQ_RESULT(UR_RESULT_ERROR_INVALID_QUEUE_PROPERTIES,
8993
urQueueCreate(context, device, &props, &queue));
90-
}
91-
92-
TEST_P(urQueueCreateTest, InvalidQueueProperties) {
93-
ur_queue_handle_t queue = nullptr;
94-
95-
// It should be an error to specify both batched and immediate submission
96-
ur_queue_properties_t props = {
97-
/*.stype =*/UR_STRUCTURE_TYPE_QUEUE_PROPERTIES,
98-
/*.pNext =*/nullptr,
99-
/*.flags =*/UR_QUEUE_FLAG_SUBMISSION_BATCHED |
100-
UR_QUEUE_FLAG_SUBMISSION_IMMEDIATE,
101-
};
102-
ASSERT_EQ_RESULT(UR_RESULT_ERROR_INVALID_QUEUE_PROPERTIES,
103-
urQueueCreate(context, device, &props, &queue));
10494
}

0 commit comments

Comments
 (0)