Browse Source

couldn't merge starpu_top.h, i just copied it

Andra Hugo 12 years ago
parent
commit
1450ca32c9
1 changed files with 218 additions and 0 deletions
  1. 218 0
      include/starpu_top.h

+ 218 - 0
include/starpu_top.h

@@ -0,0 +1,218 @@
+/* StarPU --- Runtime system for heterogeneous multicore architectures.
+ *
+ * Copyright (C) 2011 William Braik, Yann Courtois, Jean-Marie Couteyen, Anthony
+ * Roy
+ *
+ * StarPU is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or (at
+ * your option) any later version.
+ *
+ * StarPU is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * See the GNU Lesser General Public License in COPYING.LGPL for more details.
+ */
+
+#ifndef __STARPU_TOP_H__
+#define __STARPU_TOP_H__
+
+#include <starpu.h>
+#include <stdlib.h>
+#include <time.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+enum starpu_top_data_type
+{
+	STARPU_TOP_DATA_BOOLEAN,
+	STARPU_TOP_DATA_INTEGER,
+	STARPU_TOP_DATA_FLOAT
+};
+
+struct starpu_top_data
+{
+	unsigned int id;
+	const char* name;
+	int int_min_value;
+	int int_max_value;
+	double double_min_value;
+	double double_max_value;
+	int active;
+	enum starpu_top_data_type type;
+	struct starpu_top_data * next;
+};
+
+enum starpu_top_param_type
+{
+	STARPU_TOP_PARAM_BOOLEAN,
+	STARPU_TOP_PARAM_INTEGER,
+	STARPU_TOP_PARAM_FLOAT,
+	STARPU_TOP_PARAM_ENUM
+};
+
+struct starpu_top_param
+{
+	unsigned int id;
+	const char* name;
+	enum starpu_top_param_type type;
+	void* value;
+	char** enum_values; /* only for enum type can be NULL */
+	int nb_values;
+	void (*callback)(struct starpu_top_param*);
+	int int_min_value; /* only for integer type */
+	int int_max_value;
+	double double_min_value; /*only for double type */
+	double double_max_value;
+	struct starpu_top_param * next;
+};
+
+enum starpu_top_message_type
+{
+	TOP_TYPE_GO,
+	TOP_TYPE_SET,
+	TOP_TYPE_CONTINUE,
+	TOP_TYPE_ENABLE,
+	TOP_TYPE_DISABLE,
+	TOP_TYPE_DEBUG,
+	TOP_TYPE_UNKNOW
+};
+
+/*****************************************************
+****   Functions to call BEFORE initialisation   *****
+*****************************************************/
+/*
+ * This fonction register a data named data_name of type boolean
+ * If active=0, the value will NOT be displayed to user by default.
+ * Any other value will make the value displayed by default.
+*/
+struct starpu_top_data *starpu_top_add_data_boolean(const char* data_name,
+						    int active);
+/*
+ * This fonction register a data named data_name of type integer
+ * The minimum and maximum value will be usefull to define the scale in UI
+ * If active=0, the value will NOT be displayed to user by default.
+ * Any other value will make the value displayed by default.
+*/
+struct starpu_top_data * starpu_top_add_data_integer(const char* data_name,
+						     int minimum_value,
+						     int maximum_value,
+						     int active);
+/*
+ * This fonction register a data named data_name of type float
+ * The minimum and maximum value will be usefull to define the scale in UI
+ * If active=0, the value will NOT be displayed to user by default.
+ * Any other value will make the value displayed by default.
+*/
+struct starpu_top_data* starpu_top_add_data_float(const char* data_name,
+						  double minimum_value,
+						  double maximum_value,
+						  int active);
+
+/*
+ * This fonction register a parameter named parameter_name, of type boolean.
+ * The callback fonction will be called when the parameter is modified by UI,
+ * and can be null.
+*/
+struct starpu_top_param* starpu_top_register_parameter_boolean(const char* param_name,
+							       int* parameter_field,
+							       void (*callback)(struct starpu_top_param*));
+/*
+ * This fonction register a parameter named param_name, of type integer.
+ * Minimum and maximum value will be used to prevent user seting incorrect
+ * value.
+ * The callback fonction will be called when the parameter is modified by UI,
+ * and can be null.
+*/
+struct starpu_top_param* starpu_top_register_parameter_integer(const char* param_name,
+							       int* parameter_field,
+							       int minimum_value,
+							       int maximum_value,
+							       void (*callback)(struct starpu_top_param*));
+/*
+ * This fonction register a parameter named param_name, of type float.
+ * Minimum and maximum value will be used to prevent user seting incorrect
+ * value.
+ * The callback fonction will be called when the parameter is modified by UI,
+ * and can be null.
+*/
+struct starpu_top_param* starpu_top_register_parameter_float(const char* param_name,
+							     double* parameter_field,
+							     double minimum_value,
+							     double maximum_value,
+							     void (*callback)(struct starpu_top_param*));
+
+/*
+ * This fonction register a parameter named param_name, of type enum.
+ * Minimum and maximum value will be used to prevent user seting incorrect
+ * value.
+ * The callback fonction will be called when the parameter is modified by UI,
+ * and can be null.
+*/
+struct starpu_top_param* starpu_top_register_parameter_enum(const char* param_name,
+							    int* parameter_field,
+							    char** values,
+							    int nb_values,
+							    void (*callback)(struct starpu_top_param*));
+
+
+
+
+/****************************************************
+******************* Initialisation ******************
+*****************************************************/
+/*
+ * This function must be called when all parameters and
+ * data have been registered AND initialised (for parameters).
+ * This function will wait for a TOP to connect, send initialisation
+ * sentences, and wait for the GO message.
+ */
+void starpu_top_init_and_wait(const char* server_name);
+
+/****************************************************
+************ To call after initialisation************
+*****************************************************/
+
+/*
+ * This function should be called after every modification
+ * of a parameter from something other than starpu_top.
+ * This fonction notice UI that the configuration changed
+ */
+void starpu_top_update_parameter(const struct starpu_top_param* param);
+
+/*
+ * This functions update the value of the starpu_top_data on UI
+ */
+void starpu_top_update_data_boolean(const struct starpu_top_data* data,
+				    int value);
+void starpu_top_update_data_integer(const struct starpu_top_data* data,
+				    int value);
+void starpu_top_update_data_float(const struct starpu_top_data* data,
+				  double value);
+
+/*
+ * This functions are usefull in debug mode. The starpu developper doesn't need
+ * to check if the debug mode is active.
+ * This is checked by starpu_top itsefl.
+ *
+ * top_debug_log just send a message to display by UI
+ * top_debug_lock send a message and wait for a continue message from UI
+ * to return
+ *
+ * The lock (wich create a stop-point) should be called only by the main thread.
+ * Calling it from more than one thread is not supported.
+ */
+void starpu_top_debug_log(const char* message);
+void starpu_top_debug_lock(const char* message);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __STARPU_TOP_H__ */
+