Skip to content
This repository was archived by the owner on Sep 30, 2022. It is now read-only.

Conversation

@igor-ivanov
Copy link
Member

trunk: open-mpi/ompi#1542

:bot:assign: @hppritcha
:bot🏷️enhancement
:bot:milestone:v2.0.0

@jladd-mlnx please check

…ature)

Annex G:
Version 1.3
Added volatile to remotely accessible pointer argument in SHMEM_WAIT
See Sections 8.7.1
…ature)

Annex G:
Version 1.3
Added volatile to remotely accessible pointer argument in
SHMEM_LOCK
See Sections 8.9.1
…ead-only pointer argument)

Annex G:
Version 1.3
Added const to every read-only pointer argument
@jsquyres
Copy link
Member

@igor-ivanov We are feature complete for v2.0.0. Deferring to v2.1.0.

@jsquyres jsquyres modified the milestones: v2.1.0, v2.0.0 Apr 13, 2016
@mellanox-github
Copy link

Test PASSed.
See http://bgate.mellanox.com/jenkins/job/gh-ompi-release-pr/1510/ for details.

@hppritcha
Copy link
Member

@jsquyres isn't this an API change?

@jsquyres
Copy link
Member

@hppritcha and I discussed this at length on the phone, and we examined the code. Howard tells me that he talked to @jladd-mlnx a bunch about this PR this morning, and it's not just a simple new feature that should be deferred to v2.1.0.

This PR is more about trying to make future v2.x.y releases be backwards compatible to v2.0.0 in terms of the OSHMEM API. In particular, this PR adds const and volatile to a bunch of function params. const doesn't seem like it will be a problem (e.g., if an app compiles against vA without const and then runs with vB with const) -- the app would just not take advantage of an optimization that it could have. But volatile could actually be a problem (i.e., compile the app against vA without volatile and then run with vB with volatile).

This PR actually shows good faith and attempts to plan to be backwards compatible with a future v2.1.x release:

  • This PR essentially only adds volatile and const to the API params -- not the actual implementation.
  • A future v2.x.y (x>=1) could change the back-end implementation to actually use the const and/or volatile modifiers, and therefore apps compiled against v2.0.0 will still be ok.

Meaning: subject to @hppritcha's review questions about the code (he'll enter some shortly), this PR is, in principle, good to go for v2.0.0. I'll move the milestone back.

@jsquyres jsquyres modified the milestones: v2.0.0, v2.1.0 Apr 13, 2016
@gpaulsen
Copy link
Member

We'd like this in the 2.x branch, and assume that the risk to non OSHMEM codes would be low.

@jladd-mlnx
Copy link
Member

I reviewed the OSHMEM v1.3 specification side-by-side with this PR, and this looks complete. However, I would like at least one more set of eyes on it. It's a benign change, but absolutely critical, from a backwards compatibility perspective, that we get this right at 2.0.0. I'd like for our Principal Engineer, @yosefe to please review it very carefully.

I'm giving my 👍 contingent upon @yosefe 's 👍

SHMEM_TYPE_G(_int16, int16_t, shmemx)
SHMEM_TYPE_G(_int32, int32_t, shmemx)
SHMEM_TYPE_G(_int64, int64_t, shmemx)
SHMEM_TYPE_GX(_int16, int16_t, shmemx)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe should add constant to extensions as well?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@igor-ivanov let's change the extensions to use 'const' as well

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yosefe keep in mind that spec1.3 tells nothing about ext API.
Seems to be consistent reduce extensions API should be changed too. Right? (see
2e11e8f#diff-475037a625962c3ff765b9247497f712R241)

@yosefe
Copy link
Contributor

yosefe commented Apr 14, 2016

please make sure version constant (SHMEM_MINOR_VERSION) is update after all features are in

@sssharka
Copy link

This looks ok to me....

@jsquyres
Copy link
Member

Please also merge this on master before pushing to v2.0.0 (i.e., these kinds of code reviews and iterations should occur on master before pushing to release branches). I think you have a PR open on master for this issue: open-mpi/ompi#1542 -- probably should move review/iteration work over there, and then update this PR with the result of that.

@jladd-mlnx
Copy link
Member

Roger that, @jsquyres

@jladd-mlnx
Copy link
Member

@igor-ivanov please make the changes @yosefe recommended in master. @yosefe Let's move the review to the master.

@hppritcha
Copy link
Member

We'll pull this one in once PR open-mpi/ompi#1542 is merged in a cooks for a nite or two. Please not my comment on that PR about the SHMEM_MINOR_VERSION.

@hppritcha
Copy link
Member

spoke with @jladd-mlnx and he reminded me there are other things that need to go in to be SHMEM API 1.3 compliant - which will not go in till 2.1 release. So please ignore my comment.

openshmem.org specification does not mention about extension api
but there is an agreemnet to do these changes for related ex api too.
see
Annex G:
Version 1.3
Added const to every read-only pointer argument
@mellanox-github
Copy link

Test FAILed.
See http://bgate.mellanox.com/jenkins/job/gh-ompi-release-pr/1526/ for details.

@igor-ivanov
Copy link
Member Author

igor-ivanov commented Apr 18, 2016

this PR is updated to meet related PR in trunk (minor version was not updated)
bot:retest

@mellanox-github
Copy link

Test PASSed.
See http://bgate.mellanox.com/jenkins/job/gh-ompi-release-pr/1527/ for details.

@mellanox-github
Copy link

Test PASSed.
See http://bgate.mellanox.com/jenkins/job/gh-ompi-release-pr/1528/ for details.

@jsquyres
Copy link
Member

Looks like this is done on master (open-mpi/ompi#1542), so I think we're good to go here.

@jsquyres jsquyres merged commit 3d7c4a8 into open-mpi:v2.x Apr 18, 2016
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants