Skip to content

Commit daaece0

Browse files
authored
[SYCL][Graph] Fix access modes not being respected (#13011)
- Fix access modes not being respected and creating unnecessary edges - Update printing E2E tests since output has changed - Add unit tests for access modes Addresses #12473
1 parent 7c70e59 commit daaece0

File tree

9 files changed

+259
-59
lines changed

9 files changed

+259
-59
lines changed

sycl/source/detail/graph_impl.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -439,12 +439,12 @@ graph_impl::add(node_type NodeType,
439439
}
440440
// Look through the graph for nodes which share this requirement
441441
for (auto &Node : MNodeStorage) {
442-
if (Node->hasRequirement(Req)) {
442+
if (Node->hasRequirementDependency(Req)) {
443443
bool ShouldAddDep = true;
444444
// If any of this node's successors have this requirement then we skip
445445
// adding the current node as a dependency.
446446
for (auto &Succ : Node->MSuccessors) {
447-
if (Succ.lock()->hasRequirement(Req)) {
447+
if (Succ.lock()->hasRequirementDependency(Req)) {
448448
ShouldAddDep = false;
449449
break;
450450
}

sycl/source/detail/graph_impl.hpp

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,17 +167,38 @@ class node_impl {
167167
}
168168
return *this;
169169
}
170+
/// Checks if this node should be a dependency of another node based on
171+
/// accessor requirements. This is calculated using access modes if a
172+
/// requirement to the same buffer is found inside this node.
173+
/// @param IncomingReq Incoming requirement.
174+
/// @return True if a dependency is needed, false if not.
175+
bool hasRequirementDependency(sycl::detail::AccessorImplHost *IncomingReq) {
176+
access_mode InMode = IncomingReq->MAccessMode;
177+
switch (InMode) {
178+
case access_mode::read:
179+
case access_mode::read_write:
180+
case access_mode::atomic:
181+
break;
182+
// These access modes don't care about existing buffer data, so we don't
183+
// need a dependency.
184+
case access_mode::write:
185+
case access_mode::discard_read_write:
186+
case access_mode::discard_write:
187+
return false;
188+
}
170189

171-
/// Checks if this node has a given requirement.
172-
/// @param Requirement Requirement to lookup.
173-
/// @return True if \p Requirement is present in node, false otherwise.
174-
bool hasRequirement(sycl::detail::AccessorImplHost *IncomingReq) {
175190
for (sycl::detail::AccessorImplHost *CurrentReq :
176191
MCommandGroup->getRequirements()) {
177192
if (IncomingReq->MSYCLMemObj == CurrentReq->MSYCLMemObj) {
178-
return true;
193+
access_mode CurrentMode = CurrentReq->MAccessMode;
194+
// Since we have an incoming read requirement, we only care
195+
// about requirements on this node if they are write
196+
if (CurrentMode != access_mode::read) {
197+
return true;
198+
}
179199
}
180200
}
201+
// No dependency necessary
181202
return false;
182203
}
183204

sycl/test-e2e/Graph/Explicit/debug_print_graph.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,22 @@
1212
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE2]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11add_kernelsItEN4sycl3_V13ext6oneapi12experimental4nodeENS4_13command_graphILNS4_11graph_stateE0EEEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constISA_E4typeEEEvEESH_SH_ENKUlRNS1_7handlerEE0_clESJ_EUlNS1_4itemILi1ELb1EEEE_\n"];
1313
// CHECK-NEXT: "0x[[#NODE1]]" -> "0x[[#NODE2]]"
1414
// CHECK-NEXT: "0x[[#%x,NODE3:]]"
15-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE3]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11add_kernelsItEN4sycl3_V13ext6oneapi12experimental4nodeENS4_13command_graphILNS4_11graph_stateE0EEEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constISA_E4typeEEEvEESH_SH_ENKUlRNS1_7handlerEE1_clESJ_EUlNS1_4itemILi1ELb1EEEE_\n"];
16-
// CHECK-NEXT: "0x[[#NODE2]]" -> "0x[[#NODE3]]"
15+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE3]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11add_kernelsItEN4sycl3_V13ext6oneapi12experimental4nodeENS4_13command_graphILNS4_11graph_stateE0EEEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constISA_E4typeEEEvEESH_SH_ENKUlRNS1_7handlerEE2_clESJ_EUlNS1_4itemILi1ELb1EEEE_\n"];
16+
// CHECK-DAG: "0x[[#NODE2]]" -> "0x[[#NODE3]]"
17+
// CHECK-DAG: "0x[[#%x,NODE7:]]" -> "0x[[#NODE3]]"
1718
// CHECK-NEXT: "0x[[#%x,NODE4:]]"
18-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE4]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11add_kernelsItEN4sycl3_V13ext6oneapi12experimental4nodeENS4_13command_graphILNS4_11graph_stateE0EEEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constISA_E4typeEEEvEESH_SH_ENKUlRNS1_7handlerEE2_clESJ_EUlNS1_4itemILi1ELb1EEEE_\n"];
19+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE4]]\nTYPE = CGCopy Device-to-Device \n"];
1920
// CHECK-DAG: "0x[[#NODE3]]" -> "0x[[#NODE4]]"
20-
// CHECK-DAG: "0x[[#NODE2]]" -> "0x[[#NODE4]]"
21+
// CHECK-DAG: "0x[[#NODE1]]" -> "0x[[#NODE4]]"
2122
// CHECK-NEXT: "0x[[#%x,NODE5:]]"
22-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE5]]\nTYPE = CGCopy Device-to-Device \n"];
23+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE5]]\nTYPE = CGCopy Device-to-Host \n"];
2324
// CHECK-DAG: "0x[[#NODE3]]" -> "0x[[#NODE5]]"
24-
// CHECK-DAG: "0x[[#NODE4]]" -> "0x[[#NODE5]]
2525
// CHECK-NEXT: "0x[[#%x,NODE6:]]"
26-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE6]]\nTYPE = CGCopy Device-to-Host \n"];
27-
// CHECK-DAG: "0x[[#NODE4]]" -> "0x[[#NODE6]]"
28-
// CHECK-NEXT: "0x[[#%x,NODE7:]]"
29-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE7]]\nTYPE = None \n"];
30-
// CHECK-DAG: "0x[[#NODE6]]" -> "0x[[#NODE7]]"
26+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE6]]\nTYPE = None \n"];
27+
// CHECK-DAG: "0x[[#NODE5]]" -> "0x[[#NODE6]]"
28+
// CHECK-NEXT: "0x[[#NODE7]]"
29+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE7]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11add_kernelsItEN4sycl3_V13ext6oneapi12experimental4nodeENS4_13command_graphILNS4_11graph_stateE0EEEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constISA_E4typeEEEvEESH_SH_ENKUlRNS1_7handlerEE1_clESJ_EUlNS1_4itemILi1ELb1EEEE_\n"];
30+
// CHECK-DAG: "0x[[#NODE1]]" -> "0x[[#NODE7]]"
3131

