Skip to content

Commit 39eb5ed

Browse files
authored
[SYCL] Move accessor_impl to source directory (intel#6698)
Moving impl part of host accessor implementation to avoid exposing implementation details in the headers. This allows for more changes in accessor without breaking ABI. Also updated the gdb xmethods since it was relying on the impl details which are not available for gdb(unless libsycl.so is built with debug symbols) anymore. Instead of accessing members of impl directly gdb printers now accessing helper methods. To prevent compiler discarding these methods there are dummy references which are active when NDEBUG is not defined.
1 parent e112609 commit 39eb5ed

19 files changed

+482
-425
lines changed

sycl/gdb/libsycl.so-gdb.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,37 +51,35 @@ def value(self, arg):
5151
class HostAccessor(Accessor):
5252
"""For Host device memory layout"""
5353

54-
def payload(self):
55-
return self.obj["impl"]["_M_ptr"].dereference()
56-
5754
def memory_range(self, dim):
58-
return self.payload()["MMemoryRange"]["common_array"][dim]
55+
eval_string = "((" + str(self.obj.type) + ")" + str(self.obj) + ")->getMemoryRange()"
56+
return gdb.parse_and_eval(eval_string)["common_array"][dim];
5957

6058
def offset(self, dim):
61-
return self.payload()["MOffset"]["common_array"][dim]
59+
eval_string = "((" + str(self.obj.type) + ")" + str(self.obj) + ")->getOffset()"
60+
return gdb.parse_and_eval(eval_string)["common_array"][dim];
6261

6362
def data(self):
64-
return self.payload()["MData"]
65-
63+
eval_string = "((" + str(self.obj.type) + ")" + str(self.obj) + ")->getPtr()"
64+
return gdb.parse_and_eval(eval_string);
6665

6766
class HostAccessorLocal(HostAccessor):
6867
"""For Host device memory layout"""
6968

69+
def memory_range(self, dim):
70+
eval_string = "((" + str(self.obj.type) + ")" + str(self.obj) + ")->getSize()"
71+
return gdb.parse_and_eval(eval_string)["common_array"][dim];
72+
7073
def index(self, arg):
7174
if arg.type.code == gdb.TYPE_CODE_INT:
7275
return int(arg)
7376
result = 0
7477
for dim in range(self.depth):
7578
result = (
76-
result * self.payload()["MSize"]["common_array"][dim]
77-
+ arg["common_array"][dim]
79+
result * self.memory_range() + arg["common_array"][dim]
7880
)
7981
return result
8082

81-
def data(self):
82-
return self.payload()["MMem"]
83-
84-
8583
class DeviceAccessor(Accessor):
8684
"""For CPU/GPU memory layout"""
8785

@@ -104,7 +102,11 @@ def __init__(self, class_type, result_type, depth):
104102
self.depth = depth
105103

106104
def get_arg_types(self):
107-
return gdb.lookup_type("sycl::_V1::id<%s>" % self.depth)
105+
try:
106+
return gdb.lookup_type("sycl::_V1::id<%s>" % self.depth)
107+
except:
108+
pass
109+
return None
108110

109111
def get_result_type(self, *args):
110112
return self.result_type

0 commit comments

Comments
 (0)