/* * cl_variables.h * * Created on: 01/12/2014 * Author: Pedro */ #ifndef SRC_KERNELS_CL_VARIABLES_H_ #define SRC_KERNELS_CL_VARIABLES_H_ #ifndef __OPENCL_VERSION__ #include "CL/cl.h" #include "CL/cl_platform.h" #endif #include "../domains.h" #include "../config.h" #if CL_D_TYPE == CL_BITMAP // constant among all the exploration process for bitmaps struct cl_var_bitmap_ { cl_uint c_idx; // index of vs_cs_index where this variable first constraint id is cl_ushort n_vals; // number of values int his variable domain, before ss creation cl_ushort n_cs; // Number of constraints that constrain this variable cl_char to_label; // 1 if this variable is set for being labeled and 0 if not cl_char expanded; // 1 if this variable was fully expanded during sub-search space creation, or 0 if not cl_char boolean; // 1 if this variable is a boolean or 0 if not #if FZN_SEQ || CL_FZN_SEQ cl_char label_h; // Labeling heuristic for which this variables may be selected in FlatZinc models cl_char assign_h; // Assign heuristic for which this variables may be selected in FlatZinc models #endif }; // used when propagating the current ss for bitmaps struct cl_var_p_bitmap_ { cl_bitmap prop_d; // variable domain cl_ushort n_vals; // current number of values cl_ushort min; // current minimum value cl_ushort max; // current maximum value cl_char to_prop; // 1 if this variable is set for being propagated and 0 if not cl_char boolean; // 1 if this variable is a boolean or 0 if not }; typedef struct cl_var_bitmap_ cl_var_bitmap; typedef struct cl_var_p_bitmap_ cl_var_p_bitmap; #endif #if CL_D_TYPE == CL_INTERVAL || !__OPENCL_VERSION__ // constant among all the exploration process for intervals struct cl_var_interval_ { interval domain; // variable domain cl_uint c_idx; // index of vs_cs_index where this variable first constraint id is cl_ushort n_vals; // number of values in the propagated domain cl_ushort n_cs; // Number of constraints that constrain this variable cl_char to_label; // 1 if this variable is set for being labeled and 0 if not cl_char expanded; // 1 if this variable was fully expanded during sub-search space creation, or 0 if not cl_char boolean; // 1 if this variable is a boolean or 0 if not #if FZN_SEQ || CL_FZN_SEQ cl_char label_h; // Labeling heuristic for which this variables may be selected in FlatZinc models cl_char assign_h; // Assign heuristic for which this variables may be selected in FlatZinc models #endif }; // used when propagating the current ss for intervals struct cl_var_p_interval_ { interval prop_d; // variable domain cl_char to_prop; // 1 if this variable is set for being propagated and 0 if not cl_char boolean; // 1 if this variable is a boolean or 0 if not }; typedef struct cl_var_interval_ cl_var_interval; typedef struct cl_var_p_interval_ cl_var_p_interval; #endif #endif /* SRC_KERNELS_CL_VARIABLES_H_ */