|
@@ -369,11 +369,23 @@ static void measure_bandwidth_between_cpus_and_dev(int dev, struct dev_timing *d
|
|
|
* bank. */
|
|
|
const unsigned no_node_obj_was_found = (nnuma_nodes == 0);
|
|
|
|
|
|
- unsigned is_available_per_numa_node[nnuma_nodes];
|
|
|
- double dev_timing_htod_per_numa_node[nnuma_nodes];
|
|
|
- double dev_timing_dtoh_per_numa_node[nnuma_nodes];
|
|
|
+ unsigned *is_available_per_numa_node = NULL;
|
|
|
+ double *dev_timing_htod_per_numa_node = NULL;
|
|
|
+ double *dev_timing_dtoh_per_numa_node = NULL;
|
|
|
|
|
|
- memset(is_available_per_numa_node, 0, nnuma_nodes*sizeof(unsigned));
|
|
|
+ if (!no_node_obj_was_found)
|
|
|
+ {
|
|
|
+ is_available_per_numa_node = malloc(nnuma_nodes * sizeof(unsigned));
|
|
|
+ STARPU_ASSERT(is_available_per_numa_node);
|
|
|
+
|
|
|
+ dev_timing_htod_per_numa_node = malloc(nnuma_nodes * sizeof(double));
|
|
|
+ STARPU_ASSERT(dev_timing_htod_per_numa_node);
|
|
|
+
|
|
|
+ dev_timing_dtoh_per_numa_node = malloc(nnuma_nodes * sizeof(double));
|
|
|
+ STARPU_ASSERT(dev_timing_dtoh_per_numa_node);
|
|
|
+
|
|
|
+ memset(is_available_per_numa_node, 0, nnuma_nodes*sizeof(unsigned));
|
|
|
+ }
|
|
|
#endif
|
|
|
|
|
|
unsigned cpu;
|
|
@@ -424,6 +436,13 @@ static void measure_bandwidth_between_cpus_and_dev(int dev, struct dev_timing *d
|
|
|
}
|
|
|
#endif
|
|
|
}
|
|
|
+
|
|
|
+ if (!no_node_obj_was_found)
|
|
|
+ {
|
|
|
+ free(is_available_per_numa_node);
|
|
|
+ free(dev_timing_htod_per_numa_node);
|
|
|
+ free(dev_timing_dtoh_per_numa_node);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void measure_bandwidth_between_host_and_dev(int dev, double *dev_timing_htod, double *dev_timing_dtoh,
|