| 665 | } |
| 666 | |
| 667 | void ggml_gallocr_alloc_graph_n(ggml_gallocr_t galloc, struct ggml_cgraph * graph, struct ggml_hash_set hash_set, ggml_tallocr_t * hash_node_talloc) { |
| 668 | const size_t hash_size = hash_set.size; |
| 669 | |
| 670 | GGML_ASSERT(hash_size >= (size_t)(graph->n_nodes + graph->n_leafs)); |
| 671 | |
| 672 | galloc->talloc = NULL; |
| 673 | |
| 674 | // alloc hash_values if needed |
| 675 | if (galloc->hash_values == NULL || galloc->hash_values_size < hash_size) { |
| 676 | free(galloc->hash_values); |
| 677 | galloc->hash_values = malloc(sizeof(struct hash_node) * hash_size); |
| 678 | galloc->hash_values_size = hash_size; |
| 679 | } |
| 680 | |
| 681 | // free hash_set.keys if needed |
| 682 | if (galloc->hash_set.keys != NULL) { |
| 683 | free(galloc->hash_set.keys); |
| 684 | } |
| 685 | galloc->hash_set = hash_set; |
| 686 | |
| 687 | // reset hash values |
| 688 | memset(galloc->hash_values, 0, sizeof(struct hash_node) * hash_size); |
| 689 | |
| 690 | galloc->hash_allocs = hash_node_talloc; |
| 691 | |
| 692 | ggml_tallocr_alloc_graph_impl(galloc, graph); |
| 693 | |
| 694 | // remove unowned resources |
| 695 | galloc->hash_set.keys = NULL; |
| 696 | galloc->hash_allocs = NULL; |
| 697 | } |
| 698 | |
| 699 | // legacy API wrapper |
| 700 |
no test coverage detected