!20377 Delete unused files in offline debugger ccsrc

Merge pull request !20377 from TinaMengtingZhang/del_dbg_files
This commit is contained in:
i-robot 2021-07-16 06:35:29 +00:00 committed by Gitee
commit 63c91062f4
21 changed files with 0 additions and 2350 deletions

View File

@ -1,28 +0,0 @@
-----------------------------------------------------------
tensor_info_1 attributes:
node name = Default/network-TrainOneStepCell/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/Conv2D-op169
slot = 0
iteration = 2
device_id = None
root_graph_id = 1
is_parameter = False
tensor_data_1 attributes:
data (printed in uint8) = [149 167 124 ... 158 212 164]
size in bytes = 2076672
debugger dtype = 10
shape = [32, 192, 13, 13]
-----------------------------------------------------------
tensor_info_2 attributes:
node name = Default/network-TrainOneStepCell/network-WithLossCell/_backbone-AlexNet/ReLUV2-op348
slot = 1
iteration = 2
device_id = None
root_graph_id = 1
is_parameter = False
tensor_data_2 attributes:
data (printed in uint8) = [ 20 21 18 ... 126 98 25]
size in bytes = 129792
debugger dtype = 6
shape = [32, 12, 13, 13, 2]

View File

@ -1,72 +0,0 @@
# Copyright 2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""
Read tensor test script for offline debugger APIs.
"""
import mindspore.offline_debug.dbg_services as d
import numpy as np
def main():
debugger_backend = d.DbgServices(
dump_file_path="/opt/nvme2n1/j00455527/dumps/async_sink_true/032421")
_ = debugger_backend.initialize(net_name="alexnet", is_sync_mode=False)
# output tensor with zero slot
info1 = d.TensorInfo(node_name="Default/network-TrainOneStepCell/network-WithLossCell/_backbone-AlexNet/"
"conv3-Conv2d/Conv2D-op169",
slot=0, iteration=2, device_id=0, root_graph_id=1, is_parameter=False)
# output tensor with non-zero slot
info2 = d.TensorInfo(node_name="Default/network-TrainOneStepCell/network-WithLossCell/_backbone-AlexNet/"
"ReLUV2-op348",
slot=1, iteration=2, device_id=0, root_graph_id=1, is_parameter=False)
tensor_info = [info1, info2]
tensor_data = debugger_backend.read_tensors(tensor_info)
print_read_tensors(tensor_info, tensor_data)
def print_read_tensors(tensor_info, tensor_data):
"""Print read tensors."""
for x, _ in enumerate(tensor_info):
print("-----------------------------------------------------------")
print("tensor_info_" + str(x+1) + " attributes:")
print("node name = ", tensor_info[x].node_name)
print("slot = ", tensor_info[x].slot)
print("iteration = ", tensor_info[x].iteration)
print("device_id = ", tensor_info[x].device_id)
print("root_graph_id = ", tensor_info[x].root_graph_id)
print("is_parameter = ", tensor_info[x].is_parameter)
print()
print("tensor_data_" + str(x+1) + " attributes:")
print("data (printed in uint8) = ", np.frombuffer(
tensor_data[x].data_ptr, np.uint8, tensor_data[x].data_size))
py_byte_size = len(tensor_data[x].data_ptr)
c_byte_size = tensor_data[x].data_size
if c_byte_size != py_byte_size:
print("The python byte size of ", py_byte_size,
" does not match the C++ byte size of ", c_byte_size)
print("size in bytes = ", tensor_data[x].data_size)
print("debugger dtype = ", tensor_data[x].dtype)
print("shape = ", tensor_data[x].shape)
if __name__ == "__main__":
main()

View File

@ -1,14 +0,0 @@
-----------------------------------------------------------
watchpoint_hit for test_1 attributes:
name = Default/network-TrainOneStepCell/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/Conv2D-op169
slot = 0
condition = 6
watchpoint_id = 1
parameter 0 name = param
parameter 0 disabled = False
parameter 0 value = 0.0
parameter 0 hit = True
parameter 0 actual_value = -0.1417236328125
error code = 0
device_id = 0
root_graph_id = 1

View File

@ -1,92 +0,0 @@
# Copyright 2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""
Watchpoints test script for offline debugger APIs.
"""
import mindspore.offline_debug.dbg_services as d
def main():
debugger_backend = d.DbgServices(
dump_file_path="/opt/nvme2n1/j00455527/dumps/async_sink_true/032421")
_ = debugger_backend.initialize(net_name="alexnet", is_sync_mode=False)
# NOTES:
# -> watch_condition=6 is MIN_LT
# -> watch_condition=18 is CHANGE_TOO_LARGE
# test 1: watchpoint set and hit (watch_condition=6)
param1 = d.Parameter(name="param", disabled=False, value=0.0)
_ = debugger_backend.add_watchpoint(watchpoint_id=1, watch_condition=6,
check_node_list={"Default/network-TrainOneStepCell/network-WithLossCell/"
"_backbone-AlexNet/conv3-Conv2d/Conv2D-op169":
{"device_id": [0], "root_graph_id": [1], "is_parameter": False
}}, parameter_list=[param1])
watchpoint_hits_test_1 = debugger_backend.check_watchpoints(iteration=2)
if len(watchpoint_hits_test_1) != 1:
print("ERROR -> test 1: watchpoint set but not hit just once")
print_watchpoint_hits(watchpoint_hits_test_1, 1)
# test 2: watchpoint remove and ensure it's not hit
_ = debugger_backend.remove_watchpoint(watchpoint_id=1)
watchpoint_hits_test_2 = debugger_backend.check_watchpoints(iteration=2)
if watchpoint_hits_test_2:
print("ERROR -> test 2: watchpoint removed but hit")
# test 3: watchpoint set and not hit, then remove
param2 = d.Parameter(name="param", disabled=False, value=-1000.0)
_ = debugger_backend.add_watchpoint(watchpoint_id=2, watch_condition=6,
check_node_list={"Default/network-TrainOneStepCell/network-WithLossCell/"
"_backbone-AlexNet/conv3-Conv2d/Conv2D-op169":
{"device_id": [0], "root_graph_id": [1], "is_parameter": False
}}, parameter_list=[param2])
watchpoint_hits_test_3 = debugger_backend.check_watchpoints(iteration=2)
if watchpoint_hits_test_3:
print("ERROR -> test 3: watchpoint set but not supposed to be hit")
_ = debugger_backend.remove_watchpoint(watchpoint_id=2)
def print_watchpoint_hits(watchpoint_hits, test_id):
"""Print watchpoint hits."""
for x, _ in enumerate(watchpoint_hits):
print("-----------------------------------------------------------")
print("watchpoint_hit for test_%u attributes:" % test_id)
print("name = ", watchpoint_hits[x].name)
print("slot = ", watchpoint_hits[x].slot)
print("condition = ", watchpoint_hits[x].condition)
print("watchpoint_id = ", watchpoint_hits[x].watchpoint_id)
for p, _ in enumerate(watchpoint_hits[x].parameters):
print("parameter ", p, " name = ",
watchpoint_hits[x].parameters[p].name)
print("parameter ", p, " disabled = ",
watchpoint_hits[x].parameters[p].disabled)
print("parameter ", p, " value = ",
watchpoint_hits[x].parameters[p].value)
print("parameter ", p, " hit = ",
watchpoint_hits[x].parameters[p].hit)
print("parameter ", p, " actual_value = ",
watchpoint_hits[x].parameters[p].actual_value)
print("error code = ", watchpoint_hits[x].error_code)
print("device_id = ", watchpoint_hits[x].device_id)
print("root_graph_id = ", watchpoint_hits[x].root_graph_id)
if __name__ == "__main__":
main()

View File

@ -1,49 +0,0 @@
python sync_trans_false_read_tensors.py > sync_trans_false_read_tensors.actual
sed -i '/\[WARNING\]/d' sync_trans_false_read_tensors.actual
sed -i '/Deprecated/d' sync_trans_false_read_tensors.actual
diff sync_trans_false_read_tensors.actual sync_trans_false_read_tensors.expected
if [ $? -eq 0 ]; then
echo sync_trans_false_read_tensors PASSED
else
echo sync_trans_false_read_tensors FAILED
fi
python sync_trans_true_read_tensors.py > sync_trans_true_read_tensors.actual
sed -i '/\[WARNING\]/d' sync_trans_true_read_tensors.actual
sed -i '/Deprecated/d' sync_trans_true_read_tensors.actual
diff sync_trans_true_read_tensors.actual sync_trans_true_read_tensors.expected
if [ $? -eq 0 ]; then
echo sync_trans_true_read_tensors PASSED
else
echo sync_trans_true_read_tensors FAILED
fi
python sync_trans_false_watchpoints.py > sync_trans_false_watchpoints.actual
sed -i '/\[WARNING\]/d' sync_trans_false_watchpoints.actual
sed -i '/Deprecated/d' sync_trans_false_watchpoints.actual
diff sync_trans_false_watchpoints.actual sync_trans_false_watchpoints.expected
if [ $? -eq 0 ]; then
echo sync_trans_false_watchpoints PASSED
else
echo sync_trans_false_watchpoints FAILED
fi
python async_sink_mode_true_read_tensors.py > async_sink_mode_true_read_tensors.actual
sed -i '/\[WARNING\]/d' async_sink_mode_true_read_tensors.actual
sed -i '/Deprecated/d' async_sink_mode_true_read_tensors.actual
diff async_sink_mode_true_read_tensors.actual async_sink_mode_true_read_tensors.expected
if [ $? -eq 0 ]; then
echo async_sink_mode_true_read_tensors PASSED
else
echo async_sink_mode_true_read_tensors FAILED
fi
python async_sink_mode_true_watchpoints.py > async_sink_mode_true_watchpoints.actual
sed -i '/\[WARNING\]/d' async_sink_mode_true_watchpoints.actual
sed -i '/Deprecated/d' async_sink_mode_true_watchpoints.actual
diff async_sink_mode_true_watchpoints.actual async_sink_mode_true_watchpoints.expected
if [ $? -eq 0 ]; then
echo async_sink_mode_true_watchpoints PASSED
else
echo async_sink_mode_true_watchpoints FAILED
fi

