Browse Source

Make pack allocate aligned buffers for o_direct to be able to work

Samuel Thibault 11 years ago
parent
commit
5631781837

+ 5 - 3
src/core/disk_ops/disk_stdio.c

@@ -208,7 +208,8 @@ static int starpu_stdio_full_read(void *base STARPU_ATTRIBUTE_UNUSED, void * obj
 
 
 	STARPU_PTHREAD_MUTEX_UNLOCK(&tmp->mutex);
 	STARPU_PTHREAD_MUTEX_UNLOCK(&tmp->mutex);
 
 
-	*ptr = malloc(*size);
+	/* Alloc aligned buffer */
+	starpu_malloc_flags(ptr, *size, 0);
 	return starpu_stdio_read(base, obj, *ptr, 0, *size);
 	return starpu_stdio_read(base, obj, *ptr, 0, *size);
 }
 }
 
 
@@ -272,9 +273,10 @@ static int get_stdio_bandwidth_between_disk_and_main_ram(unsigned node)
 	double timing_slowness, timing_latency;
 	double timing_slowness, timing_latency;
 	double start;
 	double start;
 	double end;
 	double end;
+	char *buf;
 
 
 	srand (time (NULL));
 	srand (time (NULL));
-	char * buf = malloc(SIZE_DISK_MIN);
+	starpu_malloc_flags((void **) &buf, SIZE_DISK_MIN, 0);
 	STARPU_ASSERT(buf != NULL);
 	STARPU_ASSERT(buf != NULL);
 
 
 	/* allocate memory */
 	/* allocate memory */
@@ -309,7 +311,7 @@ static int get_stdio_bandwidth_between_disk_and_main_ram(unsigned node)
 	/* free memory */
 	/* free memory */
 	free(buf);
 	free(buf);
 
 
-	buf = malloc(sizeof(char));
+	starpu_malloc_flags((void**) &buf, sizeof(char), 0);
 	STARPU_ASSERT(buf != NULL);
 	STARPU_ASSERT(buf != NULL);
 
 
 	*buf = 0;
 	*buf = 0;

+ 6 - 5
src/core/disk_ops/unistd/disk_unistd_global.c

@@ -226,7 +226,8 @@ starpu_unistd_global_full_read(void *base STARPU_ATTRIBUTE_UNUSED, void * obj, v
 	*size = st.st_size;
 	*size = st.st_size;
 #endif
 #endif
 
 
-        *ptr = malloc(*size);
+	/* Allocated aligned buffer */
+	starpu_malloc_flags(ptr, *size, 0);
 	return starpu_unistd_global_read(base, obj, *ptr, 0, *size);
 	return starpu_unistd_global_read(base, obj, *ptr, 0, *size);
 }
 }
 
 
@@ -327,7 +328,7 @@ get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node)
 
 
 	srand (time (NULL)); 
 	srand (time (NULL)); 
 	char * buf;
 	char * buf;
-	starpu_malloc((void *) &buf, SIZE_DISK_MIN*sizeof(char));
+	starpu_malloc_flags((void *) &buf, SIZE_DISK_MIN, 0);
 	STARPU_ASSERT(buf != NULL);
 	STARPU_ASSERT(buf != NULL);
 	
 	
 	/* allocate memory */
 	/* allocate memory */
@@ -357,9 +358,9 @@ get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node)
 
 
 
 
 	/* free memory */
 	/* free memory */
-	starpu_free(buf);
+	starpu_free_flags(buf, SIZE_DISK_MIN, 0);
 
 
-	starpu_malloc((void *) &buf, MEM_SIZE*sizeof(char));
+	starpu_malloc_flags((void *) &buf, MEM_SIZE, 0);
 	STARPU_ASSERT(buf != NULL);
 	STARPU_ASSERT(buf != NULL);
 
 
 	/* Measure latency */
 	/* Measure latency */
@@ -380,7 +381,7 @@ get_unistd_global_bandwidth_between_disk_and_main_ram(unsigned node)
 	timing_latency = end - start;
 	timing_latency = end - start;
 
 
 	_starpu_disk_free(node, mem, SIZE_DISK_MIN);
 	_starpu_disk_free(node, mem, SIZE_DISK_MIN);
