@@ -131,10 +131,8 @@ ggml_backend_sycl_buffer_init_tensor(ggml_backend_buffer_t buffer,
131
131
ggml_tensor *tensor) try {
132
132
ggml_backend_sycl_buffer_context * ctx = (ggml_backend_sycl_buffer_context *)buffer->context ;
133
133
134
- if (tensor->view_src != NULL && tensor-> view_offs == 0 ) {
134
+ if (tensor->view_src != NULL ) {
135
135
assert (tensor->view_src ->buffer ->buft == buffer->buft );
136
- tensor->backend = tensor->view_src ->backend ;
137
- tensor->extra = tensor->view_src ->extra ;
138
136
return ;
139
137
}
140
138
@@ -580,7 +578,7 @@ ggml_backend_sycl_split_buffer_init_tensor(ggml_backend_buffer_t buffer,
580
578
size += ggml_row_size (tensor->type , MATRIX_ROW_PADDING - ne0 % MATRIX_ROW_PADDING);
581
579
}
582
580
583
- // FIXME: do not crash if cudaMalloc fails
581
+ // FIXME: do not crash if SYCL Buffer alloc fails
584
582
// currently, init_tensor cannot fail, it needs to be fixed in ggml-backend first
585
583
ggml_sycl_set_device (id);
586
584
const queue_ptr stream = ctx->streams [id];
@@ -622,7 +620,6 @@ ggml_backend_sycl_split_buffer_init_tensor(ggml_backend_buffer_t buffer,
622
620
CHECK_TRY_ERROR (extra->events [id][is] = new sycl::event ()));
623
621
}
624
622
}
625
- tensor->backend = GGML_BACKEND_TYPE_GPU_SPLIT;
626
623
tensor->extra = extra;
627
624
}
628
625
catch (sycl::exception const &exc) {
@@ -2211,12 +2208,22 @@ static dpct::err0 ggml_sycl_cpy_tensor_2d(void *dst,
2211
2208
2212
2209
dpct::memcpy_direction kind;
2213
2210
char * src_ptr;
2214
- if (src->backend == GGML_BACKEND_TYPE_CPU ) {
2211
+ if (ggml_backend_buffer_is_host ( src->buffer ) ) {
2215
2212
kind = dpct::host_to_device;
2213
+ // GGML_SYCL_DEBUG("%s: Host buffer type src tensor\n", __func__);
2216
2214
src_ptr = (char *) src->data ;
2217
2215
// GGML_SYCL_DEBUG("ggml_sycl_cpy_tensor_2d GGML_BACKEND_TYPE_CPU src_ptr %p\n", src_ptr);
2218
- } else if (src->backend == GGML_BACKEND_TYPE_GPU || src->backend == GGML_BACKEND_TYPE_GPU_SPLIT) {
2219
- GGML_ASSERT (src->backend != GGML_BACKEND_TYPE_GPU_SPLIT || (i1_low == 0 && i1_high == src->ne [1 ]));
2216
+ } else if (ggml_backend_buffer_is_sycl (src->buffer )) {
2217
+ // If buffer is a SYCL buffer
2218
+ // GGML_SYCL_DEBUG("%s: SYCL buffer type src tensor\n", __func__);
2219
+ kind = dpct::device_to_device;
2220
+ src_ptr = (char *) src->data ;
2221
+ } else if (ggml_backend_buffer_is_sycl_split (src->buffer )) {
2222
+ /*
2223
+ If buffer is a SYCL split buffer
2224
+ */
2225
+ // GGML_SYCL_DEBUG("%s: Split buffer type src tensor\n", __func__);
2226
+ GGML_ASSERT (i1_low == 0 && i1_high == src->ne [1 ]);
2220
2227
kind = dpct::device_to_device;
2221
2228
ggml_tensor_extra_gpu * extra = (ggml_tensor_extra_gpu *) src->extra ;
2222
2229
int id;
@@ -2721,8 +2728,8 @@ static void ggml_sycl_op_mul_mat(ggml_backend_sycl_context & ctx, const ggml_ten
2721
2728
const int nb2 = dst->nb [2 ];
2722
2729
const int nb3 = dst->nb [3 ];
2723
2730
2724
- GGML_ASSERT (dst->backend != GGML_BACKEND_TYPE_GPU_SPLIT );
2725
- GGML_ASSERT (src1->backend != GGML_BACKEND_TYPE_GPU_SPLIT );
2731
+ GGML_ASSERT (! ggml_backend_buffer_is_sycl_split ( dst->buffer ) );
2732
+ GGML_ASSERT (! ggml_backend_buffer_is_sycl_split ( src1->buffer ) );
2726
2733
GGML_ASSERT (src1->type == GGML_TYPE_F32 || (src1->ne [2 ] == 1 && src1->ne [3 ] == 1 ));
2727
2734
2728
2735
GGML_ASSERT (ne12 >= ne02 && ne12 % ne02 == 0 );
@@ -2742,7 +2749,7 @@ static void ggml_sycl_op_mul_mat(ggml_backend_sycl_context & ctx, const ggml_ten
2742
2749
2743
2750
int64_t src1_padded_col_size = GGML_PAD (ne10, MATRIX_ROW_PADDING);
2744
2751
2745
- const bool split = src0->backend == GGML_BACKEND_TYPE_GPU_SPLIT ;
2752
+ const bool split = ggml_backend_buffer_is_sycl_split ( src0->buffer ) ;
2746
2753
GGML_ASSERT (!(split && ne02 > 1 ));
2747
2754
GGML_ASSERT (!(split && ne03 > 1 ));
2748
2755
GGML_ASSERT (!(split && ne02 < ne12));
@@ -3067,7 +3074,7 @@ static void ggml_sycl_mul_mat_vec_p021(ggml_backend_sycl_context & ctx, const gg
3067
3074
const ggml_tensor *src1,
3068
3075
ggml_tensor *dst) try {
3069
3076
GGML_ASSERT (ggml_is_permuted (src0) && ggml_is_permuted (src1));
3070
- GGML_ASSERT (src0->backend != GGML_BACKEND_TYPE_GPU_SPLIT );
3077
+ GGML_ASSERT (! ggml_backend_buffer_is_sycl_split ( src0->buffer ) );
3071
3078
GGML_ASSERT (src0->nb [0 ] <= src0->nb [1 ] && src0->nb [2 ] <= src0->nb [3 ]); // 0213 permutation
3072
3079
GGML_ASSERT (src1->nb [0 ] <= src1->nb [1 ] && src1->nb [2 ] <= src1->nb [3 ]); // 0213 permutation
3073
3080
GGML_ASSERT (src0->type == GGML_TYPE_F16);
@@ -3100,7 +3107,7 @@ static void ggml_sycl_mul_mat_vec_nc(ggml_backend_sycl_context & ctx, const ggml
3100
3107
GGML_ASSERT (!ggml_is_transposed (src0));
3101
3108
GGML_ASSERT (!ggml_is_transposed (src1));
3102
3109
GGML_ASSERT (!ggml_is_permuted (src0));
3103
- GGML_ASSERT (src0->backend != GGML_BACKEND_TYPE_GPU_SPLIT );
3110
+ GGML_ASSERT (! ggml_backend_buffer_is_sycl_split ( src0->buffer ) );
3104
3111
GGML_ASSERT (src0->type == GGML_TYPE_F16);
3105
3112
GGML_ASSERT (src1->type == GGML_TYPE_F32);
3106
3113
@@ -3162,7 +3169,7 @@ static void ggml_sycl_mul_mat_batched_sycl(ggml_backend_sycl_context & ctx,
3162
3169
ggml_tensor *dst) try {
3163
3170
GGML_ASSERT (!ggml_is_transposed (src0));
3164
3171
GGML_ASSERT (!ggml_is_transposed (src1));
3165
- GGML_ASSERT (src0->backend != GGML_BACKEND_TYPE_GPU_SPLIT );
3172
+ GGML_ASSERT (! ggml_backend_buffer_is_sycl_split ( src0->buffer ) );
3166
3173
GGML_ASSERT (src0->type == GGML_TYPE_F16);
3167
3174
3168
3175
GGML_TENSOR_BINARY_OP_LOCALS
@@ -4543,10 +4550,9 @@ static ggml_backend_dev_t ggml_backend_sycl_reg_get_device(ggml_backend_reg_t re
4543
4550
static void *ggml_backend_sycl_reg_get_proc_address (ggml_backend_reg_t reg, const char *name) {
4544
4551
GGML_UNUSED (reg);
4545
4552
4546
- // TODO: update to the current function signature
4547
- // if (strcmp(name, "ggml_backend_split_buffer_type") == 0) {
4548
- // return (void *)ggml_backend_sycl_split_buffer_type;
4549
- // }
4553
+ if (strcmp (name, " ggml_backend_split_buffer_type" ) == 0 ) {
4554
+ return (void *)ggml_backend_sycl_split_buffer_type;
4555
+ }
4550
4556
4551
4557
// SYCL doesn't support registering host memory, left here for reference
4552
4558
// "ggml_backend_register_host_buffer"
0 commit comments