View File

@ -1,70 +0,0 @@
-----------------------------------------------------------
tensor_info_1 attributes:
node name = Default/network-WithLossCell/_backbone-AlexNet/conv2-Conv2d/conv2.bias
slot = 0
iteration = 2
device_id = None
root_graph_id = 0
is_parameter = True
tensor_data_1 attributes:
data (printed in uint8) = [170 19 44 181 254 212 16 52 52 162 148 180 130 115 226 180 183 243
101 52 224 79 189 51 10 70 69 51 199 75 159 52 79 98 104 52
106 77 19 52 129 183 8 180 252 58 48 180 35 219 9 52 240 201
179 51 142 151 158 51 210 145 182 53 140 219 0 53 140 219 22 181
46 33 87 180 238 90 122 180 166 10 38 179 202 195 4 53 166 10
150 51 214 120 209 52 235 115 37 180 92 177 215 180 0 136 84 51
72 114 145 180 43 169 255 180 114 27 61 52 76 225 122 50 126 72
159 51 58 35 202 51 114 61 106 51 60 223 63 52 209 179 1 52
232 217 44 178 130 158 109 179 213 231 10 179 37 40 94 179 208 68
64 53 6 52 249 52 162 35 1 181 231 29 155 52 30 201 69 180
229 131 126 51 18 165 109 180 164 112 163 181 116 172 11 178 6 129
37 52 54 205 203 180 115 104 145 52 232 106 219 179 36 40 214 52
202 50 204 52 76 89 38 179 230 140 232 178 168 53 77 52 180 191
108 51 128 183 64 51 56 137 161 180 247 6 143 180 126 63 197 180
198 177 94 52 140 185 139 51 150 178 228 180 255 67 150 52 134 201
164 52 107 43 14 53 174 216 63 179 40 160 41 53 120 88 72 179
218 172 234 52 234 38 25 52 85 159 155 180 254 67 138 180 34 253
118 180 218 61 17 52 242 133 253 52 175 37 180 52 171 62 163 52
202 195 86 53 160 171 45 52 34 31 176 180 156 85 5 53 178 191
68 180 42 203 140 52 248 117 72 52 248 253 212 176 195 100 202 51
87 14 141 52 91 100 235 51 48 221 136 52 143 117 17 180 51 196
25 52 127 29 112 180 152 144 207 178 219 104 64 52 21 174 251 52
164 78 138 181 20 63 6 52 10 249 96 179 163 146 18 53 200 186
236 52 2 188 85 52 124 140 121 179 246 185 22 181 246 74 249 51
70 182 135 53 189 227 76 52 249 160 159 180 134 235 65 53 64 164
255 51 224 156 41 53 142 117 69 181 247 151 101 53 185 175 35 52
164 112 21 53 30 31 212 179 142 151 110 179 176 148 29 181 206 204
88 53 116 215 214 180 172 173 216 51 106 222 153 180 200 152 19 181
176 3 7 52 215 52 87 52]
size in bytes = 512
debugger dtype = 11
shape = [128]
-----------------------------------------------------------
tensor_info_2 attributes:
node name = Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/Conv2D-op168
slot = 0
iteration = 2
device_id = None
root_graph_id = 0
is_parameter = False
tensor_data_2 attributes:
data (printed in uint8) = [181 167 46 ... 12 204 164]
size in bytes = 2076672
debugger dtype = 10
shape = [32, 12, 13, 13, 16]
-----------------------------------------------------------
tensor_info_3 attributes:
node name = Default/network-WithLossCell/_backbone-AlexNet/ReLUV2-op346
slot = 1
iteration = 2
device_id = None
root_graph_id = 0
is_parameter = False
tensor_data_3 attributes:
data (printed in uint8) = [ 50 17 122 ... 94 42 90]
size in bytes = 129792
debugger dtype = 6
shape = [32, 12, 13, 13, 2]

View File

@ -1,74 +0,0 @@
# Copyright 2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""
Read tensor test script for offline debugger APIs.
"""
import mindspore.offline_debug.dbg_services as d
import numpy as np
def main():
debugger_backend = d.DbgServices(
dump_file_path="/opt/nvme2n1/j00455527/dumps/sync_trans_false/032421/alexnet")
_ = debugger_backend.initialize(
net_name="Network Name goes here!", is_sync_mode=True)
# parameter
info1 = d.TensorInfo(node_name="Default/network-WithLossCell/_backbone-AlexNet/conv2-Conv2d/conv2.bias",
slot=0, iteration=2, device_id=0, root_graph_id=0, is_parameter=True)
# output tensor with zero slot
info2 = d.TensorInfo(node_name="Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/Conv2D-op168",
slot=0, iteration=2, device_id=0, root_graph_id=0, is_parameter=False)
# output tensor with non-zero slot
info3 = d.TensorInfo(node_name="Default/network-WithLossCell/_backbone-AlexNet/ReLUV2-op346",
slot=1, iteration=2, device_id=0, root_graph_id=0, is_parameter=False)
tensor_info = [info1, info2, info3]
tensor_data = debugger_backend.read_tensors(tensor_info)
print_read_tensors(tensor_info, tensor_data)
def print_read_tensors(tensor_info, tensor_data):
"""Print read tensors."""
for x, _ in enumerate(tensor_info):
print("-----------------------------------------------------------")
print("tensor_info_" + str(x+1) + " attributes:")
print("node name = ", tensor_info[x].node_name)
print("slot = ", tensor_info[x].slot)
print("iteration = ", tensor_info[x].iteration)
print("device_id = ", tensor_info[x].device_id)
print("root_graph_id = ", tensor_info[x].root_graph_id)
print("is_parameter = ", tensor_info[x].is_parameter)
print()
print("tensor_data_" + str(x+1) + " attributes:")
print("data (printed in uint8) = ", np.frombuffer(
tensor_data[x].data_ptr, np.uint8, tensor_data[x].data_size))
py_byte_size = len(tensor_data[x].data_ptr)
c_byte_size = tensor_data[x].data_size
if c_byte_size != py_byte_size:
print("The python byte size of ", py_byte_size,
" does not match the C++ byte size of ", c_byte_size)
print("size in bytes = ", tensor_data[x].data_size)
print("debugger dtype = ", tensor_data[x].dtype)
print("shape = ", tensor_data[x].shape)
if __name__ == "__main__":
main()

View File

@ -1,33 +0,0 @@
-----------------------------------------------------------
watchpoint_hit for test_1 attributes:
name = Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/Conv2D-op168
slot = 0
condition = 6
watchpoint_id = 1
parameter 0 name = param
parameter 0 disabled = False
parameter 0 value = 0.0
parameter 0 hit = True
parameter 0 actual_value = -0.14013671875
error code = 0
device_id = 0
root_graph_id = 0
-----------------------------------------------------------
watchpoint_hit for test_4 attributes:
name = Default/network-WithLossCell/_backbone-AlexNet/fc3-Dense/Parameter[6]_11/fc3.bias
slot = 0
condition = 18
watchpoint_id = 3
parameter 0 name = abs_mean_update_ratio_gt
parameter 0 disabled = False
parameter 0 value = 0.0
parameter 0 hit = True
parameter 0 actual_value = 0.5243796973599475
parameter 1 name = epsilon
parameter 1 disabled = True
parameter 1 value = 0.0
parameter 1 hit = False
parameter 1 actual_value = 0.0
error code = 0
device_id = 0
root_graph_id = 0

View File

@ -1,109 +0,0 @@
# Copyright 2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""
Watchpoints test script for offline debugger APIs.
"""
import mindspore.offline_debug.dbg_services as d
def main():
debugger_backend = d.DbgServices(
dump_file_path="/opt/nvme2n1/j00455527/dumps/sync_trans_false/032421/alexnet")
_ = debugger_backend.initialize(
net_name="Network Name goes here!", is_sync_mode=True)
# NOTES:
# -> watch_condition=6 is MIN_LT
# -> watch_condition=18 is CHANGE_TOO_LARGE
# test 1: watchpoint set and hit (watch_condition=6)
param1 = d.Parameter(name="param", disabled=False, value=0.0)
_ = debugger_backend.add_watchpoint(watchpoint_id=1, watch_condition=6,
check_node_list={"Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/"
"Conv2D-op168":
{"device_id": [0], "root_graph_id": [0], "is_parameter": False
}}, parameter_list=[param1])
watchpoint_hits_test_1 = debugger_backend.check_watchpoints(iteration=2)
if len(watchpoint_hits_test_1) != 1:
print("ERROR -> test 1: watchpoint set but not hit just once")
print_watchpoint_hits(watchpoint_hits_test_1, 1)
# test 2: watchpoint remove and ensure it's not hit
_ = debugger_backend.remove_watchpoint(watchpoint_id=1)
watchpoint_hits_test_2 = debugger_backend.check_watchpoints(iteration=2)
if watchpoint_hits_test_2:
print("ERROR -> test 2: watchpoint removed but hit")
# test 3: watchpoint set and not hit, then remove
param2 = d.Parameter(name="param", disabled=False, value=-1000.0)
_ = debugger_backend.add_watchpoint(watchpoint_id=2, watch_condition=6,
check_node_list={"Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/"
"Conv2D-op308":
{"device_id": [0], "root_graph_id": [0], "is_parameter": False
}}, parameter_list=[param2])
watchpoint_hits_test_3 = debugger_backend.check_watchpoints(iteration=2)
if watchpoint_hits_test_3:
print("ERROR -> test 3: watchpoint set but not supposed to be hit")
_ = debugger_backend.remove_watchpoint(watchpoint_id=2)
# test 4: weight change watchpoint set and hit
param_abs_mean_update_ratio_gt = d.Parameter(
name="abs_mean_update_ratio_gt", disabled=False, value=0.0)
param_epsilon = d.Parameter(name="epsilon", disabled=True, value=0.0)
_ = debugger_backend.add_watchpoint(watchpoint_id=3, watch_condition=18,
check_node_list={"Default/network-WithLossCell/_backbone-AlexNet/fc3-Dense/"
"Parameter[6]_11/fc3.bias":
{"device_id": [0], "root_graph_id": [0], "is_parameter": True
}}, parameter_list=[param_abs_mean_update_ratio_gt,
param_epsilon])
watchpoint_hits_test_4 = debugger_backend.check_watchpoints(iteration=3)
if len(watchpoint_hits_test_4) != 1:
print("ERROR -> test 4: watchpoint weight change set but not hit just once")
print_watchpoint_hits(watchpoint_hits_test_4, 4)
def print_watchpoint_hits(watchpoint_hits, test_id):
"""Print watchpoint hits."""
for x, _ in enumerate(watchpoint_hits):
print("-----------------------------------------------------------")
print("watchpoint_hit for test_%u attributes:" % test_id)
print("name = ", watchpoint_hits[x].name)
print("slot = ", watchpoint_hits[x].slot)
print("condition = ", watchpoint_hits[x].condition)
print("watchpoint_id = ", watchpoint_hits[x].watchpoint_id)
for p, _ in enumerate(watchpoint_hits[x].parameters):
print("parameter ", p, " name = ",
watchpoint_hits[x].parameters[p].name)
print("parameter ", p, " disabled = ",
watchpoint_hits[x].parameters[p].disabled)
print("parameter ", p, " value = ",
watchpoint_hits[x].parameters[p].value)
print("parameter ", p, " hit = ",
watchpoint_hits[x].parameters[p].hit)
print("parameter ", p, " actual_value = ",
watchpoint_hits[x].parameters[p].actual_value)
print("error code = ", watchpoint_hits[x].error_code)
print("device_id = ", watchpoint_hits[x].device_id)
print("root_graph_id = ", watchpoint_hits[x].root_graph_id)
if __name__ == "__main__":
main()

