I introduced SLURM_PMI_KVS_NO_DUP_KEYS to improve performance of the
SLURM PMI implementation. As a "key", the key in KVS is unique, which
means if duplicate key is found the value will be replaced. The default
implementation checks for duplicate keys and replace the value. If no
duplicate key exists, the key/value will be appended.

In MPI implementations, there will be no duplicate keys put into the KVS
usually. Hence the checking for duplicate keys can be skipped. That's
the motivation of the environment SLURM_PMI_KVS_NO_DUP_KEYS: for MPI to
tell PMI that there will be no duplicate keys at all.

在 2014-02-14五的 11:14 -0800,David Bigagli写道:
> Hi,
>     by default PMI does not allow duplicate keys, if duplicate key is 
> found its value is overwritten, so the default behaviour of the code is 
> correct. The variable name needs to change to SLURM_PMI_KVS_ALLOW_DUP_KEYS.
> 
> On 02/11/2014 10:37 PM, Artem Polyakov wrote:
> > Hello, all.
> >
> > I have a question about SLURM's libpmi. I am currently adopting DMTCP
> > project (checkpointer) to support SLURM. Currently I am working on PMI
> > support. And looking into _kvs_put function I have the following question:
> >
> > for (i=0; i<kvs_rec_cnt; i++) {
> > if (strncmp(kvs_recs[i].kvs_name, kvsname, PMI_MAX_KVSNAME_LEN))
> > continue;
> > *if (pmi_kvs_no_dup_keys) { // Shouldn't we chenge it to **if
> > (!pmi_kvs_no_dup_keys) *
> > j = kvs_recs[i].kvs_cnt;
> > goto no_dup;
> > }
> > /* search for duplicate key */
> > for (j=0; j<kvs_recs[i].kvs_cnt; j++) {
> > if (strncmp(kvs_recs[i].kvs_keys[j], key,
> > PMI_MAX_KEY_LEN))
> > continue;
> > ...
> > goto fini;
> > }
> > no_dup:
> > /* create new key */
> > kvs_recs[i].kvs_cnt++;
> > kvs_recs[i].kvs_key_states = realloc(kvs_recs[i].kvs_key_states,
> > ...
> > goto fini;
> > }
> >
> > In current logic (if I understand everything correctly) if
> > pmi_kvs_no_dup_keys is enabled we go to no_dup and create new key and do
> > not check this key existence. Otherwise it will search for a duplicated
> > key and rewrite it.
> >
> > Sorry if this is my misunderstanding of the code.
> >
> > --
> > С Уважением, Поляков Артем Юрьевич
> > Best regards, Artem Y. Polyakov
> 

Reply via email to