-	starpu_free(buf);
+	starpu_free_flags(buf, MEM_SIZE, 0);
 
 
 	_starpu_save_bandwidth_and_latency_disk((NITER/timing_slowness)*1000000, (NITER/timing_slowness)*1000000,
 	_starpu_save_bandwidth_and_latency_disk((NITER/timing_slowness)*1000000, (NITER/timing_slowness)*1000000,
 					       timing_latency/NITER, timing_latency/NITER, node);
 					       timing_latency/NITER, timing_latency/NITER, node);

+ 1 - 1
src/datawizard/interfaces/block_interface.c

@@ -227,7 +227,7 @@ static int pack_block_handle(starpu_data_handle_t handle, unsigned node, void **
 		uint32_t z, y;
 		uint32_t z, y;
 		char *block = (void *)block_interface->ptr;
 		char *block = (void *)block_interface->ptr;
 
 
-		*ptr = malloc(*count);
+		starpu_malloc_flags(ptr, *count, 0);
 
 
 		char *cur = *ptr;
 		char *cur = *ptr;
 		for(z=0 ; z<block_interface->nz ; z++)
 		for(z=0 ; z<block_interface->nz ; z++)

+ 1 - 1
src/datawizard/interfaces/data_interface.c

@@ -1064,7 +1064,7 @@ int starpu_data_unpack(starpu_data_handle_t handle, void *ptr, size_t count)
 	STARPU_ASSERT(handle->ops->unpack_data);
 	STARPU_ASSERT(handle->ops->unpack_data);
 	int ret;
 	int ret;
 	ret = handle->ops->unpack_data(handle, _starpu_memory_node_get_local_key(), ptr, count);
 	ret = handle->ops->unpack_data(handle, _starpu_memory_node_get_local_key(), ptr, count);
-	free(ptr);
+	starpu_free_flags(ptr, count, 0);
 	return ret;
 	return ret;
 }
 }
 
 

+ 1 - 1
src/datawizard/interfaces/matrix_interface.c

@@ -218,7 +218,7 @@ static int pack_matrix_handle(starpu_data_handle_t handle, unsigned node, void *
 		uint32_t y;
 		uint32_t y;
 		char *matrix = (void *)matrix_interface->ptr;
 		char *matrix = (void *)matrix_interface->ptr;
 
 
-		*ptr = malloc(*count);
+		starpu_malloc_flags(ptr, *count, 0);
 
 
 		char *cur = *ptr;
 		char *cur = *ptr;
 		for(y=0 ; y<matrix_interface->ny ; y++)
 		for(y=0 ; y<matrix_interface->ny ; y++)

+ 1 - 1
src/datawizard/interfaces/variable_interface.c

@@ -163,7 +163,7 @@ static int pack_variable_handle(starpu_data_handle_t handle, unsigned node, void
 
 
 	if (ptr != NULL)
 	if (ptr != NULL)
 	{
 	{
-		*ptr = malloc(*count);
+		starpu_malloc_flags(ptr, *count, 0);
 		memcpy(*ptr, (void*)variable_interface->ptr, variable_interface->elemsize);
 		memcpy(*ptr, (void*)variable_interface->ptr, variable_interface->elemsize);
 	}
 	}
 
 

+ 1 - 1
src/datawizard/interfaces/vector_interface.c

@@ -171,7 +171,7 @@ static int pack_vector_handle(starpu_data_handle_t handle, unsigned node, void *
 
 
 	if (ptr != NULL)
 	if (ptr != NULL)
 	{
 	{
-		*ptr = malloc(*count);
+		starpu_malloc_flags(ptr, *count, 0);
 		memcpy(*ptr, (void*)vector_interface->ptr, vector_interface->elemsize*vector_interface->nx);
 		memcpy(*ptr, (void*)vector_interface->ptr, vector_interface->elemsize*vector_interface->nx);
 	}
 	}