From c83d40419a725ecb82ad41b4d8caec56035eba2f Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Wed, 19 Jan 2011 02:04:38 +0000 Subject: [PATCH] add slurmdb_setup_cluster_name_dims(void) function to supplement slurmdb_setup_cluster_dims(void) --- src/common/hostlist.c | 44 ++++++++++++++++++------------------ src/common/working_cluster.c | 13 +++++++++++ src/common/working_cluster.h | 4 ++++ 3 files changed, 39 insertions(+), 22 deletions(-) diff --git a/src/common/hostlist.c b/src/common/hostlist.c index f54c4f25731..261b7f7861f 100644 --- a/src/common/hostlist.c +++ b/src/common/hostlist.c @@ -595,7 +595,7 @@ static int _width_equiv(unsigned long n, int *wn, unsigned long m, int *wm) */ static int host_prefix_end(const char *hostname) { - int idx, dims = slurmdb_setup_cluster_dims(); + int idx, dims = slurmdb_setup_cluster_name_dims(); assert(hostname != NULL); @@ -622,7 +622,7 @@ static hostname_t hostname_create(const char *hostname) hostname_t hn = NULL; char *p = '\0'; int idx = 0; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); int hostlist_base = hostlist_get_base(dims); assert(hostname != NULL); @@ -931,7 +931,7 @@ static char *hostrange_pop(hostrange_t hr) { size_t size = 0; char *host = NULL; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); assert(hr != NULL); @@ -972,7 +972,7 @@ static char *hostrange_shift(hostrange_t hr) { size_t size = 0; char *host = NULL; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); assert(hr != NULL); @@ -1139,7 +1139,7 @@ hostrange_to_string(hostrange_t hr, size_t n, char *buf, char *separator) unsigned long i; int ret, len = 0; char sep = separator == NULL ? ',' : separator[0]; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); if (n == 0) return 0; @@ -1190,7 +1190,7 @@ truncated: static size_t hostrange_numstr(hostrange_t hr, size_t n, char *buf) { int len = 0; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); assert(buf != NULL); assert(hr != NULL); @@ -1454,7 +1454,7 @@ hostlist_t _hostlist_create(const char *hostlist, char *sep, char *r_op) if (hostlist == NULL) return new; - if(slurmdb_setup_cluster_dims() > 1) + if (slurmdb_setup_cluster_name_dims() > 1) fatal("WANT_RECKLESS_HOSTRANGE_EXPANSION does not " "work on multi-dimensional systems!!!!"); hostlist_base = hostlist_get_base(1); @@ -1593,7 +1593,7 @@ hostlist_t _hostlist_create(const char *hostlist, char *sep, char *r_op) static int _parse_box_range(char *str, struct _range *ranges, int len, int *count) { - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); int start[dims], end[dims], pos[dims]; char coord[dims+1]; @@ -1644,7 +1644,7 @@ static int _parse_single_range(const char *str, struct _range *range) { char *p, *q; char *orig = strdup(str); - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); int hostlist_base = hostlist_get_base(dims); if (!orig) @@ -1709,7 +1709,7 @@ static int _parse_range_list(char *str, struct _range *ranges, int len) { char *p; int count = 0; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); while (str) { if (count == len) { @@ -2164,7 +2164,7 @@ _hostrange_string(hostrange_t hr, int depth) { char buf[MAXHOSTNAMELEN + 16]; const int size = sizeof(buf); - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); int len = snprintf(buf, size, "%s", hr->prefix); if (len < 0 || len + dims >= size) @@ -2555,7 +2555,7 @@ static int _tell_if_used(int dim, int curr, { int rc = 1; int start_curr = curr; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); /* int i; */ /* char coord[dims+1]; */ /* memset(coord, 0, sizeof(coord)); */ @@ -2624,7 +2624,7 @@ end_it: static int _get_next_box(int *start, int *end) { - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); int hostlist_base = hostlist_get_base(dims); static int orig_grid_end[HIGHEST_DIMENSIONS]; static int last[HIGHEST_DIMENSIONS]; @@ -2719,7 +2719,7 @@ static int _get_boxes(char *buf, int max_len) { int len=0, i; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); int curr_min[dims], curr_max[dims]; /* char coord[dims+1]; */ /* char coord2[dims+1]; */ @@ -2784,7 +2784,7 @@ _set_box_in_grid(int dim, int curr, int *start, { int i; int start_curr = curr; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); for (i=start[dim]; i<=end[dim]; i++) { curr = start_curr + (i * offset[dim]); @@ -2805,7 +2805,7 @@ static int _add_box_ranges(int dim, int curr, { int i; int start_curr = curr; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); for (pos[dim]=start[dim]; pos[dim]<=end[dim]; pos[dim]++) { curr = start_curr + (pos[dim] * offset[dim]); @@ -2851,7 +2851,7 @@ static void _set_min_max_of_grid(int dim, int curr, { int i; int start_curr = curr; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); for (pos[dim]=start[dim]; pos[dim]<=end[dim]; pos[dim]++) { curr = start_curr + (pos[dim] * offset[dim]); @@ -2871,7 +2871,7 @@ static void _set_min_max_of_grid(int dim, int curr, static void _set_grid(unsigned long start, unsigned long end) { - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); int sent_start[dims], sent_end[dims]; int i; /* char coord[dims+1]; */ @@ -2899,7 +2899,7 @@ _test_box_in_grid(int dim, int curr, { int i; int start_curr = curr; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); for (i=start[dim]; i<=end[dim]; i++) { curr = start_curr + (i * offset[dim]); @@ -2919,7 +2919,7 @@ static bool _test_box(int *start, int *end) { int i; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); if(!memcmp(start, end, dim_grid_size)) /* single node */ return false; @@ -2959,7 +2959,7 @@ ssize_t hostlist_ranged_string(hostlist_t hl, size_t n, char *buf) int len = 0; int truncated = 0; bool box = false; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); int hostlist_base = hostlist_get_base(dims); DEF_TIMERS; @@ -3175,7 +3175,7 @@ char *hostlist_next(hostlist_iterator_t i) char buf[MAXHOSTNAMELEN + 16]; const int size = sizeof(buf); int len = 0; - int dims = slurmdb_setup_cluster_dims(); + int dims = slurmdb_setup_cluster_name_dims(); assert(i != NULL); assert(i->magic == HOSTLIST_MAGIC); diff --git a/src/common/working_cluster.c b/src/common/working_cluster.c index bc97d6edbaa..7395ef0169b 100644 --- a/src/common/working_cluster.c +++ b/src/common/working_cluster.c @@ -60,6 +60,19 @@ extern uint16_t slurmdb_setup_cluster_dims(void) working_cluster_rec->dimensions : SYSTEM_DIMENSIONS; } +extern uint16_t slurmdb_setup_cluster_name_dims(void) +{ + if (working_cluster_rec) { + if (working_cluster_rec->flags & CLUSTER_FLAG_CRAYXT) + return 1; + return working_cluster_rec->dimensions; + } +#ifdef HAVE_NATIVE_CRAY + return 1; +#endif + return SYSTEM_DIMENSIONS; +} + extern uint32_t slurmdb_setup_cluster_flags(void) { static uint32_t cluster_flags = NO_VAL; diff --git a/src/common/working_cluster.h b/src/common/working_cluster.h index 2bb2b07971f..b0bac1a7bf1 100644 --- a/src/common/working_cluster.h +++ b/src/common/working_cluster.h @@ -41,6 +41,10 @@ /* Return the number of dimensions in the current working cluster */ extern uint16_t slurmdb_setup_cluster_dims(void); +/* Return the number of digits required in the numeric suffix of hostnames + * in the current working cluster */ +extern uint16_t slurmdb_setup_cluster_name_dims(void); + /* Return the architecture flags in the current working cluster */ extern uint32_t slurmdb_setup_cluster_flags(void); -- GitLab