-
Notifications
You must be signed in to change notification settings - Fork 118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extend the PMIx_Tool support #122
Conversation
@dsolt @artpol84 This has the required changes to support the tool extensions. It includes: Replace enum definitions with Per telecon, redefine the rank as uint32 - give it a dedicated typedef in case there are any future changes. Add new pmix_query_t data type and modify PMIx_Query API to accept it. Add pack/unpack support for persistence, scope, range, command, info directives, data array, and query data types. All compiles - pack/unpack support for data array is not complete, but header files appear complete Please provide any comments/suggestions re the pmix_common.h header changes. |
Refs pmix/RFCs#10 |
@artpol84 Looks like there is some cross-build contamination going on:
This file is from another PR and has nothing to do with this one. |
49fa3a2
to
23ee156
Compare
bot:retest |
300b6c0
to
f1d6808
Compare
I notice that when calling PMIx_Query_info and I want to query PMIX_QUERY_NAMESPACE, I am really querying a key, but I pass in an info because that is what PMIx_Query_Info takes. However, I do not bother to set up the value portion of this since I expect the value to get filled in by the call, however this leads to pack failures because PMIx_Query_Info tries to send my info with uninitialized value portion. Any thoughts on this? Am I just being lazy and I should initialize the value field's type at least or should pack not complain if the type is garbage? I don't think PMIx_Query_info can fill in the value for me because maybe there are some types of queries (someday) where the PMIx_Info is both an IN and and OUT parameter (mmmm... hungry for IN-n-OUT burger now) |
Oh, that is cruel - we don’t have an IN-n-OUT here, and I’ve sorely missed them. Positive thing is that they opened one about a 3hr drive away, and my wife an I are planning a trip just for lunch! That was one motivation for dumping the blocking version of this call. I'd suggest transitioning to the non-blocking version to eliminate this problem. Please review/approve this RFC so we can do so! 😄 |
I am using the non-blocking version of the call right now, but either way one will have this problem of packing these PMIx_Info's. Doing some more testing today and then will approve. We got in-n-out in TX a few years ago... its is awesome. |
The type of the returned info is set by the library - you only pass in directives and keys stipulating what should be found. |
Ok, well then I think it is a problem as is because it tries to pack the Info to send up to the server and fails if the type is garbage. I don't know if we have to fix this now though. |
I really don't understand - are you talking about directives that modify the queries? If so, then yes, of course you have to provide the type. But if you are talking about the keys - there is no "type", it's just a char**. |
Ah, nevermind. I was looking at my copy which still had the old API for query. The new Query API uses pmix_query_t's instead of PMIx_Info's. Ok, also had a chance to review this code more carefully and it looks good to me. |
Oh I forgot to ask, what is the reason for going from enums to pound defines on many things? By the way, I skimmed the bufferops code pretty lightly. That buffer packing/unpacking code is pretty dull, but didn't notice anything that looked wrong. |
If we use enums, then 3rd party adopters cannot extend the definitions. So if someone wanted, for example, to support a scope that wasn't in our definitions, they couldn't do it without modifying the library. Using pound defines allows someone to pass any value - the library isn't looking at it anyway. We just pass it thru. So if the RM can understand it, then it's okay. On another system, the user would just get a "not supported" error, but that's also okay. |
43dd6ee
to
90fc19e
Compare
…the corresponding buffer ops Per telecon, redefine the rank as uint32 - give it a dedicated typedef in case there are any future changes. Add pack/unpack support for persistence, scope, range, command, info directives, data array, and query data types. All compiles - pack/unpack support for data array is not complete, but header files appear complete Complete basic operations - passing simple tests Debug it all - passes tests! Add the PMIx_Log function for logging data Implement support for system-level tool connections, and for user-specified selection of system vs allocation level tool connections Add PMIx_Log attributes Add PMIx_Log keys. Correct type of some rank-related values to pmix_rank_t Update dstor interfaces to use pmix_rank_t Silence Coverity warnings Remove build product Remove build product Fix double-free of event base Fix duplicate event base free in client Cleanup name conflicts with OMPI and uninit vars Rename symbol
Initial work on the corresponding buffer ops