3232
#define GRAPH_E2E_EXPLICIT
3333

sycl/test-e2e/Graph/Explicit/debug_print_graph_verbose.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,28 @@
1414
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE2]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11add_kernelsItEN4sycl3_V13ext6oneapi12experimental4nodeENS4_13command_graphILNS4_11graph_stateE0EEEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constISA_E4typeEEEvEESH_SH_ENKUlRNS1_7handlerEE0_clESJ_EUlNS1_4itemILi1ELb1EEEE_\n
1515
// CHECK-SAME: ARGS = \n0) Type: Accessor Ptr: 0x[[#%x,ADDR4:]]\n1) Type: STD_Layout Ptr: 0x[[#%x,ADDR5:]]\n2) Type: STD_Layout Ptr: 0x[[#%x,ADDR6:]]\n
1616
// CHECK-SAME: 3) Type: STD_Layout Ptr: 0x[[#ADDR4]]\n4) Type: Accessor Ptr: 0x[[#%x,ADDR7:]]\n5) Type: STD_Layout Ptr: 0x[[#%x,ADDR8:]]\n6) Type: STD_Layout Ptr: 0x[[#%x,ADDR9:]]\n7) Type: STD_Layout Ptr: 0x[[#%x,ADDR10:]]\n"];
17-
// CHECK-NEXT: "0x[[#NODE1]]" -> "0x[[#NODE2]]"
18-
// CHECK-NEXT: "0x[[#%x,NODE3:]]"
19-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE3]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11add_kernelsItEN4sycl3_V13ext6oneapi12experimental4nodeENS4_13command_graphILNS4_11graph_stateE0EEEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constISA_E4typeEEEvEESH_SH_ENKUlRNS1_7handlerEE1_clESJ_EUlNS1_4itemILi1ELb1EEEE_\n
17+
// CHECK-DAG: "0x[[#NODE1]]" -> "0x[[#NODE2]]"
18+
// CHECK-DAG: "0x[[#%x,NODE3:]]"
19+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE3]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11add_kernelsItEN4sycl3_V13ext6oneapi12experimental4nodeENS4_13command_graphILNS4_11graph_stateE0EEEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constISA_E4typeEEEvEESH_SH_ENKUlRNS1_7handlerEE2_clESJ_EUlNS1_4itemILi1ELb1EEEE_\n
2020
// CHECK-SAME: ARGS = \n0) Type: Accessor Ptr: 0x[[#%x,ADDR11:]]\n1) Type: STD_Layout Ptr: 0x[[#%x,ADDR12:]]\n2) Type: STD_Layout Ptr: 0x[[#%x,ADDR13:]]\n
2121
// CHECK-SAME: 3) Type: STD_Layout Ptr: 0x[[#ADDR11]]\n4) Type: Accessor Ptr: 0x[[#%x,ADDR14:]]\n5) Type: STD_Layout Ptr: 0x[[#%x,ADDR15:]]\n6) Type: STD_Layout Ptr: 0x[[#%x,ADDR16:]]\n7) Type: STD_Layout Ptr: 0x[[#%x,ADDR17:]]\n"];
22-
// CHECK-NEXT: "0x[[#NODE2]]" -> "0x[[#NODE3]]"
23-
// CHECK-NEXT: "0x[[#%x,NODE4:]]"
24-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE4]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11add_kernelsItEN4sycl3_V13ext6oneapi12experimental4nodeENS4_13command_graphILNS4_11graph_stateE0EEEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constISA_E4typeEEEvEESH_SH_ENKUlRNS1_7handlerEE2_clESJ_EUlNS1_4itemILi1ELb1EEEE_\n
25-
// CHECK-SAME: ARGS = \n0) Type: Accessor Ptr: 0x[[#%x,ADDR18:]]\n1) Type: STD_Layout Ptr: 0x[[#%x,ADDR19:]]\n2) Type: STD_Layout Ptr: 0x[[#%x,ADDR20:]]\n
26-
// CHECK-SAME: 3) Type: STD_Layout Ptr: 0x[[#ADDR18]]\n4) Type: Accessor Ptr: 0x[[#%x,ADDR21:]]\n5) Type: STD_Layout Ptr: 0x[[#%x,ADDR22:]]\n6) Type: STD_Layout Ptr: 0x[[#%x,ADDR23:]]\n7) Type: STD_Layout Ptr: 0x[[#%x,ADDR24:]]\n"];
22+
// CHECK-DAG: "0x[[#NODE2]]" -> "0x[[#NODE3]]"
23+
// CHECK-DAG: "0x[[#%x,NODE7:]]" -> "0x[[#NODE3]]"
24+
// CHECK-DAG: "0x[[#%x,NODE4:]]"
25+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE4]]\nTYPE = CGCopy Device-to-Device \nSrc: 0x[[#%x,ADDR18:]] Dst: 0x[[#%x,ADDR19:]]\n"];
2726
// CHECK-DAG: "0x[[#NODE3]]" -> "0x[[#NODE4]]"
28-
// CHECK-DAG: "0x[[#NODE2]]" -> "0x[[#NODE4]]"
27+
// CHECK-DAG: "0x[[#NODE1]]" -> "0x[[#NODE4]]
2928
// CHECK-NEXT: "0x[[#%x,NODE5:]]"
30-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE5]]\nTYPE = CGCopy Device-to-Device \nSrc: 0x[[#%x,ADDR25:]] Dst: 0x[[#%x,ADDR26:]]\n"];
29+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE5]]\nTYPE = CGCopy Device-to-Host \nSrc: 0x[[#%x,ADDR20:]] Dst: 0x[[#%x,ADDR21:]]\n"];
3130
// CHECK-DAG: "0x[[#NODE3]]" -> "0x[[#NODE5]]"
32-
// CHECK-DAG: "0x[[#NODE4]]" -> "0x[[#NODE5]]
3331
// CHECK-NEXT: "0x[[#%x,NODE6:]]"
34-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE6]]\nTYPE = CGCopy Device-to-Host \nSrc: 0x[[#%x,ADDR27:]] Dst: 0x[[#%x,ADDR28:]]\n"];
35-
// CHECK-DAG: "0x[[#NODE4]]" -> "0x[[#NODE6]]"
36-
// CHECK-NEXT: "0x[[#%x,NODE7:]]"
37-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE7]]\nTYPE = None \n"];
38-
// CHECK-DAG: "0x[[#NODE6]]" -> "0x[[#NODE7]]"
32+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE6]]\nTYPE = None \n"];
33+
// CHECK-DAG: "0x[[#NODE5]]" -> "0x[[#NODE6]]"
34+
// CHECK-NEXT: "0x[[#NODE7]]"
35+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE7]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11add_kernelsItEN4sycl3_V13ext6oneapi12experimental4nodeENS4_13command_graphILNS4_11graph_stateE0EEEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constISA_E4typeEEEvEESH_SH_ENKUlRNS1_7handlerEE1_clESJ_EUlNS1_4itemILi1ELb1EEEE_\n
36+
// CHECK-SAME: ARGS = \n0) Type: Accessor Ptr: 0x[[#%x,ADDR22:]]\n1) Type: STD_Layout Ptr: 0x[[#%x,ADDR23:]]\n2) Type: STD_Layout Ptr: 0x[[#%x,ADDR24:]]\n
37+
// CHECK-SAME: 3) Type: STD_Layout Ptr: 0x[[#ADDR22]]\n4) Type: Accessor Ptr: 0x[[#%x,ADDR25:]]\n5) Type: STD_Layout Ptr: 0x[[#%x,ADDR26:]]\n6) Type: STD_Layout Ptr: 0x[[#%x,ADDR27:]]\n7) Type: STD_Layout Ptr: 0x[[#%x,ADDR28:]]\n"];
38+
// CHECK-DAG: "0x[[#NODE1]]" -> "0x[[#NODE7]]"
3939