View File

@ -1,70 +0,0 @@
-----------------------------------------------------------
tensor_info_1 attributes:
node name = Default/network-WithLossCell/_backbone-AlexNet/conv2-Conv2d/conv2.bias
slot = 0
iteration = 2
device_id = None
root_graph_id = 0
is_parameter = True
tensor_data_1 attributes:
data (printed in uint8) = [230 208 10 52 104 34 252 52 4 231 144 52 188 150 64 180 88 236
15 180 254 135 180 51 131 226 147 52 88 202 62 53 2 43 55 53
231 29 87 180 220 249 30 180 157 17 177 180 81 107 140 181 8 95
192 180 89 134 112 180 96 238 90 178 156 196 212 180 206 25 15 181
212 154 6 180 91 211 116 52 191 14 140 51 128 106 124 53 28 158
70 181 182 21 251 50 100 204 157 179 88 202 42 180 7 95 8 53
128 251 238 52 241 133 241 52 111 86 157 179 48 221 148 180 200 7
141 180 236 226 182 51 190 82 158 180 140 108 179 180 195 134 215 179
103 213 39 179 89 168 149 180 42 58 58 180 64 53 62 179 250 126
158 52 38 83 117 52 0 0 136 180 136 133 122 51 110 18 131 179
238 13 94 51 102 136 15 181 134 90 227 180 16 11 117 180 35 74
163 52 105 0 87 181 112 18 131 50 226 233 67 181 217 172 10 52
206 25 217 52 208 213 22 52 146 203 87 180 74 46 207 52 178 191
4 180 100 93 216 52 119 190 171 180 223 2 5 181 128 72 207 179
58 146 11 179 224 79 137 52 143 228 154 180 246 219 215 179 14 79
195 52 126 29 64 52 132 192 42 51 94 220 86 52 94 109 1 181
72 37 117 178 110 197 94 180 160 94 153 179 118 224 80 181 156 17
37 50 120 156 162 53 26 115 135 180 228 20 29 53 145 126 147 52
99 16 48 180 211 188 199 180 52 51 99 180 93 254 227 52 152 126
123 49 6 18 16 181 5 163 130 51 27 158 98 53 134 235 189 52
119 45 9 180 130 115 110 52 158 128 162 52 232 251 197 180 178 46
158 179 57 214 157 52 172 207 161 180 208 0 222 49 242 99 32 53
20 174 135 50 247 117 176 52 194 57 43 180 140 108 135 51 243 65
175 51 187 73 156 51 63 232 217 50 180 234 115 52 194 168 148 52
27 192 183 180 45 178 157 52 125 208 17 53 236 192 65 53 190 193
7 53 254 246 57 53 3 43 199 51 64 164 215 180 220 104 240 51
23 72 24 180 68 173 9 51 72 114 29 53 105 0 57 181 188 150
8 53 229 97 131 53 0 34 189 51 163 146 74 53 31 244 204 51
86 193 220 180 156 51 146 179]
size in bytes = 512
debugger dtype = 11
shape = [128]
-----------------------------------------------------------
tensor_info_2 attributes:
node name = Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/Conv2D-op171
slot = 0
iteration = 2
device_id = None
root_graph_id = 0
is_parameter = False
tensor_data_2 attributes:
data (printed in uint8) = [ 99 26 69 ... 154 218 164]
size in bytes = 2076672
debugger dtype = 10
shape = [32, 192, 13, 13]
-----------------------------------------------------------
tensor_info_3 attributes:
node name = Default/network-WithLossCell/_backbone-AlexNet/ReLUV2-op353
slot = 1
iteration = 2
device_id = None
root_graph_id = 0
is_parameter = False
tensor_data_3 attributes:
data (printed in uint8) = [19 17 27 ... 94 42 90]
size in bytes = 129792
debugger dtype = 6
shape = [32, 12, 13, 13, 2]

View File

