Browse Source

src/drivers/opencl/driver_opencl.c: properly set global size for the driver, and add it in worker name

Nathalie Furmento 11 years ago
parent
commit
e0ea9be964
1 changed files with 17 additions and 12 deletions
  1. 17 12
      src/drivers/opencl/driver_opencl.c

+ 17 - 12
src/drivers/opencl/driver_opencl.c

@@ -66,26 +66,30 @@ static void _starpu_opencl_limit_gpu_mem_if_needed(unsigned devid)
 	size_t STARPU_ATTRIBUTE_UNUSED to_waste = 0;
 	char name[30];
 
+#ifdef STARPU_USE_OPENCL
+	/* Request the size of the current device's memory */
+	cl_int err;
+	err = clGetDeviceInfo(devices[devid], CL_DEVICE_GLOBAL_MEM_SIZE, sizeof(totalGlobalMem), &totalGlobalMem, NULL);
+	if (STARPU_UNLIKELY(err != CL_SUCCESS))
+		STARPU_OPENCL_REPORT_ERROR(err);
+#endif
+
 	limit = starpu_get_env_number("STARPU_LIMIT_OPENCL_MEM");
 	if (limit == -1)
 	{
-	     sprintf(name, "STARPU_LIMIT_OPENCL_%u_MEM", devid);
-	     limit = starpu_get_env_number(name);
+		sprintf(name, "STARPU_LIMIT_OPENCL_%u_MEM", devid);
+		limit = starpu_get_env_number(name);
 	}
 	if (limit == -1)
 	{
-		return;
+		global_mem[devid] = totalGlobalMem;
+	}
+	else
+	{
+		global_mem[devid] = limit * 1024*1024;
 	}
-
-	global_mem[devid] = limit * 1024*1024;
 
 #ifdef STARPU_USE_OPENCL
-	/* Request the size of the current device's memory */
-	cl_int err;
-	err = clGetDeviceInfo(devices[devid], CL_DEVICE_GLOBAL_MEM_SIZE, sizeof(totalGlobalMem), &totalGlobalMem, NULL);
-	if (STARPU_UNLIKELY(err != CL_SUCCESS))
-		STARPU_OPENCL_REPORT_ERROR(err);
-
 	/* How much memory to waste ? */
 	to_waste = totalGlobalMem - global_mem[devid];
 #endif
@@ -608,6 +612,7 @@ int _starpu_opencl_driver_init(struct starpu_driver *d)
 	_starpu_memory_manager_set_global_memory_size(args->memory_node, _starpu_opencl_get_global_mem_size(devid));
 
 	args->status = STATUS_UNKNOWN;
+	float size = (float) global_mem[devid] / (1<<30);
 
 #ifdef STARPU_SIMGRID
 	const char *devname = "Simgrid";
@@ -616,7 +621,7 @@ int _starpu_opencl_driver_init(struct starpu_driver *d)
 	char devname[128];
 	_starpu_opencl_get_device_name(devid, devname, 128);
 #endif
-	snprintf(args->name, sizeof(args->name), "OpenCL %u (%s)", devid, devname);
+	snprintf(args->name, sizeof(args->name), "OpenCL %u (%s %.1f GiB)", devid, devname, size);
 	snprintf(args->short_name, sizeof(args->short_name), "OpenCL %u", devid);
 
 	_STARPU_DEBUG("OpenCL (%s) dev id %d thread is ready to run on CPU %d !\n", devname, devid, args->bindid);