4040
#define GRAPH_E2E_EXPLICIT
4141

sycl/test-e2e/Graph/RecordReplay/debug_print_graph.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,22 @@
1212
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE2]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11run_kernelsItEN4sycl3_V15eventENS1_5queueEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constIS5_E4typeEEEvEESC_SC_ENKUlRNS1_7handlerEE0_clESE_EUlNS1_4itemILi1ELb1EEEE_\n"];
1313
// CHECK-NEXT: "0x[[#NODE1]]" -> "0x[[#NODE2]]"
1414
// CHECK-NEXT: "0x[[#%x,NODE3:]]"
15-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE3]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11run_kernelsItEN4sycl3_V15eventENS1_5queueEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constIS5_E4typeEEEvEESC_SC_ENKUlRNS1_7handlerEE1_clESE_EUlNS1_4itemILi1ELb1EEEE_\n"];
16-
// CHECK-NEXT: "0x[[#NODE2]]" -> "0x[[#NODE3]]"
15+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE3]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11run_kernelsItEN4sycl3_V15eventENS1_5queueEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constIS5_E4typeEEEvEESC_SC_ENKUlRNS1_7handlerEE2_clESE_EUlNS1_4itemILi1ELb1EEEE_\n"];
16+
// CHECK-DAG: "0x[[#NODE2]]" -> "0x[[#NODE3]]"
17+
// CHECK-DAG: "0x[[#%x,NODE7:]]" -> "0x[[#NODE3]]"
1718
// CHECK-NEXT: "0x[[#%x,NODE4:]]"
18-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE4]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11run_kernelsItEN4sycl3_V15eventENS1_5queueEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constIS5_E4typeEEEvEESC_SC_ENKUlRNS1_7handlerEE2_clESE_EUlNS1_4itemILi1ELb1EEEE_\n"];
19+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE4]]\nTYPE = CGCopy Device-to-Device \n"];
1920
// CHECK-DAG: "0x[[#NODE3]]" -> "0x[[#NODE4]]"
20-
// CHECK-DAG: "0x[[#NODE2]]" -> "0x[[#NODE4]]"
21+
// CHECK-DAG: "0x[[#NODE1]]" -> "0x[[#NODE4]]"
2122
// CHECK-NEXT: "0x[[#%x,NODE5:]]"
22-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE5]]\nTYPE = CGCopy Device-to-Device \n"];
23+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE5]]\nTYPE = CGCopy Device-to-Host \n"];
2324
// CHECK-DAG: "0x[[#NODE3]]" -> "0x[[#NODE5]]"
24-
// CHECK-DAG: "0x[[#NODE4]]" -> "0x[[#NODE5]]
2525
// CHECK-NEXT: "0x[[#%x,NODE6:]]"
26-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE6]]\nTYPE = CGCopy Device-to-Host \n"];
27-
// CHECK-DAG: "0x[[#NODE4]]" -> "0x[[#NODE6]]"
28-
// CHECK-NEXT: "0x[[#%x,NODE7:]]"
29-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE7]]\nTYPE = None \n"];
30-
// CHECK-DAG: "0x[[#NODE6]]" -> "0x[[#NODE7]]"
26+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE6]]\nTYPE = None \n"];
27+
// CHECK-DAG: "0x[[#NODE5]]" -> "0x[[#NODE6]]"
28+
// CHECK-NEXT: "0x[[#NODE7]]"
29+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE7]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11run_kernelsItEN4sycl3_V15eventENS1_5queueEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constIS5_E4typeEEEvEESC_SC_ENKUlRNS1_7handlerEE1_clESE_EUlNS1_4itemILi1ELb1EEEE_\n"];
30+
// CHECK-DAG: "0x[[#NODE1]]" -> "0x[[#NODE7]]"
3131

