Skip to content

Commit d8fd5f0

Browse files
author
Georgi Mirazchiyski
committed
Add new ur_usm_advice_flag_t value for non-coherent memory
1 parent 2530ec6 commit d8fd5f0

File tree

3 files changed

+36
-1
lines changed

3 files changed

+36
-1
lines changed

include/ur_api.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3235,13 +3235,16 @@ typedef enum ur_usm_advice_flag_t {
32353235
UR_USM_ADVICE_FLAG_CLEAR_ACCESSED_BY_HOST = UR_BIT(12), ///< Removes the affect of ::UR_USM_ADVICE_FLAG_SET_ACCESSED_BY_HOST
32363236
UR_USM_ADVICE_FLAG_SET_PREFERRED_LOCATION_HOST = UR_BIT(13), ///< Hint that the preferred memory location is the host
32373237
UR_USM_ADVICE_FLAG_CLEAR_PREFERRED_LOCATION_HOST = UR_BIT(14), ///< Removes the affect of ::UR_USM_ADVICE_FLAG_SET_PREFERRED_LOCATION_HOST
3238+
UR_USM_ADVICE_FLAG_SET_NON_COHERENT_MEMORY = UR_BIT(15), ///< Hint that memory coherence will be coarse-grained (up-to-date only at
3239+
///< kernel boundaries)
3240+
UR_USM_ADVICE_FLAG_CLEAR_NON_COHERENT_MEMORY = UR_BIT(16), ///< Removes the affect of ::UR_USM_ADVICE_FLAG_SET_NON_COHERENT_MEMORY
32383241
/// @cond
32393242
UR_USM_ADVICE_FLAG_FORCE_UINT32 = 0x7fffffff
32403243
/// @endcond
32413244

32423245
} ur_usm_advice_flag_t;
32433246
/// @brief Bit Mask for validating ur_usm_advice_flags_t
3244-
#define UR_USM_ADVICE_FLAGS_MASK 0xffff8000
3247+
#define UR_USM_ADVICE_FLAGS_MASK 0xfffe0000
32453248

32463249
///////////////////////////////////////////////////////////////////////////////
32473250
/// @brief Handle of USM pool

include/ur_print.hpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6277,6 +6277,12 @@ inline std::ostream &operator<<(std::ostream &os, ur_usm_advice_flag_t value) {
62776277
case UR_USM_ADVICE_FLAG_CLEAR_PREFERRED_LOCATION_HOST:
62786278
os << "UR_USM_ADVICE_FLAG_CLEAR_PREFERRED_LOCATION_HOST";
62796279
break;
6280+
case UR_USM_ADVICE_FLAG_SET_NON_COHERENT_MEMORY:
6281+
os << "UR_USM_ADVICE_FLAG_SET_NON_COHERENT_MEMORY";
6282+
break;
6283+
case UR_USM_ADVICE_FLAG_CLEAR_NON_COHERENT_MEMORY:
6284+
os << "UR_USM_ADVICE_FLAG_CLEAR_NON_COHERENT_MEMORY";
6285+
break;
62806286
default:
62816287
os << "unknown enumerator";
62826288
break;
@@ -6441,6 +6447,26 @@ inline ur_result_t printFlag<ur_usm_advice_flag_t>(std::ostream &os, uint32_t fl
64416447
}
64426448
os << UR_USM_ADVICE_FLAG_CLEAR_PREFERRED_LOCATION_HOST;
64436449
}
6450+
6451+
if ((val & UR_USM_ADVICE_FLAG_SET_NON_COHERENT_MEMORY) == (uint32_t)UR_USM_ADVICE_FLAG_SET_NON_COHERENT_MEMORY) {
6452+
val ^= (uint32_t)UR_USM_ADVICE_FLAG_SET_NON_COHERENT_MEMORY;
6453+
if (!first) {
6454+
os << " | ";
6455+
} else {
6456+
first = false;
6457+
}
6458+
os << UR_USM_ADVICE_FLAG_SET_NON_COHERENT_MEMORY;
6459+
}
6460+
6461+
if ((val & UR_USM_ADVICE_FLAG_CLEAR_NON_COHERENT_MEMORY) == (uint32_t)UR_USM_ADVICE_FLAG_CLEAR_NON_COHERENT_MEMORY) {
6462+
val ^= (uint32_t)UR_USM_ADVICE_FLAG_CLEAR_NON_COHERENT_MEMORY;
6463+
if (!first) {
6464+
os << " | ";
6465+
} else {
6466+
first = false;
6467+
}
6468+
os << UR_USM_ADVICE_FLAG_CLEAR_NON_COHERENT_MEMORY;
6469+
}
64446470
if (val != 0) {
64456471
std::bitset<32> bits(val);
64466472
if (!first) {

scripts/core/usm.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,12 @@ etors:
126126
- name: CLEAR_PREFERRED_LOCATION_HOST
127127
value: "$X_BIT(14)"
128128
desc: "Removes the affect of $X_USM_ADVICE_FLAG_SET_PREFERRED_LOCATION_HOST"
129+
- name: SET_NON_COHERENT_MEMORY
130+
value: "$X_BIT(15)"
131+
desc: "Hint that memory coherence will be coarse-grained (up-to-date only at kernel boundaries)"
132+
- name: CLEAR_NON_COHERENT_MEMORY
133+
value: "$X_BIT(16)"
134+
desc: "Removes the affect of $X_USM_ADVICE_FLAG_SET_NON_COHERENT_MEMORY"
129135
--- #--------------------------------------------------------------------------
130136
type: handle
131137
desc: "Handle of USM pool"

0 commit comments

Comments
 (0)