@ -1,74 +0,0 @@
# Copyright 2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""
Read tensor test script for offline debugger APIs.
"""
import mindspore.offline_debug.dbg_services as d
import numpy as np
def main():
debugger_backend = d.DbgServices(
dump_file_path="/opt/nvme2n1/j00455527/dumps/sync_trans_true/032421/alexnet")
_ = debugger_backend.initialize(
net_name="Network Name goes here!", is_sync_mode=True)
# parameter
info1 = d.TensorInfo(node_name="Default/network-WithLossCell/_backbone-AlexNet/conv2-Conv2d/conv2.bias",
slot=0, iteration=2, device_id=0, root_graph_id=0, is_parameter=True)
# output tensor with zero slot
info2 = d.TensorInfo(node_name="Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/Conv2D-op171",
slot=0, iteration=2, device_id=0, root_graph_id=0, is_parameter=False)
# output tensor with non-zero slot
info3 = d.TensorInfo(node_name="Default/network-WithLossCell/_backbone-AlexNet/ReLUV2-op353",
slot=1, iteration=2, device_id=0, root_graph_id=0, is_parameter=False)
tensor_info = [info1, info2, info3]
tensor_data = debugger_backend.read_tensors(tensor_info)
print_read_tensors(tensor_info, tensor_data)
def print_read_tensors(tensor_info, tensor_data):
"""Print read tensors."""
for x, _ in enumerate(tensor_info):
print("-----------------------------------------------------------")
print("tensor_info_" + str(x+1) + " attributes:")
print("node name = ", tensor_info[x].node_name)
print("slot = ", tensor_info[x].slot)
print("iteration = ", tensor_info[x].iteration)
print("device_id = ", tensor_info[x].device_id)
print("root_graph_id = ", tensor_info[x].root_graph_id)
print("is_parameter = ", tensor_info[x].is_parameter)
print()
print("tensor_data_" + str(x+1) + " attributes:")
print("data (printed in uint8) = ", np.frombuffer(
tensor_data[x].data_ptr, np.uint8, tensor_data[x].data_size))
py_byte_size = len(tensor_data[x].data_ptr)
c_byte_size = tensor_data[x].data_size
if c_byte_size != py_byte_size:
print("The python byte size of ", py_byte_size,
" does not match the C++ byte size of ", c_byte_size)
print("size in bytes = ", tensor_data[x].data_size)
print("debugger dtype = ", tensor_data[x].dtype)
print("shape = ", tensor_data[x].shape)
if __name__ == "__main__":
main()

View File

@ -1,865 +0,0 @@
# Copyright 2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""
The module DbgServices provides offline debugger APIs.
"""
import mindspore._mindspore_offline_debug as cds
from mi_validators import check_init, check_initialize, check_add_watchpoint, check_remove_watchpoint, check_check_watchpoints, check_read_tensors, check_initialize_done, check_tensor_info_init, check_tensor_data_init, check_watchpoint_hit_init, check_parameter_init
def get_version():
"""
Function to return offline Debug Services version.
Returns:
version (str): dbgServices version.
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> version = dbg_services.get_version()
"""
return cds.DbgServices(False).GetVersion()
class DbgLogger:
"""
Offline Debug Services Logger
Args:
verbose (bool): whether to print logs.
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> version = dbg_services.DbgLogger(verbose=False)
"""
def __init__(self, verbose):
self.verbose = verbose
def __call__(self, *logs):
if self.verbose:
print(logs)
log = DbgLogger(False)
class DbgServices():
"""
Offline Debug Services class.
Args:
dump_file_path (str): directory where the dump files are saved.
verbose (bool): whether to print logs (default: False)..
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> d = dbg_services.DbgServices(dump_file_path="dump_file_path",
>>> verbose=True)
"""
@check_init
def __init__(self, dump_file_path, verbose=False):
log.verbose = verbose
log("in Python __init__, file path is ", dump_file_path)
self.dump_file_path = dump_file_path
self.dbg_instance = cds.DbgServices(verbose)
self.version = self.dbg_instance.GetVersion()
self.verbose = verbose
self.initialized = False
@check_initialize
def initialize(self, net_name, is_sync_mode=True):
"""
Initialize Debug Service.
Args:
net_name (str): Network name.
is_sync_mode (bool): Whether to process synchronous or asynchronous dump files mode
(default: True (synchronous)).
Returns:
Initialized Debug Service instance.
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> d = dbg_services.DbgServices(dump_file_path="dump_file_path",
>>> verbose=True)
>>> d_init = d.initialize(net_name="network name", is_sync_mode=True)
"""
log("in Python Initialize dump_file_path ", self.dump_file_path)
self.initialized = True
return self.dbg_instance.Initialize(net_name, self.dump_file_path, is_sync_mode)
@check_initialize_done
@check_add_watchpoint
def add_watchpoint(self, watchpoint_id, watch_condition, check_node_list, parameter_list):
"""
Adding watchpoint to Debug Service instance.
Args:
watchpoint_id (int): Watchpoint id
watch_condition (int): A representation of the condition to be checked.
check_node_list (dict): Dictionary of node names (str) as key,
mapping to device_id (list of ints), root_graph_id (list of ints) and is_parameter
(bool).
parameter_list (list): List of parameters in watchpoint. Parameters should be instances of Parameter class.
Each parameter describes the value to be checked in watchpoint.
Returns:
Debug Service instance with added watchpoint.
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> d = dbg_services.DbgServices(dump_file_path="dump_file_path",
>>> verbose=True)
>>> d_init = d.initialize(is_sync_mode=True)
>>> d_wp = d_init.add_watchpoint(watchpoint_id=1,
>>> watch_condition=6,
>>> check_node_list={"conv2.bias" : {"device_id": [0],
root_graph_id: [0], "is_parameter": True}},
>>> parameter_list=[dbg_services.Parameter(name="param",
>>> disabled=False,
>>> value=0.0,
>>> hit=False,
>>> actual_value=0.0)])
"""
print("Amir: ", check_node_list)
log("in Python AddWatchpoint")
parameter_list_inst = []
for elem in parameter_list:
parameter_list_inst.append(elem.instance)
return self.dbg_instance.AddWatchpoint(watchpoint_id, watch_condition, check_node_list, parameter_list_inst)
@check_initialize_done
@check_remove_watchpoint
def remove_watchpoint(self, watchpoint_id):
"""
Removing watchpoint from Debug Service instance.
Args:
watchpoint_id (int): Watchpoint id
Returns:
Debug Service instance with removed watchpoint.
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> d = dbg_services.DbgServices(dump_file_path="dump_file_path",
>>> verbose=True)
>>> d_init = d.initialize(is_sync_mode=True)
>>> d_wp = d_init.add_watchpoint(watchpoint_id=1,
>>> watch_condition=6,
>>> check_node_list={"conv2.bias" : {"device_id": [5],
root_graph_id: [0], "is_parameter": True}},
>>> parameter_list=[dbg_services.Parameter(name="param",
>>> disabled=False,
>>> value=0.0,
>>> hit=False,
>>> actual_value=0.0)])
>>> d_wp = d_wp.remove_watchpoint(watchpoint_id=1)
"""
log("in Python Remove Watchpoint id ", watchpoint_id)
return self.dbg_instance.RemoveWatchpoint(watchpoint_id)
@check_initialize_done
@check_check_watchpoints
def check_watchpoints(self, iteration):
"""
Checking watchpoint at given iteration.
Args:
iteration (int): Watchpoint check iteration.
Returns:
Watchpoint hit list.
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> d = dbg_services.DbgServices(dump_file_path="dump_file_path",
>>> verbose=True)
>>> d_init = d.initialize(is_sync_mode=True)
>>> d_wp = d_init.add_watchpoint(id=1,
>>> watch_condition=6,
>>> check_node_list={"conv2.bias" : {"device_id": [5],
root_graph_id: [0], "is_parameter": True}},
>>> parameter_list=[dbg_services.Parameter(name="param",
>>> disabled=False,
>>> value=0.0,
>>> hit=False,
>>> actual_value=0.0)])
>>> watchpoints = d_wp.check_watchpoints(iteration=8)
"""
log("in Python CheckWatchpoints iteration ", iteration)
watchpoint_list = self.dbg_instance.CheckWatchpoints(iteration)
watchpoint_hit_list = []
for watchpoint in watchpoint_list:
name = watchpoint.get_name()
slot = watchpoint.get_slot()
condition = watchpoint.get_condition()
watchpoint_id = watchpoint.get_watchpoint_id()
parameters = watchpoint.get_parameters()
error_code = watchpoint.get_error_code()
device_id = watchpoint.get_device_id()
root_graph_id = watchpoint.get_root_graph_id()
param_list = []
for param in parameters:
p_name = param.get_name()
disabled = param.get_disabled()
value = param.get_value()
hit = param.get_hit()
actual_value = param.get_actual_value()
param_list.append(Parameter(p_name, disabled, value, hit, actual_value))
watchpoint_hit_list.append(WatchpointHit(name, slot, condition, watchpoint_id,
param_list, error_code, device_id, root_graph_id))
return watchpoint_hit_list
@check_initialize_done
@check_read_tensors
def read_tensors(self, info):
"""
Returning tensor data object describing the tensor requested tensor.
Args:
info (list): List of TensorInfo objects.
Returns:
TensorData list (list).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> d = dbg_services.DbgServices(dump_file_path="dump_file_path",
>>> verbose=True)
>>> d_init = d.initialize(is_sync_mode=True)
>>> tensor_data_list = d_init.read_tensors([dbg_services.TensorInfo(node_name="conv2.bias",
>>> slot=0,
>>> iteration=8,
>>> device_id=5,
>>> root_graph_id=0,
>>> is_parameter=True)])
"""
log("in Python ReadTensors info ", info)
info_list_inst = []
for elem in info:
log("in Python ReadTensors info ", info)
info_list_inst.append(elem.instance)
tensor_data_list = self.dbg_instance.ReadTensors(info_list_inst)
tensor_data_list_ret = []
for elem in tensor_data_list:
if elem.get_data_size() == 0:
tensor_data = TensorData(b'', elem.get_data_size(), elem.get_dtype(), elem.get_shape())
else:
tensor_data = TensorData(elem.get_data_ptr(), elem.get_data_size(), elem.get_dtype(), elem.get_shape())
tensor_data_list_ret.append(tensor_data)
return tensor_data_list_ret
class TensorInfo():
"""
Tensor Information class.
Args:
node_name (str): Fully qualified name of the desired node.
slot (int): The particular output for the requested node.
iteration (int): The desired itraretion to gather tensor information.
device_id (int): The desired device id to gather tensor information.
is_parameter (bool): Whether node is a parameter (input, constant, bias, parameter).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> tensor_info = dbg_services.TensorInfo(node_name="conv2.bias",
>>> slot=0,
>>> iteration=8,
>>> device_id=5,
>>> root_graph_id=0,
>>> is_parameter=True)
"""
@check_tensor_info_init
def __init__(self, node_name, slot, iteration, device_id, root_graph_id, is_parameter):
self.instance = cds.tensor_info(node_name, slot, iteration, device_id, root_graph_id, is_parameter)
@property
def node_name(self):
"""
Function to receive TensorInfo node_name.
Returns:
node_name of TensorInfo instance (str).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> tensor_info = dbg_services.TensorInfo(node_name="conv2.bias",
>>> slot=0,
>>> iteration=8,
>>> device_id=5,
>>> root_graph_id=0,
>>> is_parameter=True)
>>> name = tensor_info.node_name
"""
return self.instance.get_node_name()
@property
def slot(self):
"""
Function to receive TensorInfo slot.
Returns:
slot of TensorInfo instance (int).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> tensor_info = dbg_services.TensorInfo(node_name="conv2.bias",
>>> slot=0,
>>> iteration=8,
>>> device_id=5,
>>> root_graph_id=0,
>>> is_parameter=True)
>>> slot = tensor_info.slot
"""
return self.instance.get_slot()
@property
def iteration(self):
"""
Function to receive TensorInfo iteration.
Returns:
iteration of TensorInfo instance (int).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> tensor_info = dbg_services.TensorInfo(node_name="conv2.bias",
>>> slot=0,
>>> iteration=8,
>>> device_id=5,
>>> root_graph_id=0,
>>> is_parameter=True)
>>> iteration = tensor_info.iteration
"""
return self.instance.get_iteration()
@property
def device_id(self):
"""
Function to receive TensorInfo device_id.
Returns:
device_id of TensorInfo instance (int).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> tensor_info = dbg_services.TensorInfo(node_name="conv2.bias",
>>> slot=0,
>>> iteration=8,
>>> device_id=5,
>>> root_graph_id=0,
>>> is_parameter=True)
>>> device_id = tensor_info.device_id
"""
@property
def root_graph_id(self):
"""
Function to receive TensorInfo root_graph_id.
Returns:
root_graph_id of TensorInfo instance (int).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> tensor_info = dbg_services.TensorInfo(node_name="conv2.bias",
>>> slot=0,
>>> iteration=8,
>>> device_id=5,
>>> root_graph_id=0,
>>> is_parameter=True)
>>> device_id = tensor_info.root_graph_id
"""
return self.instance.get_root_graph_id()
@property
def is_parameter(self):
"""
Function to receive TensorInfo is_parameter.
Returns:
is_parameter of TensorInfo instance (bool).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> tensor_info = dbg_services.TensorInfo(node_name="conv2.bias",
>>> slot=0,
>>> iteration=8,
>>> device_id=5,
>>> root_graph_id=0,
>>> is_parameter=True)
>>> is_parameter = tensor_info.is_parameter
"""
return self.instance.get_is_parameter()
class TensorData():
"""
TensorData class.
Args:
data_ptr (byte): Data pointer.
data_size (int): Size of data in bytes.
dtype (int): An encoding representing the type of TensorData.
shape (list): Shape of tensor.
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> tensor_data = dbg_services.TensorData(data_ptr=b'\xba\xd0\xba\xd0',
>>> data_size=4,
>>> dtype=0,
>>> shape=[2, 2])
"""
@check_tensor_data_init
def __init__(self, data_ptr, data_size, dtype, shape):
self.instance = cds.tensor_data(data_ptr, data_size, dtype, shape)
@property
def data_ptr(self):
"""
Function to receive TensorData data_ptr.
Returns:
data_ptr of TensorData instance (byte).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> tensor_data = dbg_services.TensorData(data_ptr=b'\xba\xd0\xba\xd0',
>>> data_size=4,
>>> dtype=0,
>>> shape=[2, 2])
>>> data_ptr = tensor_data.data_ptr
"""
return self.instance.get_data_ptr()
@property
def data_size(self):
"""
Function to receive TensorData data_size.
Returns:
data_size of TensorData instance (int).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> tensor_data = dbg_services.TensorData(data_ptr=b'\xba\xd0\xba\xd0',
>>> data_size=4,
>>> dtype=0,
>>> shape=[2, 2])
>>> data_size = tensor_data.data_size
"""
return self.instance.get_data_size()
@property
def dtype(self):
"""
Function to receive TensorData dtype.
Returns:
dtype of TensorData instance (int).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> tensor_data = dbg_services.TensorData(data_ptr=b'\xba\xd0\xba\xd0',
>>> data_size=4,
>>> dtype=0,
>>> shape=[2, 2])
>>> dtype = tensor_data.dtype
"""
return self.instance.get_dtype()
@property
def shape(self):
"""
Function to receive TensorData shape.
Returns:
shape of TensorData instance (list).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> tensor_data = dbg_services.TensorData(data_ptr=b'\xba\xd0\xba\xd0',
>>> data_size=4,
>>> dtype=0,
>>> shape=[2, 2])
>>> shape = tensor_data.shape
"""
return self.instance.get_shape()
class WatchpointHit():
"""
WatchpointHit class.
Args:
name (str): Name of WatchpointHit instance.
slot (int): The numerical label of an output.
condition (int): A representation of the condition to be checked.
watchpoint_id (int): Watchpoint id.
parameters (list): A list of all parameters for WatchpointHit instance.
Parameters have to be instances of Parameter class.
error_code (int): An explanation of certain scenarios where watchpoint could not be checked.
device_id (int): Device id where the watchpoint is hit.
root_graph_id (int): Root graph id where the watchpoint is hit.
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> watchpoint_hit = dbg_services.WatchpointHit(name="hit1",
>>> slot=1,
>>> condition=2,
>>> watchpoint_id=3,
>>> parameters=[param1, param2],
>>> error_code=0,
>>> device_id=1,
>>> root_graph_id=1)
"""
@check_watchpoint_hit_init
def __init__(self, name, slot, condition, watchpoint_id, parameters, error_code, device_id, root_graph_id):
parameter_list_inst = []
for elem in parameters:
parameter_list_inst.append(elem.instance)
self.instance = cds.watchpoint_hit(name, slot, condition, watchpoint_id,
parameter_list_inst, error_code, device_id, root_graph_id)
@property
def name(self):
"""
Function to receive WatchpointHit name.
Returns:
name of WatchpointHit instance (str).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> watchpoint_hit = dbg_services.WatchpointHit(name="hit1",
>>> slot=1,
>>> condition=2,
>>> watchpoint_id=3,
>>> parameters=[param1, param2],
>>> error_code=0,
>>> device_id=1,
>>> root_graph_id=1)
>>> name = watchpoint_hit.name
"""
return self.instance.get_name()
@property
def slot(self):
"""
Function to receive WatchpointHit slot.
Returns:
slot of WatchpointHit instance (int).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> watchpoint_hit = dbg_services.WatchpointHit(name="hit1",
>>> slot=1,
>>> condition=2,
>>> watchpoint_id=3,
>>> parameters=[param1, param2],
>>> error_code=0,
>>> device_id=1,
>>> root_graph_id=1)
>>> slot = watchpoint_hit.slot
"""
return self.instance.get_slot()
@property
def condition(self):
"""
Function to receive WatchpointHit condition.
Returns:
condition of WatchpointHit instance (int).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> watchpoint_hit = dbg_services.WatchpointHit(name="hit1",
>>> slot=1,
>>> condition=2,
>>> watchpoint_id=3,
>>> parameters=[param1, param2],
>>> error_code=0,
>>> device_id=1,
>>> root_graph_id=1)
>>> condition = watchpoint_hit.condition
"""
return self.instance.get_condition()
@property
def watchpoint_id(self):
"""
Function to receive WatchpointHit watchpoint_id.
Returns:
watchpoint_id of WatchpointHit instance (int).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> watchpoint_hit = dbg_services.WatchpointHit(name="hit1",
>>> slot=1,
>>> condition=2,
>>> watchpoint_id=3,
>>> parameters=[param1, param2],
>>> error_code=0,
>>> device_id=1,
>>> root_graph_id=1)
>>> watchpoint_id = watchpoint_hit.watchpoint_id
"""
return self.instance.get_watchpoint_id()
@property
def parameters(self):
"""
Function to receive WatchpointHit parameters.
Returns:
List of parameters of WatchpointHit instance (list).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> watchpoint_hit = dbg_services.WatchpointHit(name="hit1",
>>> slot=1,
>>> condition=2,
>>> watchpoint_id=3,
>>> parameters=[param1, param2],
>>> error_code=0,
>>> device_id=1,
>>> root_graph_id=1)
>>> parameters = watchpoint_hit.parameters
"""
params = self.instance.get_parameters()
param_list = []
for elem in params:
tmp = Parameter(elem.get_name(),
elem.get_disabled(),
elem.get_value(),
elem.get_hit(),
elem.get_actual_value())
param_list.append(tmp)
return param_list
@property
def error_code(self):
"""
Function to receive WatchpointHit error_code.
Returns:
error_code of WatchpointHit instance (int).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> watchpoint_hit = dbg_services.WatchpointHit(name="hit1",
>>> slot=1,
>>> condition=2,
>>> watchpoint_id=3,
>>> parameters=[param1, param2],
>>> error_code=0,
>>> device_id=1,
>>> root_graph_id=1)
>>> error_code = watchpoint_hit.error_code
"""
return self.instance.get_error_code()
@property
def device_id(self):
"""
Function to receive WatchpointHit device_id.
Returns:
device_id of WatchpointHit instance (int).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> watchpoint_hit = dbg_services.WatchpointHit(name="hit1",
>>> slot=1,
>>> condition=2,
>>> watchpoint_id=3,
>>> parameters=[param1, param2],
>>> error_code=0,
>>> device_id=1,
>>> root_graph_id=1)
>>> device_id = watchpoint_hit.device_id
"""
return self.instance.get_device_id()
@property
def root_graph_id(self):
"""
Function to receive WatchpointHit root_graph_id.
Returns:
root_graph_id of WatchpointHit instance (int).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> watchpoint_hit = dbg_services.WatchpointHit(name="hit1",
>>> slot=1,
>>> condition=2,
>>> watchpoint_id=3,
>>> parameters=[param1, param2],
>>> error_code=0,
>>> device_id=1,
>>> root_graph_id=1)
>>> root_graph_id = watchpoint_hit.root_graph_id
"""
return self.instance.get_root_graph_id()
class Parameter():
"""
Parameter class.
Args:
name (str): Name of the parameter.
disabled (bool): Whether parameter is used in backend.
value (float): Threshold value of the parameter.
hit (bool): Whether this parameter triggered watchpoint (default is False).
actual_value (float): Actual value of the parameter (default is 0.0).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> parameter = dbg_services.Parameter(name="param",
>>> disabled=False,
>>> value=0.0,
>>> hit=False,
>>> actual_value=0.0)
"""
@check_parameter_init
def __init__(self, name, disabled, value, hit=False, actual_value=0.0):
self.instance = cds.parameter(name, disabled, value, hit, actual_value)
@property
def name(self):
"""
Function to receive Parameter name.
Returns:
name of Parameter instance (str).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> parameter = dbg_services.Parameter(name="param",
>>> disabled=False,
>>> value=0.0,
>>> hit=False,
>>> name = watchpoint_hit.name
"""
return self.instance.get_name()
@property
def disabled(self):
"""
Function to receive Parameter disabled value.
Returns:
disabled of Parameter instance (bool).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> parameter = dbg_services.Parameter(name="param",
>>> disabled=False,
>>> value=0.0,
>>> hit=False,
>>> disabled = watchpoint_hit.disabled
"""
return self.instance.get_disabled()
@property
def value(self):
"""
Function to receive Parameter value.
Returns:
value of Parameter instance (float).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> parameter = dbg_services.Parameter(name="param",
>>> disabled=False,
>>> value=0.0,
>>> hit=False,
>>> value = watchpoint_hit.value
"""
return self.instance.get_value()
@property
def hit(self):
"""
Function to receive Parameter hit value.
Returns:
hit of Parameter instance (bool).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> parameter = dbg_services.Parameter(name="param",
>>> disabled=False,
>>> value=0.0,
>>> hit=False,
>>> hit = watchpoint_hit.hit
"""
return self.instance.get_hit()
@property
def actual_value(self):
"""
Function to receive Parameter actual_value value.
Returns:
actual_value of Parameter instance (float).
Examples:
>>> from mindspore.ccsrc.debug.debugger.offline_debug import dbg_services
>>> parameter = dbg_services.Parameter(name="param",
>>> disabled=False,
>>> value=0.0,
>>> hit=False,
>>> actual_value = watchpoint_hit.actual_value
"""
return self.instance.get_actual_value()

