for (size_t dim = 0; dim < GGML_MAX_DIMS; dim++) {
t_meta.ne[dim] = dim < ne.size() ? ne.begin()[dim] : 1;
GGML_ASSERT(t_meta.ne[dim] >= 1);
- t_meta.nb[dim] = dim == 0 ? ggml_type_size(type) : t_meta.ne[dim-1]*t_meta.nb[dim-1];
+ if (dim == 0) {
+ t_meta.nb[dim] = ggml_type_size(type);
+ } else if (dim == 1) {
+ t_meta.nb[dim] = ggml_row_size(type, t_meta.ne[dim-1]);
+ } else {
+ t_meta.nb[dim] = t_meta.nb[dim-1]*t_meta.ne[dim-1];
+ }
GGML_ASSERT(t_meta.nb[dim] >= 1);
}
ggml_set_name(&t_meta, tn.str().c_str());
if (flags & TENSOR_ALLOW_RESHAPE) {
for (size_t dim = 0; dim < GGML_MAX_DIMS; dim++) {
t_meta.ne[dim] = dim < ne.size() ? ne.begin()[dim] : 1;
- t_meta.nb[dim] = dim == 0 ? ggml_type_size(t_meta.type) : t_meta.ne[dim-1]*t_meta.nb[dim-1];
+ if (dim == 0) {
+ t_meta.nb[dim] = ggml_type_size(t_meta.type);
+ } else if (dim == 1) {
+ t_meta.nb[dim] = ggml_row_size(t_meta.type, t_meta.ne[dim-1]);
+ } else {
+ t_meta.nb[dim] = t_meta.ne[dim-1]*t_meta.nb[dim-1];
+ }
}
}
+ GGML_ASSERT(ggml_nbytes(&t_meta) == ggml_nbytes(cur));
+
ggml_backend_buffer_type_t buft = buft_for_tensor(&t_meta);
if (buft == nullptr) {
return nullptr;