Thanks, Ralph,

So, if there are no other comments,
I will commit it on Sunday.

Thanks,
Lenny.

On Fri, Jun 26, 2009 at 6:37 AM, Ralph Castain <r...@open-mpi.org> wrote:

> Forget that comment, Lenny - I think this actually looks fine. The relative
> notation currently is only used in the allocators, not the mappers, so this
> is fine.
>
> Sorry for the confusion.
> Ralph
>
>
> On Jun 25, 2009, at 2:50 PM, Ralph Castain wrote:
>
> Question: for all other mappers, the relative rank is given with respect to
>> the allocation. It looks here like you are doing it relative to the list of
>> nodes, which is compiled from the allocation passed through hostfile and
>> -host options.
>>
>> Do you want to conform to the behavior of the other mappers? Or do
>> something different here?
>>
>> On Jun 25, 2009, at 10:10 AM, Lenny Verkhovsky wrote:
>>
>> Hi,
>>> Proposed small patch to extend current rankfile syntax to be compliant
>>> with orte_hosts syntax
>>> making it possible to claim relative hosts from the hostfile/scheduler
>>> by using +n# hostname, where  0 <= # < np
>>> ex:
>>> cat ~/work/svn/hpc/dev/test/Rankfile/rankfile
>>> rank 0=+n0 slot=0
>>> rank 1=+n0 slot=1
>>> rank 2=+n1 slot=2
>>> rank 3=+n1 slot=1
>>> for your review and blessing before I commit it to the trunk.
>>> I also ask to add it to 1.3 branch.
>>> thanks,
>>> Lenny.
>>>
>>>
>>> Index: orte/mca/rmaps/rank_file/help-rmaps_rank_file.txt
>>> ===================================================================
>>> --- orte/mca/rmaps/rank_file/help-rmaps_rank_file.txt (revision 21529)
>>> +++ orte/mca/rmaps/rank_file/help-rmaps_rank_file.txt (working copy)
>>> @@ -56,6 +56,9 @@
>>> Please review your rank-slot assignments and your host allocation to
>>> ensure
>>> a proper match.
>>>
>>> +[bad-index]
>>> +Rankfile claimed host %s by index that is bigger than number of
>>> allocated hosts.
>>> +
>>> [orte-rmaps-rf:alloc-error]
>>> There are not enough slots available in the system to satisfy the %d
>>> slots
>>> that were requested by the application:
>>> Index: orte/mca/rmaps/rank_file/rmaps_rank_file_lex.h
>>> ===================================================================
>>> --- orte/mca/rmaps/rank_file/rmaps_rank_file_lex.h (revision 21529)
>>> +++ orte/mca/rmaps/rank_file/rmaps_rank_file_lex.h (working copy)
>>> @@ -75,6 +75,7 @@
>>> #define ORTE_RANKFILE_NEWLINE 13
>>> #define ORTE_RANKFILE_IPV6 14
>>> #define ORTE_RANKFILE_SLOT 15
>>> +#define ORTE_RANKFILE_RELATIVE 16
>>>
>>> #if defined(c_plusplus) || defined(__cplusplus)
>>> }
>>> Index: orte/mca/rmaps/rank_file/rmaps_rank_file.c
>>> ===================================================================
>>> --- orte/mca/rmaps/rank_file/rmaps_rank_file.c (revision 21529)
>>> +++ orte/mca/rmaps/rank_file/rmaps_rank_file.c (working copy)
>>> @@ -273,11 +273,11 @@
>>>  orte_vpid_t total_procs;
>>>  opal_list_t node_list;
>>>  opal_list_item_t *item;
>>> - orte_node_t *node, *nd;
>>> + orte_node_t *node, *nd, *root_node;
>>>  orte_vpid_t rank, vpid_start;
>>>  orte_std_cntr_t num_nodes, num_slots;
>>>  orte_rmaps_rank_file_map_t *rfmap;
>>> - orte_std_cntr_t slots_per_node;
>>> + orte_std_cntr_t slots_per_node, relative_index, tmp_cnt;
>>>  int rc;
>>>
>>>  /* convenience def */
>>> @@ -411,7 +411,25 @@
>>>  0 == strcmp(nd->name, rfmap->node_name)) {
>>>  node = nd;
>>>  break;
>>> - }
>>> + } else if (NULL != rfmap->node_name &&
>>> + (('+' == rfmap->node_name[0]) &&
>>> + (('n' == rfmap->node_name[1]) ||
>>> + ('N' == rfmap->node_name[1])))) {
>>> +
>>> + relative_index=atoi(strtok(rfmap->node_name,"+n"));
>>> + if ( relative_index >= opal_list_get_size (&node_list) || ( 0 >
>>> relative_index)){
>>> + orte_show_help("help-rmaps_rank_file.txt","bad-index",
>>> true,rfmap->node_name);
>>> + ORTE_ERROR_LOG(ORTE_ERR_BAD_PARAM);
>>> + return ORTE_ERR_BAD_PARAM;
>>> + }
>>> + root_node = (orte_node_t*) opal_list_get_first(&node_list);
>>> + for(tmp_cnt=0; tmp_cnt<relative_index; tmp_cnt++) {
>>> + root_node = (orte_node_t*) opal_list_get_next(root_node);
>>> + }
>>> + node = root_node;
>>> + break;
>>> + }
>>> +
>>>  }
>>>  if (NULL == node) {
>>>  orte_show_help("help-rmaps_rank_file.txt","bad-host", true,
>>> rfmap->node_name);
>>> @@ -631,6 +649,7 @@
>>>  case ORTE_RANKFILE_IPV6:
>>>  case ORTE_RANKFILE_STRING:
>>>  case ORTE_RANKFILE_INT:
>>> + case ORTE_RANKFILE_RELATIVE:
>>>  if(ORTE_RANKFILE_INT == token) {
>>>  sprintf(buff,"%d", orte_rmaps_rank_file_value.ival);
>>>  value = buff;
>>> Index: orte/mca/rmaps/rank_file/rmaps_rank_file_lex.l
>>> ===================================================================
>>> --- orte/mca/rmaps/rank_file/rmaps_rank_file_lex.l (revision 21529)
>>> +++ orte/mca/rmaps/rank_file/rmaps_rank_file_lex.l (working copy)
>>> @@ -111,6 +111,9 @@
>>>  orte_rmaps_rank_file_value.sval = yytext;
>>>  return ORTE_RANKFILE_HOSTNAME; }
>>>
>>> +\+n[0-9]+ { orte_rmaps_rank_file_value.sval = yytext;
>>> + return ORTE_RANKFILE_RELATIVE; }
>>> +
>>> . { orte_rmaps_rank_file_value.sval = yytext;
>>>  return ORTE_RANKFILE_ERROR; }
>>>
>>>
>>> <rankfile.patch>_______________________________________________
>>> devel mailing list
>>> de...@open-mpi.org
>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>
>>
>>
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>

Reply via email to