浏览代码

src,mpi/src: check return value for malloc/calloc/realloc functions

Nathalie Furmento 8 年之前
父节点
当前提交
0b198c56cc

+ 2 - 2
mpi/src/load_balancer/policy/data_movements_interface.c

@@ -91,8 +91,8 @@ int data_movements_reallocate_tables(starpu_data_handle_t handle, int size)
 
 	if (dm_interface->size)
 	{
-		dm_interface->tags = malloc(size*sizeof(int));
-		dm_interface->ranks = malloc(size*sizeof(int));
+		_STARPU_MPI_MALLOC(dm_interface->tags, size*sizeof(int));
+		_STARPU_MPI_MALLOC(dm_interface->ranks, size*sizeof(int));
 	}
 
 	return 0 ;

+ 7 - 9
mpi/src/load_balancer/policy/load_heat_propagation.c

@@ -259,7 +259,8 @@ static void update_data_ranks()
 				/* Save the fact that the data has been moved out of this node */
 				if (i == my_rank)
 				{
-					struct moved_data_entry *md = (struct moved_data_entry *)malloc(sizeof(struct moved_data_entry));
+					struct moved_data_entry *md;
+					_STARPU_MPI_MALLOC(md, sizeof(struct moved_data_entry));
 					md->handle = handle;
 					HASH_ADD_PTR(mdh, handle, md);
 				}
@@ -416,7 +417,7 @@ static int init_heat(struct starpu_mpi_lb_conf *itf)
 		return 1;
 	}
 
-	user_itf = malloc(sizeof(struct starpu_mpi_lb_conf));
+	_STARPU_MPI_MALLOC(user_itf, sizeof(struct starpu_mpi_lb_conf));
 	memcpy(user_itf, itf, sizeof(struct starpu_mpi_lb_conf));;
 
 	/* Get the neighbors of the local MPI node */
@@ -462,22 +463,19 @@ static int init_heat(struct starpu_mpi_lb_conf *itf)
 	 * step. */
 
 	/* Local load data */
-	load_data_handle = malloc(sizeof(starpu_data_handle_t));
-	memset(load_data_handle, 0, sizeof(starpu_data_handle_t));
+	_STARPU_MPI_CALLOC(load_data_handle, sizeof(starpu_data_handle_t));
 	load_data_data_register(load_data_handle, STARPU_MAIN_RAM, sleep_task_threshold, wakeup_ratio);
 
 	/* Copy of the local load data to enable parallel update of the load data
 	 * with communications to neighbor nodes */
-	load_data_handle_cpy = malloc(sizeof(starpu_data_handle_t));
-	memset(load_data_handle_cpy, 0, sizeof(starpu_data_handle_t));
+	_STARPU_MPI_CALLOC(load_data_handle_cpy, sizeof(starpu_data_handle_t));
 	void *local_interface = starpu_data_get_interface_on_node(*load_data_handle, STARPU_MAIN_RAM);
 	struct starpu_data_interface_ops *itf_load_data = starpu_data_get_interface_ops(*load_data_handle);
 	starpu_data_register(load_data_handle_cpy, STARPU_MAIN_RAM, local_interface, itf_load_data);
 	starpu_mpi_data_register(*load_data_handle_cpy, TAG_LOAD(my_rank), my_rank);
 
 	/* Remote load data */
-	neighbor_load_data_handles = malloc(nneighbors*sizeof(starpu_data_handle_t));
-	memset(neighbor_load_data_handles, 0, nneighbors*sizeof(starpu_data_handle_t));
+	_STARPU_MPI_CALLOC(neighbor_load_data_handles, nneighbors*sizeof(starpu_data_handle_t));
 	for (i = 0; i < nneighbors; i++)
 	{
 		load_data_data_register(&neighbor_load_data_handles[i], STARPU_MAIN_RAM, sleep_task_threshold, wakeup_ratio);
@@ -485,7 +483,7 @@ static int init_heat(struct starpu_mpi_lb_conf *itf)
 	}
 
 	/* Data movements handles */
