| 2614 | } |
| 2615 | |
| 2616 | struct ggml_tensor * ggml_set_i32 (struct ggml_tensor * tensor, int32_t value) { |
| 2617 | const int n = ggml_nrows(tensor); |
| 2618 | const int nc = tensor->ne[0]; |
| 2619 | const size_t n1 = tensor->nb[1]; |
| 2620 | |
| 2621 | char * const data = tensor->data; |
| 2622 | |
| 2623 | switch (tensor->type) { |
| 2624 | case GGML_TYPE_I8: |
| 2625 | { |
| 2626 | assert(tensor->nb[0] == sizeof(int8_t)); |
| 2627 | for (int i = 0; i < n; i++) { |
| 2628 | ggml_vec_set_i8(nc, (int8_t *)(data + i*n1), value); |
| 2629 | } |
| 2630 | } break; |
| 2631 | case GGML_TYPE_I16: |
| 2632 | { |
| 2633 | assert(tensor->nb[0] == sizeof(int16_t)); |
| 2634 | for (int i = 0; i < n; i++) { |
| 2635 | ggml_vec_set_i16(nc, (int16_t *)(data + i*n1), value); |
| 2636 | } |
| 2637 | } break; |
| 2638 | case GGML_TYPE_I32: |
| 2639 | { |
| 2640 | assert(tensor->nb[0] == sizeof(int32_t)); |
| 2641 | for (int i = 0; i < n; i++) { |
| 2642 | ggml_vec_set_i32(nc, (int32_t *)(data + i*n1), value); |
| 2643 | } |
| 2644 | } break; |
| 2645 | case GGML_TYPE_F16: |
| 2646 | { |
| 2647 | assert(tensor->nb[0] == sizeof(ggml_fp16_t)); |
| 2648 | for (int i = 0; i < n; i++) { |
| 2649 | ggml_vec_set_f16(nc, (ggml_fp16_t *)(data + i*n1), GGML_FP32_TO_FP16(value)); |
| 2650 | } |
| 2651 | } break; |
| 2652 | case GGML_TYPE_F32: |
| 2653 | { |
| 2654 | assert(tensor->nb[0] == sizeof(float)); |
| 2655 | for (int i = 0; i < n; i++) { |
| 2656 | ggml_vec_set_f32(nc, (float *)(data + i*n1), value); |
| 2657 | } |
| 2658 | } break; |
| 2659 | default: |
| 2660 | { |
| 2661 | GGML_ASSERT(false); |
| 2662 | } break; |
| 2663 | } |
| 2664 | |
| 2665 | return tensor; |
| 2666 | } |
| 2667 | |
| 2668 | struct ggml_tensor * ggml_set_f32(struct ggml_tensor * tensor, float value) { |
| 2669 | const int n = ggml_nrows(tensor); |
no test coverage detected