View File

@ -1,24 +0,0 @@
python sync_trans_false_read_tensors.py > sync_trans_false_read_tensors.actual
diff sync_trans_false_read_tensors.actual sync_trans_false_read_tensors.expected
if [ $? -eq 0 ]; then
echo sync_trans_false_read_tensors PASSED
else
echo sync_trans_false_read_tensors FAILED
fi
python sync_trans_true_read_tensors.py > sync_trans_true_read_tensors.actual
diff sync_trans_true_read_tensors.actual sync_trans_true_read_tensors.expected
if [ $? -eq 0 ]; then
echo sync_trans_true_read_tensors PASSED
else
echo sync_trans_true_read_tensors FAILED
fi
python sync_trans_false_watchpoints.py > sync_trans_false_watchpoints.actual
diff sync_trans_false_watchpoints.actual sync_trans_false_watchpoints.expected
if [ $? -eq 0 ]; then
echo sync_trans_false_watchpoints PASSED
else
echo sync_trans_false_watchpoints FAILED
fi

View File

@ -1,70 +0,0 @@
-----------------------------------------------------------
tensor_info_1 attributes:
node name = Default/network-WithLossCell/_backbone-AlexNet/conv2-Conv2d/conv2.bias
slot = 0
iteration = 2
device_id = None
root_graph_id = 0
is_parameter = True
tensor_data_1 attributes:
data (printed in uint8) = [ 0 0 0 0 195 127 0 0 176 202 195 248 194 127 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 58 196 248
194 127 0 0 17 0 0 0 0 0 0 0 160 76 6 140 195 127
0 0 69 0 0 0 0 0 0 0 1 0 0 0 195 127 0 0
64 195 195 248 194 127 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 88 1 196 248 194 127 0 0 18 0 0 0
0 0 0 0 160 47 6 140 195 127 0 0 69 0 0 0 0 0
0 0 1 0 0 0 195 127 0 0 176 203 195 248 194 127 0 0
176 204 195 248 194 127 0 0 0 0 0 0 0 0 0 0 216 241
195 248 194 127 0 0 19 0 0 0 0 0 0 0 96 39 6 140
195 127 0 0 69 0 0 0 0 0 0 0 1 0 0 0 195 127
0 0 112 52 196 248 194 127 0 0 176 52 196 248 194 127 0 0
0 0 0 0 0 0 0 0 88 250 195 248 194 127 0 0 20 0
0 0 0 0 0 0 128 130 5 140 195 127 0 0 69 0 0 0
0 0 0 0 0 0 0 0 195 127 0 0 208 136 195 248 194 127
0 0 176 202 195 248 194 127 0 0 48 52 196 248 194 127 0 0
184 247 195 248 194 127 0 0 21 0 0 0 0 0 0 0 176 213
4 140 195 127 0 0 69 0 0 0 0 0 0 0 0 0 0 0
195 127 0 0 48 52 196 248 194 127 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 8 249 195 248 194 127 0 0
22 0 0 0 0 0 0 0 16 46 4 140 195 127 0 0 69 0
0 0 0 0 0 0 1 0 0 0 195 127 0 0 64 137 195 248
194 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 88 12 196 248 194 127 0 0 23 0 0 0 0 0 0 0
32 137 3 140 195 127 0 0 85 0 0 0 0 0 0 0 0 0
0 0 195 127 0 0 176 202 195 248 194 127 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 104 246 195 248 194 127
0 0 24 0 0 0 0 0 0 0 48 104 15 140 195 127 0 0
32 104 15 140 195 127 0 0]
size in bytes = 512
debugger dtype = 11
shape = [128]
-----------------------------------------------------------
tensor_info_2 attributes:
node name = Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/Conv2D-op308
slot = 0
iteration = 2
device_id = None
root_graph_id = 0
is_parameter = False
tensor_data_2 attributes:
data (printed in uint8) = [ 0 169 0 ... 152 242 63]
size in bytes = 4153344
debugger dtype = 11
shape = [32, 192, 13, 13]
-----------------------------------------------------------
tensor_info_3 attributes:
node name = Default/network-WithLossCell/_backbone-AlexNet/ReLUV2-op300
slot = 1
iteration = 2
device_id = None
root_graph_id = 0
is_parameter = False
tensor_data_3 attributes:
data (printed in uint8) = [ 0 169 0 ... 217 4 52]
size in bytes = 831744
debugger dtype = 8
shape = [207936]