-	data_movements_handles = malloc(world_size*sizeof(starpu_data_handle_t));
+	_STARPU_MPI_MALLOC(data_movements_handles, world_size*sizeof(starpu_data_handle_t));
 	for (i = 0; i < world_size; i++)
 	{
 		data_movements_data_register(&data_movements_handles[i], STARPU_MAIN_RAM, NULL, NULL, 0);

+ 2 - 2
src/core/topology.c

@@ -516,7 +516,7 @@ _starpu_allocate_topology_userdata(hwloc_obj_t obj)
 {
 	unsigned i;
 
-	obj->userdata = calloc(1, sizeof(struct _starpu_hwloc_userdata));
+	_STARPU_CALLOC(obj->userdata,  1, sizeof(struct _starpu_hwloc_userdata));
 	for (i = 0; i < obj->arity; i++)
 		_starpu_allocate_topology_userdata(obj->children[i]);
 }
@@ -1270,7 +1270,7 @@ _starpu_init_machine_config(struct _starpu_machine_config *config, int no_mp_con
 			if(topology->cuda_th_per_stream)
 			{
 				/* Just one worker in the set */
-				config->workers[worker_idx].set = (struct _starpu_worker_set *)calloc(1, sizeof(struct _starpu_worker_set));
+				_STARPU_CALLOC(config->workers[worker_idx].set, 1, sizeof(struct _starpu_worker_set));
 				config->workers[worker_idx].set->workers = &config->workers[worker_idx];
 				config->workers[worker_idx].set->nworkers = 1;
 			}

+ 2 - 2
src/datawizard/memalloc.c

@@ -1223,7 +1223,7 @@ void _starpu_request_mem_chunk_removal(starpu_data_handle_t handle, struct _star
 
 	/* Also keep the interface parameters and pointers, for later reuse
 	 * while detached, or freed */
-	mc->chunk_interface = malloc(mc->size_interface);
+	_STARPU_MALLOC(mc->chunk_interface, mc->size_interface);
 	memcpy(mc->chunk_interface, replicate->data_interface, mc->size_interface);
 
 	/* This memchunk doesn't have to do with the data any more. */
@@ -1271,7 +1271,7 @@ void _starpu_request_mem_chunk_removal(starpu_data_handle_t handle, struct _star
 		HASH_FIND(hh, mc_cache[node], &footprint, sizeof(footprint), entry);
 		if (!entry)
 		{
-			entry = malloc(sizeof(*entry));
+			_STARPU_MALLOC(entry, sizeof(*entry));
 			_starpu_mem_chunk_list_init(&entry->list);
 			entry->footprint = footprint;
 			HASH_ADD(hh, mc_cache[node], footprint, sizeof(entry->footprint), entry);

+ 1 - 1
src/debug/traces/starpu_fxt.c

@@ -1883,7 +1883,7 @@ static void handle_data_coordinates(struct fxt_ev_64 *ev, struct starpu_fxt_opti
 	unsigned i;
 
 	data->dimensions = dimensions;
-	data->dims = malloc(dimensions * sizeof(*data->dims));
+	_STARPU_MALLOC(data->dims, dimensions * sizeof(*data->dims));
 	for (i = 0; i < dimensions; i++)
 		data->dims[i] = ev->param[i+2];
 }

+ 6 - 4
src/drivers/gordon/driver_gordon.c

@@ -1,7 +1,7 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
  * Copyright (C) 2009-2015  Université de Bordeaux
- * Copyright (C) 2010, 2011, 2013, 2016  CNRS
+ * Copyright (C) 2010, 2011, 2013, 2016, 2017  CNRS
  * Copyright (C) 2011  Télécom-SudParis
  *
  * StarPU is free software; you can redistribute it and/or modify
@@ -157,8 +157,9 @@ static void starpu_to_gordon_buffers(struct _starpu_job *j, struct gordon_ppu_jo
 static struct gordon_task_wrapper_s *starpu_to_gordon_job(struct _starpu_job *j)
 {
 	struct gordon_ppu_job_s *gordon_job = gordon_alloc_jobs(1, 0);
-	struct gordon_task_wrapper_s *task_wrapper =
-				malloc(sizeof(struct gordon_task_wrapper_s));
+	struct gordon_task_wrapper_s *task_wrapper;
+
+	_STARPU_MALLOC(task_wrapper, sizeof(struct gordon_task_wrapper_s));
 
 	task_wrapper->gordon_job = gordon_job;
 	task_wrapper->j = j;
@@ -301,7 +302,8 @@ int inject_task_list(struct _starpu_job_list *list, struct _starpu_worker *worke
 
 
 
-	struct gordon_task_wrapper_s *task_wrapper = malloc(sizeof(struct gordon_task_wrapper_s));
+	struct gordon_task_wrapper_s *task_wrapper;
+	_STARPU_MALLOC(task_wrapper, sizeof(struct gordon_task_wrapper_s));
 	gordon_job_t *gordon_jobs = gordon_alloc_jobs(nvalids, 0);
 
 	task_wrapper->gordon_job = gordon_jobs;

+ 1 - 1
src/drivers/mic/driver_mic_sink.c

@@ -69,7 +69,7 @@ void _starpu_mic_sink_init(struct _starpu_mp_node *node)
 #error need to check the numbering
 #endif
 
-	//node->sink_sink_dt_connections = malloc(node->nb_mp_sinks * sizeof(union _starpu_mp_connection));
+	//_STARPU_MALLOC(node->sink_sink_dt_connections, node->nb_mp_sinks * sizeof(union _starpu_mp_connection));
 
 	//for (i = 0; i < (unsigned int)node->devid; ++i)
 	//	_starpu_mic_common_connect(&node->sink_sink_dt_connections[i].mic_endpoint,