Skip to content

Commit 0889eba

Browse files
authored
sycl: Adding additional cpy dbg print output (#14034)
1 parent c61285e commit 0889eba

File tree

3 files changed

+33
-37
lines changed

3 files changed

+33
-37
lines changed

ggml/src/ggml-sycl/common.hpp

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -513,9 +513,9 @@ constexpr size_t ceil_div(const size_t m, const size_t n) {
513513

514514
bool gpu_has_xmx(sycl::device &dev);
515515

516-
template <int N, class T> void debug_print_array(const std::string & prefix, const T array[N]) {
516+
template <int N, class T> std::string debug_get_array_str(const std::string & prefix, const T array[N]) {
517517
if (LIKELY(!g_ggml_sycl_debug)) {
518-
return;
518+
return "";
519519
}
520520
std::stringstream ss;
521521
ss << prefix << "=[";
@@ -526,29 +526,26 @@ template <int N, class T> void debug_print_array(const std::string & prefix, con
526526
ss << array[N - 1];
527527
}
528528
ss << "]";
529-
GGML_SYCL_DEBUG("%s", ss.str().c_str());
529+
return ss.str();
530530
}
531531

532-
inline void debug_print_tensor(const std::string & prefix, const ggml_tensor * tensor,
533-
const std::string & suffix = "") {
534-
if (LIKELY(!g_ggml_sycl_debug)) {
535-
return;
536-
}
537-
GGML_SYCL_DEBUG("%s=", prefix.c_str());
532+
inline std::string debug_get_tensor_str(const std::string &prefix,
533+
const ggml_tensor *tensor, const std::string &suffix = "") {
534+
std::stringstream ss;
535+
if (LIKELY(!g_ggml_sycl_debug)) { return ss.str(); }
536+
ss << prefix.c_str() << "=";
538537
if (tensor) {
539-
GGML_SYCL_DEBUG("'%s':type=%s", tensor->name, ggml_type_name(tensor->type));
540-
debug_print_array<GGML_MAX_DIMS>(";ne", tensor->ne);
541-
debug_print_array<GGML_MAX_DIMS>(";nb", tensor->nb);
542-
if (!ggml_is_contiguous(tensor)) {
543-
GGML_SYCL_DEBUG(";strided");
544-
}
545-
if (ggml_is_permuted(tensor)) {
546-
GGML_SYCL_DEBUG(";permuted");
547-
}
538+
ss << "'" << tensor->name << "':type=" << ggml_type_name(tensor->type);
539+
ss << debug_get_array_str<GGML_MAX_DIMS>(";ne", tensor->ne);
540+
ss << debug_get_array_str<GGML_MAX_DIMS>(";nb", tensor->nb);
541+
542+
if (!ggml_is_contiguous(tensor)) { ss << ";strided"; }
543+
if (ggml_is_permuted(tensor)) { ss << ";permuted"; }
548544
} else {
549-
GGML_SYCL_DEBUG("nullptr");
545+
ss << "nullptr";
550546
}
551-
GGML_SYCL_DEBUG("%s", suffix.c_str());
547+
ss << suffix;
548+
return ss.str();
552549
}
553550

554551
// Use scope_op_debug_print to log operations coming from running a model
@@ -564,10 +561,10 @@ struct scope_op_debug_print {
564561
return;
565562
}
566563
GGML_SYCL_DEBUG("[SYCL][OP] call %s%s:", func.data(), func_suffix.data());
567-
debug_print_tensor(" dst", dst);
564+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(" dst", dst).c_str());
568565
if (dst) {
569566
for (std::size_t i = 0; i < num_src; ++i) {
570-
debug_print_tensor("\tsrc" + std::to_string(i), dst->src[i]);
567+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str("\tsrc" + std::to_string(i), dst->src[i]).c_str());
571568
}
572569
}
573570
GGML_SYCL_DEBUG("%s\n", suffix.data());

ggml/src/ggml-sycl/cpy.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -723,8 +723,7 @@ static void ggml_cpy_q4_1_q4_1(const char * cx, char * cdst, const int ne, const
723723

724724
void ggml_sycl_cpy(ggml_backend_sycl_context & ctx, const ggml_tensor * src0, const ggml_tensor * src1) try {
725725
// Unlike other operators ggml_sycl_cpy takes 2 distinct tensors instead of a dst ggml_tensor and rely on its src field
726-
scope_op_debug_print scope_dbg_print(__func__, src1, /*num_src=*/0,
727-
std::string(" src0 type=") + ggml_type_name(src0->type));
726+
scope_op_debug_print scope_dbg_print(__func__, src1, /*num_src=*/0, debug_get_tensor_str("\tsrc0", src0));
728727
const int64_t ne = ggml_nelements(src0);
729728
GGML_ASSERT(ne == ggml_nelements(src1));
730729

ggml/src/ggml-sycl/ggml-sycl.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ static enum ggml_status
347347
ggml_backend_sycl_buffer_init_tensor(ggml_backend_buffer_t buffer,
348348
ggml_tensor *tensor) try {
349349
GGML_SYCL_DEBUG("[SYCL] call %s", __func__);
350-
debug_print_tensor(": tensor=", tensor, "\n");
350+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(": tensor", tensor, "\n").c_str());
351351
ggml_backend_sycl_buffer_context * ctx = (ggml_backend_sycl_buffer_context *)buffer->context;
352352

353353
if (tensor->view_src != NULL) {
@@ -385,7 +385,7 @@ static void ggml_backend_sycl_buffer_set_tensor(ggml_backend_buffer_t buffer,
385385
const void *data, size_t offset,
386386
size_t size) try {
387387
GGML_SYCL_DEBUG("[SYCL] call %s", __func__);
388-
debug_print_tensor(": tensor=", tensor);
388+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(": tensor", tensor).c_str());
389389
GGML_SYCL_DEBUG(" size=%zu offset=%zu\n", size, offset);
390390
ggml_backend_sycl_buffer_context * ctx = ( ggml_backend_sycl_buffer_context *)buffer->context;
391391
ggml_sycl_set_device(ctx->device);
@@ -413,7 +413,7 @@ static void ggml_backend_sycl_buffer_get_tensor(ggml_backend_buffer_t buffer,
413413
void *data, size_t offset,
414414
size_t size) try {
415415
GGML_SYCL_DEBUG("[SYCL] call %s", __func__);
416-
debug_print_tensor(": tensor=", tensor);
416+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(": tensor", tensor).c_str());
417417
GGML_SYCL_DEBUG(" size=%zu offset=%zu\n", size, offset);
418418
ggml_backend_sycl_buffer_context * ctx = ( ggml_backend_sycl_buffer_context *)buffer->context;
419419

@@ -444,8 +444,8 @@ ggml_backend_sycl_buffer_cpy_tensor(ggml_backend_buffer_t buffer,
444444
ggml_tensor *dst) try {
445445
bool is_cpy_supported = ggml_backend_buffer_is_sycl(src->buffer);
446446
GGML_SYCL_DEBUG("[SYCL] call %s", __func__);
447-
debug_print_tensor(": dst=", dst);
448-
debug_print_tensor(" src=", src);
447+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(": dst", dst).c_str());
448+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(" src", src).c_str());
449449
GGML_SYCL_DEBUG(" is_cpy_supported=%d\n", is_cpy_supported);
450450
if (is_cpy_supported) {
451451
ggml_backend_sycl_buffer_context * src_ctx = (ggml_backend_sycl_buffer_context *)src->buffer->context;
@@ -525,7 +525,7 @@ catch (sycl::exception const &exc) {
525525
static void ggml_backend_sycl_buffer_memset_tensor(ggml_backend_buffer_t buffer, ggml_tensor * tensor, uint8_t value,
526526
size_t offset, size_t size) {
527527
GGML_SYCL_DEBUG("[SYCL] call %s", __func__);
528-
debug_print_tensor(": tensor=", tensor);
528+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(": tensor", tensor).c_str());
529529
GGML_SYCL_DEBUG(" size=%zu offset=%zu value=%u\n", size, offset, value);
530530
ggml_backend_sycl_buffer_context * ctx = (ggml_backend_sycl_buffer_context *) buffer->context;
531531
SYCL_CHECK(ggml_sycl_set_device(ctx->device));
@@ -805,7 +805,7 @@ static enum ggml_status
805805
ggml_backend_sycl_split_buffer_init_tensor(ggml_backend_buffer_t buffer,
806806
ggml_tensor *tensor) try {
807807
GGML_SYCL_DEBUG("[SYCL] call %s", __func__);
808-
debug_print_tensor(": tensor=", tensor, "\n");
808+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(": tensor", tensor, "\n").c_str());
809809
GGML_ASSERT(tensor->view_src == nullptr); // views of split tensors are not supported
810810

811811
ggml_backend_sycl_split_buffer_context * ctx = (ggml_backend_sycl_split_buffer_context *)buffer->context;
@@ -891,7 +891,7 @@ ggml_backend_sycl_split_buffer_set_tensor(ggml_backend_buffer_t buffer,
891891
ggml_tensor *tensor, const void *data,
892892
size_t offset, size_t size) try {
893893
GGML_SYCL_DEBUG("[SYCL] call %s", __func__);
894-
debug_print_tensor(": tensor=", tensor);
894+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(": tensor", tensor).c_str());
895895
GGML_SYCL_DEBUG(" size=%zu offset=%zu\n", size, offset);
896896
// split tensors must always be set in their entirety at once
897897
GGML_ASSERT(offset == 0);
@@ -947,7 +947,7 @@ ggml_backend_sycl_split_buffer_get_tensor(ggml_backend_buffer_t buffer,
947947
const ggml_tensor *tensor, void *data,
948948
size_t offset, size_t size) try {
949949
GGML_SYCL_DEBUG("[SYCL] call %s", __func__);
950-
debug_print_tensor(": tensor=", tensor);
950+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(": tensor", tensor).c_str());
951951
GGML_SYCL_DEBUG(" size=%zu offset=%zu\n", size, offset);
952952
// split tensors must always be set in their entirety at once
953953
GGML_ASSERT(offset == 0);
@@ -3863,7 +3863,7 @@ static void ggml_backend_sycl_set_tensor_async(ggml_backend_t backend,
38633863
const void *data, size_t offset,
38643864
size_t size) try {
38653865
GGML_SYCL_DEBUG("[SYCL] call %s", __func__);
3866-
debug_print_tensor(": tensor=", tensor);
3866+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(": tensor", tensor).c_str());
38673867
GGML_SYCL_DEBUG(" size=%zu offset=%zu\n", size, offset);
38683868
ggml_backend_sycl_context * sycl_ctx = (ggml_backend_sycl_context *)backend->context;
38693869
ggml_backend_buffer_t buf = tensor->view_src ? tensor->view_src->buffer : tensor->buffer;
@@ -3884,7 +3884,7 @@ static void ggml_backend_sycl_get_tensor_async(ggml_backend_t backend,
38843884
void *data, size_t offset,
38853885
size_t size) try {
38863886
GGML_SYCL_DEBUG("[SYCL] call %s", __func__);
3887-
debug_print_tensor(": tensor=", tensor);
3887+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(": tensor", tensor).c_str());
38883888
GGML_SYCL_DEBUG(" size=%zu offset=%zu\n", size, offset);
38893889
ggml_backend_sycl_context * sycl_ctx = (ggml_backend_sycl_context *)backend->context;
38903890
ggml_backend_buffer_t buf = tensor->view_src ? tensor->view_src->buffer : tensor->buffer;
@@ -3907,8 +3907,8 @@ static bool ggml_backend_sycl_cpy_tensor_async(ggml_backend_t backend,
39073907
bool is_cpy_supported = dst->buffer->buft == ggml_backend_sycl_buffer_type(sycl_ctx->device) &&
39083908
ggml_backend_buffer_is_sycl(src->buffer);
39093909
GGML_SYCL_DEBUG("[SYCL] call %s", __func__);
3910-
debug_print_tensor(": dst=", dst);
3911-
debug_print_tensor(" src=", src);
3910+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(": dst", dst).c_str());
3911+
GGML_SYCL_DEBUG("%s", debug_get_tensor_str(" src", src).c_str());
39123912
GGML_SYCL_DEBUG(" is_cpy_supported=%d\n", is_cpy_supported);
39133913
if (is_cpy_supported) {
39143914
/*

0 commit comments

Comments
 (0)