3232
#define GRAPH_E2E_RECORD_REPLAY
3333

sycl/test-e2e/Graph/RecordReplay/debug_print_graph_verbose.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,26 @@
1717
// CHECK-SAME: 3) Type: STD_Layout Ptr: 0x[[#ADDR4]]\n4) Type: Accessor Ptr: 0x[[#%x,ADDR7:]]\n5) Type: STD_Layout Ptr: 0x[[#%x,ADDR8:]]\n6) Type: STD_Layout Ptr: 0x[[#%x,ADDR9:]]\n7) Type: STD_Layout Ptr: 0x[[#%x,ADDR10:]]\n"];
1818
// CHECK-NEXT: "0x[[#NODE1]]" -> "0x[[#NODE2]]"
1919
// CHECK-NEXT: "0x[[#%x,NODE3:]]"
20-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE3]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11run_kernelsItEN4sycl3_V15eventENS1_5queueEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constIS5_E4typeEEEvEESC_SC_ENKUlRNS1_7handlerEE1_clESE_EUlNS1_4itemILi1ELb1EEEE_\n
20+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE3]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11run_kernelsItEN4sycl3_V15eventENS1_5queueEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constIS5_E4typeEEEvEESC_SC_ENKUlRNS1_7handlerEE2_clESE_EUlNS1_4itemILi1ELb1EEEE_\n
2121
// CHECK-SAME: ARGS = \n0) Type: Accessor Ptr: 0x[[#%x,ADDR11:]]\n1) Type: STD_Layout Ptr: 0x[[#%x,ADDR12:]]\n2) Type: STD_Layout Ptr: 0x[[#%x,ADDR13:]]\n
2222
// CHECK-SAME: 3) Type: STD_Layout Ptr: 0x[[#ADDR11]]\n4) Type: Accessor Ptr: 0x[[#%x,ADDR14:]]\n5) Type: STD_Layout Ptr: 0x[[#%x,ADDR15:]]\n6) Type: STD_Layout Ptr: 0x[[#%x,ADDR16:]]\n7) Type: STD_Layout Ptr: 0x[[#%x,ADDR17:]]\n"];
23-
// CHECK-NEXT: "0x[[#NODE2]]" -> "0x[[#NODE3]]"
23+
// CHECK-DAG: "0x[[#NODE2]]" -> "0x[[#NODE3]]"
24+
// CHECK-DAG: "0x[[#%x,NODE7:]]" -> "0x[[#NODE3]]"
2425
// CHECK-NEXT: "0x[[#%x,NODE4:]]"
25-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE4]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11run_kernelsItEN4sycl3_V15eventENS1_5queueEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constIS5_E4typeEEEvEESC_SC_ENKUlRNS1_7handlerEE2_clESE_EUlNS1_4itemILi1ELb1EEEE_\n
26-
// CHECK-SAME: ARGS = \n0) Type: Accessor Ptr: 0x[[#%x,ADDR18:]]\n1) Type: STD_Layout Ptr: 0x[[#%x,ADDR19:]]\n2) Type: STD_Layout Ptr: 0x[[#%x,ADDR20:]]\n
27-
// CHECK-SAME: 3) Type: STD_Layout Ptr: 0x[[#ADDR18]]\n4) Type: Accessor Ptr: 0x[[#%x,ADDR21:]]\n5) Type: STD_Layout Ptr: 0x[[#%x,ADDR22:]]\n6) Type: STD_Layout Ptr: 0x[[#%x,ADDR23:]]\n7) Type: STD_Layout Ptr: 0x[[#%x,ADDR24:]]\n"];
26+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE4]]\nTYPE = CGCopy Device-to-Device \nSrc: 0x[[#%x,ADDR18:]] Dst: 0x[[#%x,ADDR19:]]\n"];
2827
// CHECK-DAG: "0x[[#NODE3]]" -> "0x[[#NODE4]]"
29-
// CHECK-DAG: "0x[[#NODE2]]" -> "0x[[#NODE4]]"
28+
// CHECK-DAG: "0x[[#NODE1]]" -> "0x[[#NODE4]]
3029
// CHECK-NEXT: "0x[[#%x,NODE5:]]"
31-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE5]]\nTYPE = CGCopy Device-to-Device \nSrc: 0x[[#%x,ADDR25:]] Dst: 0x[[#%x,ADDR26:]]\n"];
30+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE5]]\nTYPE = CGCopy Device-to-Host \nSrc: 0x[[#%x,ADDR20:]] Dst: 0x[[#%x,ADDR21:]]\n"];
3231
// CHECK-DAG: "0x[[#NODE3]]" -> "0x[[#NODE5]]"
33-
// CHECK-DAG: "0x[[#NODE4]]" -> "0x[[#NODE5]]
3432
// CHECK-NEXT: "0x[[#%x,NODE6:]]"
35-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE6]]\nTYPE = CGCopy Device-to-Host \nSrc: 0x[[#%x,ADDR27:]] Dst: 0x[[#%x,ADDR28:]]\n"];
36-
// CHECK-DAG: "0x[[#NODE4]]" -> "0x[[#NODE6]]"
37-
// CHECK-NEXT: "0x[[#%x,NODE7:]]"
38-
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE7]]\nTYPE = None \n"];
39-
// CHECK-DAG: "0x[[#NODE6]]" -> "0x[[#NODE7]]"
33+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE6]]\nTYPE = None \n"];
34+
// CHECK-DAG: "0x[[#NODE5]]" -> "0x[[#NODE6]]"
35+
// CHECK-NEXT: "0x[[#NODE7]]"
36+
// CHECK-SAME: [style=bold, label="ID = 0x[[#NODE7]]\nTYPE = CGExecKernel \nNAME = _ZTSZZ11run_kernelsItEN4sycl3_V15eventENS1_5queueEmNS1_6bufferIT_Li1ENS1_6detail17aligned_allocatorINSt12remove_constIS5_E4typeEEEvEESC_SC_ENKUlRNS1_7handlerEE1_clESE_EUlNS1_4itemILi1ELb1EEEE_\n
37+
// CHECK-SAME: ARGS = \n0) Type: Accessor Ptr: 0x[[#%x,ADDR22:]]\n1) Type: STD_Layout Ptr: 0x[[#%x,ADDR23:]]\n2) Type: STD_Layout Ptr: 0x[[#%x,ADDR24:]]\n
38+
// CHECK-SAME: 3) Type: STD_Layout Ptr: 0x[[#ADDR22]]\n4) Type: Accessor Ptr: 0x[[#%x,ADDR25:]]\n5) Type: STD_Layout Ptr: 0x[[#%x,ADDR26:]]\n6) Type: STD_Layout Ptr: 0x[[#%x,ADDR27:]]\n7) Type: STD_Layout Ptr: 0x[[#%x,ADDR28:]]\n"];
39+
// CHECK-DAG: "0x[[#NODE1]]" -> "0x[[#NODE7]]"
4040

4141
#define GRAPH_E2E_RECORD_REPLAY
4242

sycl/unittests/Extensions/CommandGraph/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ add_sycl_unittest(CommandGraphExtensionTests OBJECT
77
InOrderQueue.cpp
88
MultiThreaded.cpp
99
Queries.cpp
10+
Regressions.cpp
1011
Subgraph.cpp
1112
)

0 commit comments

Comments
 (0)