| 2974 | } |
| 2975 | |
| 2976 | void ggml_set_f32_nd(const struct ggml_tensor * tensor, int i0, int i1, int i2, int i3, float value) { |
| 2977 | void * data = (char *) tensor->data + i0*tensor->nb[0] + i1*tensor->nb[1] + i2*tensor->nb[2] + i3*tensor->nb[3]; |
| 2978 | switch (tensor->type) { |
| 2979 | case GGML_TYPE_I8: |
| 2980 | { |
| 2981 | ((int8_t *)(data))[0] = value; |
| 2982 | } break; |
| 2983 | case GGML_TYPE_I16: |
| 2984 | { |
| 2985 | ((int16_t *)(data))[0] = value; |
| 2986 | } break; |
| 2987 | case GGML_TYPE_I32: |
| 2988 | { |
| 2989 | ((int32_t *)(data))[0] = value; |
| 2990 | } break; |
| 2991 | case GGML_TYPE_F16: |
| 2992 | { |
| 2993 | ((ggml_fp16_t *)(data))[0] = GGML_FP32_TO_FP16(value); |
| 2994 | } break; |
| 2995 | case GGML_TYPE_F32: |
| 2996 | { |
| 2997 | ((float *)(data))[0] = value; |
| 2998 | } break; |
| 2999 | default: |
| 3000 | { |
| 3001 | GGML_ASSERT(false); |
| 3002 | } break; |
| 3003 | } |
| 3004 | } |
| 3005 | |
| 3006 | void * ggml_get_data(const struct ggml_tensor * tensor) { |
| 3007 | return tensor->data; |
no outgoing calls
no test coverage detected