View File

@ -1,74 +0,0 @@
# Copyright 2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""
Read tensor test script for offline debugger APIs.
"""
import mindspore.offline_debug.dbg_services as d
import numpy as np
def main():
debugger_backend = d.DbgServices(
dump_file_path="/home/jtzanaka/dumps/sync_trans_false/032421/alexnet")
_ = debugger_backend.initialize(
net_name="Network Name goes here!", is_sync_mode=True)
# parameter
info1 = d.TensorInfo(node_name="Default/network-WithLossCell/_backbone-AlexNet/conv2-Conv2d/conv2.bias",
slot=0, iteration=2, device_id=0, root_graph_id=0, is_parameter=True)
# output tensor with zero slot
info2 = d.TensorInfo(node_name="Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/Conv2D-op308",
slot=0, iteration=2, device_id=0, root_graph_id=0, is_parameter=False)
# output tensor with non-zero slot
info3 = d.TensorInfo(node_name="Default/network-WithLossCell/_backbone-AlexNet/ReLUV2-op300",
slot=1, iteration=2, device_id=0, root_graph_id=0, is_parameter=False)
tensor_info = [info1, info2, info3]
tensor_data = debugger_backend.read_tensors(tensor_info)
print_read_tensors(tensor_info, tensor_data)
def print_read_tensors(tensor_info, tensor_data):
"""Print read tensors."""
for x, _ in enumerate(tensor_info):
print("-----------------------------------------------------------")
print("tensor_info_" + str(x+1) + " attributes:")
print("node name = ", tensor_info[x].node_name)
print("slot = ", tensor_info[x].slot)
print("iteration = ", tensor_info[x].iteration)
print("device_id = ", tensor_info[x].device_id)
print("root_graph_id = ", tensor_info[x].root_graph_id)
print("is_parameter = ", tensor_info[x].is_parameter)
print()
print("tensor_data_" + str(x+1) + " attributes:")
print("data (printed in uint8) = ", np.frombuffer(
tensor_data[x].data_ptr, np.uint8, tensor_data[x].data_size))
py_byte_size = len(tensor_data[x].data_ptr)
c_byte_size = tensor_data[x].data_size
if c_byte_size != py_byte_size:
print("The python byte size of ", py_byte_size,
" does not match the C++ byte size of ", c_byte_size)
print("size in bytes = ", tensor_data[x].data_size)
print("debugger dtype = ", tensor_data[x].dtype)
print("shape = ", tensor_data[x].shape)
if __name__ == "__main__":
main()

View File

@ -1,33 +0,0 @@
-----------------------------------------------------------
watchpoint_hit for test_1 attributes:
name = Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/Conv2D-op308
slot = 0
condition = 6
watchpoint_id = 1
parameter 0 name = param
parameter 0 disabled = False
parameter 0 value = 0.0
parameter 0 hit = True
parameter 0 actual_value = -2.429065704345703
error code = 0
device_id = 0
root_graph_id = 0
-----------------------------------------------------------
watchpoint_hit for test_4 attributes:
name = Default/network-WithLossCell/_backbone-AlexNet/fc3-Dense/Parameter[6]_11/fc3.bias
slot = 0
condition = 18
watchpoint_id = 3
parameter 0 name = abs_mean_update_ratio_gt
parameter 0 disabled = False
parameter 0 value = 0.0
parameter 0 hit = True
parameter 0 actual_value = 1.793662034335766e-35
parameter 1 name = epsilon
parameter 1 disabled = True
parameter 1 value = 0.0
parameter 1 hit = False
parameter 1 actual_value = 0.0
error code = 0
device_id = 0
root_graph_id = 0

View File

@ -1,109 +0,0 @@
# Copyright 2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""
Watchpoints test script for offline debugger APIs.
"""
import mindspore.offline_debug.dbg_services as d
def main():
debugger_backend = d.DbgServices(
dump_file_path="/home/jtzanaka/dumps/sync_trans_false/032421/alexnet")
_ = debugger_backend.initialize(
net_name="Network Name goes here!", is_sync_mode=True)
# NOTES:
# -> watch_condition=6 is MIN_LT
# -> watch_condition=18 is CHANGE_TOO_LARGE
# test 1: watchpoint set and hit (watch_condition=6)
param1 = d.Parameter(name="param", disabled=False, value=0.0)
_ = debugger_backend.add_watchpoint(watchpoint_id=1, watch_condition=6,
check_node_list={"Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/"
"Conv2D-op308":
{"device_id": [0], "root_graph_id": [0], "is_parameter": False
}}, parameter_list=[param1])
watchpoint_hits_test_1 = debugger_backend.check_watchpoints(iteration=2)
if len(watchpoint_hits_test_1) != 1:
print("ERROR -> test 1: watchpoint set but not hit just once")
print_watchpoint_hits(watchpoint_hits_test_1, 1)
# test 2: watchpoint remove and ensure it's not hit
_ = debugger_backend.remove_watchpoint(watchpoint_id=1)
watchpoint_hits_test_2 = debugger_backend.check_watchpoints(iteration=2)
if watchpoint_hits_test_2:
print("ERROR -> test 2: watchpoint removed but hit")
# test 3: watchpoint set and not hit, then remove
param2 = d.Parameter(name="param", disabled=False, value=-1000.0)
_ = debugger_backend.add_watchpoint(watchpoint_id=2, watch_condition=6,
check_node_list={"Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/"
"Conv2D-op308":
{"device_id": [0], "root_graph_id": [0], "is_parameter": False
}}, parameter_list=[param2])
watchpoint_hits_test_3 = debugger_backend.check_watchpoints(iteration=2)
if watchpoint_hits_test_3:
print("ERROR -> test 3: watchpoint set but not supposed to be hit")
_ = debugger_backend.remove_watchpoint(watchpoint_id=2)
# test 4: weight change watchpoint set and hit
param_abs_mean_update_ratio_gt = d.Parameter(
name="abs_mean_update_ratio_gt", disabled=False, value=0.0)
param_epsilon = d.Parameter(name="epsilon", disabled=True, value=0.0)
_ = debugger_backend.add_watchpoint(watchpoint_id=3, watch_condition=18,
check_node_list={"Default/network-WithLossCell/_backbone-AlexNet/fc3-Dense/"
"Parameter[6]_11/fc3.bias":
{"device_id": [0], "root_graph_id": [0], "is_parameter": True
}}, parameter_list=[param_abs_mean_update_ratio_gt,
param_epsilon])
watchpoint_hits_test_4 = debugger_backend.check_watchpoints(iteration=3)
if len(watchpoint_hits_test_4) != 1:
print("ERROR -> test 4: watchpoint weight change set but not hit just once")
print_watchpoint_hits(watchpoint_hits_test_4, 4)
def print_watchpoint_hits(watchpoint_hits, test_id):
"""Print watchpoint hits."""
for x, _ in enumerate(watchpoint_hits):
print("-----------------------------------------------------------")
print("watchpoint_hit for test_%u attributes:" % test_id)
print("name = ", watchpoint_hits[x].name)
print("slot = ", watchpoint_hits[x].slot)
print("condition = ", watchpoint_hits[x].condition)
print("watchpoint_id = ", watchpoint_hits[x].watchpoint_id)
for p, _ in enumerate(watchpoint_hits[x].parameters):
print("parameter ", p, " name = ",
watchpoint_hits[x].parameters[p].name)
print("parameter ", p, " disabled = ",
watchpoint_hits[x].parameters[p].disabled)
print("parameter ", p, " value = ",
watchpoint_hits[x].parameters[p].value)
print("parameter ", p, " hit = ",
watchpoint_hits[x].parameters[p].hit)
print("parameter ", p, " actual_value = ",
watchpoint_hits[x].parameters[p].actual_value)
print("error code = ", watchpoint_hits[x].error_code)
print("device_id = ", watchpoint_hits[x].device_id)
print("root_graph_id = ", watchpoint_hits[x].root_graph_id)
if __name__ == "__main__":
main()

