21 static int args_subdomain = 0;
26 args_subdomain = n_domain;
37 "control file for partitioner");
41 snprintf(ctrl_file_name,
sizeof(ctrl_file_name),
"%s", fname);
53 static int part_cont_type(
void) {
85 static int part_cont_method(
void) {
123 static int part_cont_domain(
void) {
160 static int part_cont_depth(
void) {
196 static int part_cont_ucd(
char *name,
size_t name_len) {
198 int token, is_print_ucd = 0;
222 snprintf(name, name_len,
"%s", p);
243 static int part_cont_contact(
void) {
285 static int part_cont_contact_owner(
void) {
294 "'=' required after 'CONTACT_OWNER'",
306 if (strcmp(p,
"MASTER") == 0) {
309 if (strcmp(p,
"SLAVE") == 0) {
316 "'CONTACT_OWNER' must be 'MASTER' or 'SLAVE'",
326 static int part_cont_part(
char *name,
size_t name_len) {
328 int token, is_print_part = 0;
352 snprintf(name, name_len,
"%s", p);
355 return is_print_part;
372 static int part_cont_rcb_divs(
int n_domain) {
376 for (i = 0; i < n_domain; i++) {
381 if ((base == 1) && (rest == 0))
return i;
382 if ((base == 0) && (rest == 1))
return 0;
383 if ((base == 1) && (rest > 0))
return -1;
407 "part_cont_rcb_opt",
cont_data->n_domain);
416 "part_cont_rcb_opt",
"cont_data->rcb_axis");
420 for (i = 0; i <
cont_data->n_rcb_div; i++) {
463 "part_cont_rcb_opt");
504 cont_data->n_domain = part_cont_domain();
516 if (
cont_data->is_print_ucd < 0)
return -1;
520 cont_data->contact = part_cont_contact();
527 if (
cont_data->is_print_part < 0)
return -1;
532 cont_data->contact_owner = part_cont_contact_owner();
533 if (
cont_data->contact_owner < 0)
return -1;
564 "part_cont_partition");
568 #ifndef HECMW_PART_WITH_METIS
588 "part_cont_partition");
598 "part_cont_partition");
624 "'CONTACT_OWNER=SLAVE' requires 'TYPE=NODE-BASED'");
626 "part_cont_partition");
639 "part_cont_partition");
648 "control file for partitioner");
650 "part_cont_partition");
677 if (strlen(ctrl_file_name) == 0) {
680 "control file name for partitioner is not set");
685 if ((fp = fopen(ctrl_file_name,
"r")) ==
NULL) {
687 "control file for partitioner");
706 if (part_cont_partition(
cont_data))
return -1;
716 "part_cont_partition");
778 "control file for partitioner");
#define HECMW_FILENAME_LEN
int HECMW_set_error(int errorno, const char *fmt,...)
int HECMW_log(int loglv, const char *fmt,...)
#define HECMW_malloc(size)
char * HECMW_strmsg(int msgno)
#define HECMW_PART_E_CTRL_DEPTH_NOEQ
#define HECMW_PART_E_FILE_CLOSE
#define HECMW_PART_E_CTRL_UCD_INVAL
#define HECMW_PART_METHOD_PMETIS
#define HECMW_PART_E_CTRL_UCD_NOEQ
#define HECMW_PART_E_CTRL_DOMAIN_POW
#define HECMW_PART_W_CTRL_RCB_MANY_DIR
#define HECMW_PART_RCB_Z_AXIS
#define HECMW_PART_RCB_Y_AXIS
#define HECMW_PART_E_CTRL_NODEF_KMETIS
#define HECMW_PART_E_CTRL_TYPE_INVAL
#define HECMW_PART_CONTACT_OWNER_MASTER
#define HECMW_PART_RCB_X_AXIS
#define HECMW_PART_E_CTRL_PART_TOO_LONG
#define HECMW_PART_E_TOO_LONG_FNAME
#define HECMW_PART_E_CTRL_RCB_FEW_DIR
#define HECMW_PART_E_CTRL_NO_METHOD
#define HECMW_PART_E_CTRL_PART_NOEQ
#define HECMW_PART_METHOD_RCB
#define HECMW_PART_E_CTRL_METHOD_NOEQ
#define HECMW_PART_E_CTRL_METHOD_INVAL
#define HECMW_PART_CONTACT_DEFAULT
#define HECMW_PART_E_INV_ARG
#define HECMW_PART_E_CTRL_NO_TYPE
#define HECMW_PART_E_CTRL_TYPE_NOEQ
#define HECMW_PART_E_CTRL_DOMAIN_NOEQ
#define HECMW_PART_TYPE_NODE_BASED
#define HECMW_PART_E_CTRL_RCB_NODIR
#define HECMW_PART_E_CTRL_RCB_INVAL
#define HECMW_PART_METHOD_KMETIS
#define HECMW_PART_E_CTRL_DOMAIN_INVAL
#define HECMW_PART_E_CTRL_DEPTH_INVAL
#define HECMW_PART_E_INVALID_TOKEN
#define HECMW_PART_E_CTRL_PART_INVAL
#define HECMW_PART_E_CTRL_NODEF_PMETIS
#define HECMW_PART_E_CTRL_CONTACT_INVAL
#define HECMW_PART_CONTACT_DISTRIBUTE
#define HECMW_PART_CONTACT_SIMPLE
#define HECMW_PART_E_INVALID_EOF
#define HECMW_PART_CONTACT_AGGREGATE
#define HECMW_PART_E_CTRL_UCD_TOO_LONG
#define HECMW_PART_METHOD_USER
#define HECMW_PART_E_CTRL_NO_DOMAIN
#define HECMW_PART_E_NULL_POINTER
#define HECMW_PART_W_CTRL_DIR_WORCB
#define HECMW_PART_CONTACT_OWNER_SLAVE
#define HECMW_PART_TYPE_ELEMENT_BASED
void HECMW_part_free_control(struct hecmw_part_cont_data *cont_data)
int HECMW_part_set_ctrl_file_name(char *fname)
struct hecmw_part_cont_data * HECMW_part_get_control(void)
int HECMW_part_set_subdomains(int n_domain)
#define HECMW_PARTLEX_V_DEFAULT
#define HECMW_PARTLEX_V_DISTRIBUTE
#define HECMW_PARTLEX_FILENAME
#define HECMW_PARTLEX_K_TYPE
#define HECMW_PARTLEX_K_DOMAIN
#define HECMW_PARTLEX_K_METHOD
#define HECMW_PARTLEX_V_RCB
#define HECMW_PARTLEX_K_UCD
#define HECMW_PARTLEX_V_PMETIS
#define HECMW_PARTLEX_INT
char * HECMW_partlex_get_text(void)
#define HECMW_PARTLEX_V_SIMPLE
#define HECMW_PARTLEX_K_PART
int HECMW_partlex_set_input(FILE *fp)
#define HECMW_PARTLEX_V_AGGREGATE
double HECMW_partlex_get_number(void)
#define HECMW_PARTLEX_V_NODE_BASED
#define HECMW_PARTLEX_NAME
#define HECMW_PARTLEX_K_CONTACT
#define HECMW_PARTLEX_K_DEPTH
#define HECMW_PARTLEX_H_PARTITION
#define HECMW_PARTLEX_V_KMETIS
int HECMW_partlex_next_token(void)
#define HECMW_PARTLEX_V_ELEMENT_BASED
#define HECMW_PARTLEX_V_USER
#define HECMW_assert(cond)