Dave Airlie commited on
Commit
12af87c
·
1 Parent(s): d645791

ggml : fix calloc argument ordering. (llama/6820)

Browse files

Latest gcc complains here:
/home/airlied/devel/llama.cpp/ggml-alloc.c: In function ‘ggml_gallocr_new_n’:
/home/airlied/devel/llama.cpp/ggml-alloc.c:374:59: warning: ‘calloc’ sizes specified with ‘sizeof’ in the earlier argument and not in the later argument [-Wcalloc-transposed-args]
374 | ggml_gallocr_t galloc = (ggml_gallocr_t)calloc(sizeof(struct ggml_gallocr), 1);
| ^~~~~~
/home/airlied/devel/llama.cpp/ggml-alloc.c:374:59: note: earlier argument should specify number of elements, later size of each element

and a bunch more.

calloc is specified to take nmemb first then size, so realign the code.

In a couple of places there was a * x, 1 so I fixed those to use calloc properly.

Files changed (2) hide show
  1. ggml-alloc.c +8 -8
  2. ggml-backend.c +9 -9
ggml-alloc.c CHANGED
@@ -371,16 +371,16 @@ struct ggml_gallocr {
371
  };
372
 
373
  ggml_gallocr_t ggml_gallocr_new_n(ggml_backend_buffer_type_t * bufts, int n_bufs) {
374
- ggml_gallocr_t galloc = (ggml_gallocr_t)calloc(sizeof(struct ggml_gallocr), 1);
375
  GGML_ASSERT(galloc != NULL);
376
 
377
- galloc->bufts = calloc(sizeof(ggml_backend_buffer_type_t) * n_bufs, 1);
378
  GGML_ASSERT(galloc->bufts != NULL);
379
 
380
- galloc->buffers = calloc(sizeof(ggml_backend_buffer_t) * n_bufs, 1);
381
  GGML_ASSERT(galloc->buffers != NULL);
382
 
383
- galloc->buf_tallocs = calloc(sizeof(struct ggml_dyn_tallocr *) * n_bufs, 1);
384
  GGML_ASSERT(galloc->buf_tallocs != NULL);
385
 
386
  for (int i = 0; i < n_bufs; i++) {
@@ -646,8 +646,8 @@ bool ggml_gallocr_reserve_n(ggml_gallocr_t galloc, struct ggml_cgraph * graph, c
646
  free(galloc->hash_set.keys);
647
  free(galloc->hash_values);
648
  galloc->hash_set.size = hash_size;
649
- galloc->hash_set.keys = calloc(sizeof(struct ggml_tensor *), hash_size);
650
- galloc->hash_values = calloc(sizeof(struct hash_node), hash_size);
651
  GGML_ASSERT(galloc->hash_set.keys != NULL);
652
  GGML_ASSERT(galloc->hash_values != NULL);
653
  } else {
@@ -667,7 +667,7 @@ bool ggml_gallocr_reserve_n(ggml_gallocr_t galloc, struct ggml_cgraph * graph, c
667
  // set the node_allocs from the hash table
668
  if (galloc->n_nodes < graph->n_nodes) {
669
  free(galloc->node_allocs);
670
- galloc->node_allocs = calloc(sizeof(struct node_alloc), graph->n_nodes);
671
  GGML_ASSERT(galloc->node_allocs != NULL);
672
  }
673
  galloc->n_nodes = graph->n_nodes;
@@ -697,7 +697,7 @@ bool ggml_gallocr_reserve_n(ggml_gallocr_t galloc, struct ggml_cgraph * graph, c
697
  }
698
  if (galloc->n_leafs < graph->n_leafs) {
699
  free(galloc->leaf_allocs);
700
- galloc->leaf_allocs = calloc(sizeof(galloc->leaf_allocs[0]), graph->n_leafs);
701
  GGML_ASSERT(galloc->leaf_allocs != NULL);
702
  }
703
  galloc->n_leafs = graph->n_leafs;
 
371
  };
372
 
373
  ggml_gallocr_t ggml_gallocr_new_n(ggml_backend_buffer_type_t * bufts, int n_bufs) {
374
+ ggml_gallocr_t galloc = (ggml_gallocr_t)calloc(1, sizeof(struct ggml_gallocr));
375
  GGML_ASSERT(galloc != NULL);
376
 
377
+ galloc->bufts = calloc(n_bufs, sizeof(ggml_backend_buffer_type_t));
378
  GGML_ASSERT(galloc->bufts != NULL);
379
 
380
+ galloc->buffers = calloc(n_bufs, sizeof(ggml_backend_buffer_t) * n_bufs);
381
  GGML_ASSERT(galloc->buffers != NULL);
382
 
383
+ galloc->buf_tallocs = calloc(n_bufs, sizeof(struct ggml_dyn_tallocr *));
384
  GGML_ASSERT(galloc->buf_tallocs != NULL);
385
 
386
  for (int i = 0; i < n_bufs; i++) {
 
646
  free(galloc->hash_set.keys);
647
  free(galloc->hash_values);
648
  galloc->hash_set.size = hash_size;
649
+ galloc->hash_set.keys = calloc(hash_size, sizeof(struct ggml_tensor *));
650
+ galloc->hash_values = calloc(hash_size, sizeof(struct hash_node));
651
  GGML_ASSERT(galloc->hash_set.keys != NULL);
652
  GGML_ASSERT(galloc->hash_values != NULL);
653
  } else {
 
667
  // set the node_allocs from the hash table
668
  if (galloc->n_nodes < graph->n_nodes) {
669
  free(galloc->node_allocs);
670
+ galloc->node_allocs = calloc(graph->n_nodes, sizeof(struct node_alloc));
671
  GGML_ASSERT(galloc->node_allocs != NULL);
672
  }
673
  galloc->n_nodes = graph->n_nodes;
 
697
  }
698
  if (galloc->n_leafs < graph->n_leafs) {
699
  free(galloc->leaf_allocs);
700
+ galloc->leaf_allocs = calloc(graph->n_leafs, sizeof(galloc->leaf_allocs[0]));
701
  GGML_ASSERT(galloc->leaf_allocs != NULL);
702
  }
703
  galloc->n_leafs = graph->n_leafs;
ggml-backend.c CHANGED
@@ -1725,23 +1725,23 @@ ggml_backend_sched_t ggml_backend_sched_new(
1725
  GGML_ASSERT(n_backends <= GGML_SCHED_MAX_BACKENDS);
1726
  GGML_ASSERT(ggml_backend_is_cpu(backends[n_backends - 1])); // last backend must be CPU
1727
 
1728
- struct ggml_backend_sched * sched = calloc(sizeof(struct ggml_backend_sched), 1);
1729
 
1730
  // initialize hash table
1731
  sched->hash_set = ggml_hash_set_new(graph_size);
1732
- sched->tensor_backend_id = calloc(sizeof(sched->tensor_backend_id[0]), sched->hash_set.size);
1733
- sched->tensor_copies = calloc(sizeof(sched->tensor_copies[0]), sched->hash_set.size);
1734
 
1735
  const size_t nodes_size = graph_size + GGML_SCHED_MAX_SPLITS*GGML_SCHED_MAX_SPLIT_INPUTS*2;
1736
- sched->node_backend_ids = calloc(sizeof(sched->node_backend_ids[0]), nodes_size);
1737
- sched->leaf_backend_ids = calloc(sizeof(sched->leaf_backend_ids[0]), nodes_size);
1738
 
1739
  sched->n_backends = n_backends;
1740
 
1741
  sched->n_copies = parallel ? GGML_SCHED_MAX_COPIES : 1;
1742
 
1743
  const int initial_splits_capacity = 16;
1744
- sched->splits = calloc(sizeof(sched->splits[0]), initial_splits_capacity);
1745
  sched->splits_capacity = initial_splits_capacity;
1746
 
1747
  for (int b = 0; b < n_backends; b++) {
@@ -1972,10 +1972,10 @@ static void graph_copy_init_tensor(struct ggml_hash_set hash_set, struct ggml_te
1972
  struct ggml_backend_graph_copy ggml_backend_graph_copy(ggml_backend_t backend, struct ggml_cgraph * graph) {
1973
  struct ggml_hash_set hash_set = {
1974
  /* .size = */ graph->visited_hash_table.size,
1975
- /* .keys = */ calloc(sizeof(hash_set.keys[0]), graph->visited_hash_table.size) // NOLINT
1976
  };
1977
- struct ggml_tensor ** node_copies = calloc(sizeof(node_copies[0]), hash_set.size); // NOLINT
1978
- bool * node_init = calloc(sizeof(node_init[0]), hash_set.size);
1979
 
1980
  struct ggml_init_params params = {
1981
  /* .mem_size = */ ggml_tensor_overhead()*hash_set.size + ggml_graph_overhead_custom(graph->size, false),
 
1725
  GGML_ASSERT(n_backends <= GGML_SCHED_MAX_BACKENDS);
1726
  GGML_ASSERT(ggml_backend_is_cpu(backends[n_backends - 1])); // last backend must be CPU
1727
 
1728
+ struct ggml_backend_sched * sched = calloc(1, sizeof(struct ggml_backend_sched));
1729
 
1730
  // initialize hash table
1731
  sched->hash_set = ggml_hash_set_new(graph_size);
1732
+ sched->tensor_backend_id = calloc(sched->hash_set.size, sizeof(sched->tensor_backend_id[0]));
1733
+ sched->tensor_copies = calloc(sched->hash_set.size, sizeof(sched->tensor_copies[0]));
1734
 
1735
  const size_t nodes_size = graph_size + GGML_SCHED_MAX_SPLITS*GGML_SCHED_MAX_SPLIT_INPUTS*2;
1736
+ sched->node_backend_ids = calloc(nodes_size, sizeof(sched->node_backend_ids[0]));
1737
+ sched->leaf_backend_ids = calloc(nodes_size, sizeof(sched->leaf_backend_ids[0]));
1738
 
1739
  sched->n_backends = n_backends;
1740
 
1741
  sched->n_copies = parallel ? GGML_SCHED_MAX_COPIES : 1;
1742
 
1743
  const int initial_splits_capacity = 16;
1744
+ sched->splits = calloc(initial_splits_capacity, sizeof(sched->splits[0]));
1745
  sched->splits_capacity = initial_splits_capacity;
1746
 
1747
  for (int b = 0; b < n_backends; b++) {
 
1972
  struct ggml_backend_graph_copy ggml_backend_graph_copy(ggml_backend_t backend, struct ggml_cgraph * graph) {
1973
  struct ggml_hash_set hash_set = {
1974
  /* .size = */ graph->visited_hash_table.size,
1975
+ /* .keys = */ calloc(graph->visited_hash_table.size, sizeof(hash_set.keys[0])) // NOLINT
1976
  };
1977
+ struct ggml_tensor ** node_copies = calloc(hash_set.size, sizeof(node_copies[0])); // NOLINT
1978
+ bool * node_init = calloc(hash_set.size, sizeof(node_init[0]));
1979
 
1980
  struct ggml_init_params params = {
1981
  /* .mem_size = */ ggml_tensor_overhead()*hash_set.size + ggml_graph_overhead_custom(graph->size, false),