View File

@ -1,70 +0,0 @@
-----------------------------------------------------------
tensor_info_1 attributes:
node name = Default/network-WithLossCell/_backbone-AlexNet/conv2-Conv2d/conv2.bias
slot = 0
iteration = 2
device_id = None
root_graph_id = 0
is_parameter = True
tensor_data_1 attributes:
data (printed in uint8) = [ 1 0 0 0 195 127 0 0 80 58 118 65 195 127 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 40 186 117 65
195 127 0 0 5 0 0 0 0 0 0 0 160 76 6 204 195 127
0 0 69 0 0 0 0 0 0 0 1 0 0 0 195 127 0 0
48 135 117 65 195 127 0 0 16 58 118 65 195 127 0 0 144 58
118 65 195 127 0 0 168 186 117 65 195 127 0 0 6 0 0 0
0 0 0 0 160 47 6 204 195 127 0 0 69 0 0 0 0 0
0 0 1 0 0 0 195 127 0 0 80 58 118 65 195 127 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 184 249
117 65 195 127 0 0 7 0 0 0 0 0 0 0 96 39 6 204
195 127 0 0 69 0 0 0 0 0 0 0 1 0 0 0 195 127
0 0 224 218 117 65 195 127 0 0 0 0 0 0 0 0 0 0
224 219 117 65 195 127 0 0 200 17 118 65 195 127 0 0 8 0
0 0 0 0 0 0 128 130 5 204 195 127 0 0 69 0 0 0
0 0 0 0 1 0 0 0 195 127 0 0 120 233 255 59 196 127
0 0 224 217 117 65 195 127 0 0 224 214 117 65 195 127 0 0
120 250 117 65 195 127 0 0 9 0 0 0 0 0 0 0 176 213
4 204 195 127 0 0 69 0 0 0 0 0 0 0 1 0 0 0
195 127 0 0 240 66 118 65 195 127 0 0 160 218 117 65 195 127
0 0 224 215 117 65 195 127 0 0 40 9 118 65 195 127 0 0
10 0 0 0 0 0 0 0 16 46 4 204 195 127 0 0 69 0
0 0 0 0 0 0 1 0 0 0 195 127 0 0 208 59 118 65
195 127 0 0 0 0 0 0 0 0 0 0 96 218 117 65 195 127
0 0 56 251 117 65 195 127 0 0 11 0 0 0 0 0 0 0
32 137 3 204 195 127 0 0 85 0 0 0 0 0 0 0 1 0
0 0 195 127 0 0 224 214 117 65 195 127 0 0 144 59 118 65
195 127 0 0 160 214 117 65 195 127 0 0 136 62 118 65 195 127
0 0 12 0 0 0 0 0 0 0 48 104 15 204 195 127 0 0
32 104 15 204 195 127 0 0]
size in bytes = 512
debugger dtype = 11
shape = [128]
-----------------------------------------------------------
tensor_info_2 attributes:
node name = Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/Conv2D-op308
slot = 0
iteration = 2
device_id = None
root_graph_id = 0
is_parameter = False
tensor_data_2 attributes:
data (printed in uint8) = [206 239 74 ... 53 201 62]
size in bytes = 4153344
debugger dtype = 11
shape = [32, 192, 13, 13]
-----------------------------------------------------------
tensor_info_3 attributes:
node name = Default/network-WithLossCell/_backbone-AlexNet/ReLUV2-op300
slot = 1
iteration = 2
device_id = None
root_graph_id = 0
is_parameter = False
tensor_data_3 attributes:
data (printed in uint8) = [206 239 74 ... 16 239 51]
size in bytes = 831744
debugger dtype = 8
shape = [207936]

View File

@ -1,74 +0,0 @@
# Copyright 2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""
Read tensor test script for offline debugger APIs.
"""
import mindspore.offline_debug.dbg_services as d
import numpy as np
def main():
debugger_backend = d.DbgServices(
dump_file_path="/home/jtzanaka/dumps/sync_trans_true/032421/alexnet")
_ = debugger_backend.initialize(
net_name="Network Name goes here!", is_sync_mode=True)
# parameter
info1 = d.TensorInfo(node_name="Default/network-WithLossCell/_backbone-AlexNet/conv2-Conv2d/conv2.bias",
slot=0, iteration=2, device_id=0, root_graph_id=0, is_parameter=True)
# output tensor with zero slot
info2 = d.TensorInfo(node_name="Default/network-WithLossCell/_backbone-AlexNet/conv3-Conv2d/Conv2D-op308",
slot=0, iteration=2, device_id=0, root_graph_id=0, is_parameter=False)
# output tensor with non-zero slot
info3 = d.TensorInfo(node_name="Default/network-WithLossCell/_backbone-AlexNet/ReLUV2-op300",
slot=1, iteration=2, device_id=0, root_graph_id=0, is_parameter=False)
tensor_info = [info1, info2, info3]
tensor_data = debugger_backend.read_tensors(tensor_info)
print_read_tensors(tensor_info, tensor_data)
def print_read_tensors(tensor_info, tensor_data):
"""Print read tensors."""
for x, _ in enumerate(tensor_info):
print("-----------------------------------------------------------")
print("tensor_info_" + str(x+1) + " attributes:")
print("node name = ", tensor_info[x].node_name)
print("slot = ", tensor_info[x].slot)
print("iteration = ", tensor_info[x].iteration)
print("device_id = ", tensor_info[x].device_id)
print("root_graph_id = ", tensor_info[x].root_graph_id)
print("is_parameter = ", tensor_info[x].is_parameter)
print()
print("tensor_data_" + str(x+1) + " attributes:")
print("data (printed in uint8) = ", np.frombuffer(
tensor_data[x].data_ptr, np.uint8, tensor_data[x].data_size))
py_byte_size = len(tensor_data[x].data_ptr)
c_byte_size = tensor_data[x].data_size
if c_byte_size != py_byte_size:
print("The python byte size of ", py_byte_size,
" does not match the C++ byte size of ", c_byte_size)
print("size in bytes = ", tensor_data[x].data_size)
print("debugger dtype = ", tensor_data[x].dtype)
print("shape = ", tensor_data[x].shape)
if __name__ == "__main__":
main()

View File

@ -1,123 +0,0 @@
# Copyright 2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""
General Validator Helper Functions.
"""
import os
import inspect
UINT32_MAX = 4294967295
UINT32_MIN = 0
UINT64_MAX = 18446744073709551615
UINT64_MIN = 0
def pad_arg_name(arg_name):
if arg_name != "":
arg_name = arg_name + " "
return arg_name
def check_value(arg, valid_range, arg_name=""):
arg_name = pad_arg_name(arg_name)
if arg < valid_range[0] or arg > valid_range[1]:
raise ValueError(
"Input {0}is not within the required interval of ({1} to {2}).".format(arg_name,
valid_range[0], valid_range[1]))
def check_uint32(arg, arg_name=""):
type_check(arg, (int,), arg_name)
check_value(arg, [UINT32_MIN, UINT32_MAX])
def check_uint64(arg, arg_name=""):
type_check(arg, (int,), arg_name)
check_value(arg, [UINT64_MIN, UINT64_MAX])
def check_dir(dataset_dir):
if not os.path.isdir(dataset_dir) or not os.access(dataset_dir, os.R_OK):
raise ValueError("The folder {} does not exist or permission denied!".format(dataset_dir))
def parse_user_args(method, *args, **kwargs):
"""
Parse user arguments in a function.
Args:
method (method): a callable function.
args: user passed args.
kwargs: user passed kwargs.
Returns:
user_filled_args (list): values of what the user passed in for the arguments.
ba.arguments (Ordered Dict): ordered dict of parameter and argument for what the user has passed.
"""
sig = inspect.signature(method)
if 'self' in sig.parameters or 'cls' in sig.parameters:
ba = sig.bind(method, *args, **kwargs)
ba.apply_defaults()
params = list(sig.parameters.keys())[1:]
else:
ba = sig.bind(*args, **kwargs)
ba.apply_defaults()
params = list(sig.parameters.keys())
user_filled_args = [ba.arguments.get(arg_value) for arg_value in params]
return user_filled_args, ba.arguments
def type_check(arg, types, arg_name):
"""
Check the type of the parameter.
Args:
arg (Any) : any variable.
types (tuple): tuple of all valid types for arg.
arg_name (str): the name of arg.
Returns:
Exception: when the type is not correct, otherwise nothing.
"""
# handle special case of booleans being a subclass of ints
print_value = '\"\"' if repr(arg) == repr('') else arg
if int in types and bool not in types:
if isinstance(arg, bool):
raise TypeError("Argument {0} with value {1} is not of type {2}.".format(arg_name, print_value, types))
if not isinstance(arg, types):
raise TypeError("Argument {0} with value {1} is not of type {2}.".format(arg_name, print_value, types))
def type_check_list(args, types, arg_names):
"""
Check the type of each parameter in the list.
Args:
args (Union[list, tuple]): a list or tuple of any variable.
types (tuple): tuple of all valid types for arg.
arg_names (Union[list, tuple of str]): the names of args.
Returns:
Exception: when the type is not correct, otherwise nothing.
"""
type_check(args, (list, tuple,), arg_names)
if len(args) != len(arg_names) and not isinstance(arg_names, str):
raise ValueError("List of arguments is not the same length as argument_names.")
if isinstance(arg_names, str):
arg_names = ["{0}[{1}]".format(arg_names, i) for i in range(len(args))]
for arg, arg_name in zip(args, arg_names):
type_check(arg, types, arg_name)

View File

@ -1,223 +0,0 @@
# Copyright 2021 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ==============================================================================
"""
Validator Functions for Offline Debugger APIs.
"""
from functools import wraps
import dbg_services as cds
from mi_validator_helpers import parse_user_args, type_check, type_check_list, check_dir, check_uint32, check_uint64
def check_init(method):
"""Wrapper method to check the parameters of DbgServices init."""
@wraps(method)
def new_method(self, *args, **kwargs):
[dump_file_path, verbose], _ = parse_user_args(method, *args, **kwargs)
type_check(dump_file_path, (str,), "dump_file_path")
type_check(verbose, (bool,), "verbose")
check_dir(dump_file_path)
return method(self, *args, **kwargs)
return new_method
def check_initialize(method):
"""Wrapper method to check the parameters of DbgServices Initialize method."""
@wraps(method)
def new_method(self, *args, **kwargs):
[net_name, is_sync_mode], _ = parse_user_args(method, *args, **kwargs)
type_check(net_name, (str,), "net_name")
type_check(is_sync_mode, (bool,), "is_sync_mode")
return method(self, *args, **kwargs)
return new_method
def check_add_watchpoint(method):
"""Wrapper method to check the parameters of DbgServices AddWatchpoint."""
@wraps(method)
def new_method(self, *args, **kwargs):
[id_value, watch_condition, check_node_list, parameter_list], _ = parse_user_args(method, *args, **kwargs)
check_uint32(id_value, "id")
check_uint32(watch_condition, "watch_condition")
type_check(check_node_list, (dict,), "check_node_list")
for node_name, node_info in check_node_list.items():
type_check(node_name, (str,), "node_name")
type_check(node_info, (dict,), "node_info")
for info_name, info_param in node_info.items():
type_check(info_name, (str,), "node parameter name")
if info_name in ["device_id"]:
for param in info_param:
check_uint32(param, "device_id")
elif info_name in ["root_graph_id"]:
for param in info_param:
check_uint32(param, "root_graph_id")
elif info_name in ["is_parameter"]:
type_check(info_param, (bool,), "is_parameter")
else:
raise ValueError("Node parameter {} is not defined.".format(info_name))
param_names = ["param_{0}".format(i) for i in range(len(parameter_list))]
type_check_list(parameter_list, (cds.Parameter,), param_names)
return method(self, *args, **kwargs)
return new_method
def check_remove_watchpoint(method):
"""Wrapper method to check the parameters of DbgServices RemoveWatchpoint."""
@wraps(method)
def new_method(self, *args, **kwargs):
[id_value], _ = parse_user_args(method, *args, **kwargs)
check_uint32(id_value, "id")
return method(self, *args, **kwargs)
return new_method
def check_check_watchpoints(method):
"""Wrapper method to check the parameters of DbgServices CheckWatchpoint."""
@wraps(method)
def new_method(self, *args, **kwargs):
[iteration], _ = parse_user_args(method, *args, **kwargs)
check_uint32(iteration, "iteration")
return method(self, *args, **kwargs)
return new_method
def check_read_tensors(method):
"""Wrapper method to check the parameters of DbgServices ReadTensors."""
@wraps(method)
def new_method(self, *args, **kwargs):
[info_list], _ = parse_user_args(method, *args, **kwargs)
info_names = ["info_{0}".format(i) for i in range(len(info_list))]
type_check_list(info_list, (cds.TensorInfo,), info_names)
return method(self, *args, **kwargs)
return new_method
def check_initialize_done(method):
"""Wrapper method to check if initlize is done for DbgServices."""
@wraps(method)
def new_method(self, *args, **kwargs):
if not self.initialized:
raise RuntimeError("Inilize should be called before any other methods of DbgServices!")
return method(self, *args, **kwargs)
return new_method
def check_tensor_info_init(method):
"""Wrapper method to check the parameters of DbgServices TensorInfo init."""
@wraps(method)
def new_method(self, *args, **kwargs):
[node_name, slot, iteration, device_id, root_graph_id,
is_parameter], _ = parse_user_args(method, *args, **kwargs)
type_check(node_name, (str,), "node_name")
check_uint32(slot, "slot")
check_uint32(iteration, "iteration")
check_uint32(device_id, "device_id")
check_uint32(root_graph_id, "root_graph_id")
type_check(is_parameter, (bool,), "is_parameter")
return method(self, *args, **kwargs)
return new_method
def check_tensor_data_init(method):
"""Wrapper method to check the parameters of DbgServices TensorData init."""
@wraps(method)
def new_method(self, *args, **kwargs):
[data_ptr, data_size, dtype, shape], _ = parse_user_args(method, *args, **kwargs)
type_check(data_ptr, (bytes,), "data_ptr")
check_uint64(data_size, "data_size")
type_check(dtype, (int,), "dtype")
shape_names = ["shape_{0}".format(i) for i in range(len(shape))]
type_check_list(shape, (int,), shape_names)
if len(data_ptr) != data_size:
raise ValueError("data_ptr length ({0}) is not equal to data_size ({1}).".format(len(data_ptr), data_size))
return method(self, *args, **kwargs)
return new_method
def check_watchpoint_hit_init(method):
"""Wrapper method to check the parameters of DbgServices WatchpointHit init."""
@wraps(method)
def new_method(self, *args, **kwargs):
[name, slot, condition, watchpoint_id,
parameters, error_code, device_id, root_graph_id], _ = parse_user_args(method, *args, **kwargs)
type_check(name, (str,), "name")
check_uint32(slot, "slot")
type_check(condition, (int,), "condition")
check_uint32(watchpoint_id, "watchpoint_id")
param_names = ["param_{0}".format(i) for i in range(len(parameters))]
type_check_list(parameters, (cds.Parameter,), param_names)
type_check(error_code, (int,), "error_code")
check_uint32(device_id, "device_id")
check_uint32(root_graph_id, "root_graph_id")
return method(self, *args, **kwargs)
return new_method
def check_parameter_init(method):
"""Wrapper method to check the parameters of DbgServices Parameter init."""
@wraps(method)
def new_method(self, *args, **kwargs):
[name, disabled, value, hit, actual_value], _ = parse_user_args(method, *args, **kwargs)
type_check(name, (str,), "name")
type_check(disabled, (bool,), "disabled")
type_check(value, (float,), "value")
type_check(hit, (bool,), "hit")
type_check(actual_value, (float,), "actual_value")
return method(self, *args, **kwargs)
return new_method