Skip to content
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

Improve ksplit and affinity preserving mapping. #118

Merged
merged 1 commit into from
Apr 25, 2024
Merged

Conversation

samuelkgutierrez
Copy link
Member

  • Improve code in affinity preserving (AP) mapping algorithm.
  • Fix potential bug in AP mapper.
  • Update ksplit API.
  • Other minor coding Improvements.

* Improve code in affinity preserving (AP) mapping algorithm.
* Fix potential bug in AP mapper.
* Update ksplit API.
* Other minor coding Improvements.

Signed-off-by: Samuel K. Gutierrez <[email protected]>
@samuelkgutierrez samuelkgutierrez merged commit ead9e9e into master Apr 25, 2024
3 checks passed
@samuelkgutierrez samuelkgutierrez deleted the good branch April 25, 2024 18:45
@andreapiacentini
Copy link
Collaborator

AP = Affinity Preserving and Andrea Piacentini. Nomen Omen ! :-)

@samuelkgutierrez
Copy link
Member Author

I love it! Henceforth, I vote that the Affinity Preserving mapper be known as the Andrea Piacentini mapper, in your honor :). It has a nicer ring to it. I hope you are doing well, sir.

@samuelkgutierrez
Copy link
Member Author

@GuillaumeMercier, I think qvi_scope_ksplit() is ready for consideration in your threading work. Please see tests/test-mpi-scope-ksplit.cc as an example on how to use it.

@GuillaumeMercier
Copy link
Collaborator

@samuelkgutierrez : I will try this but I wonder why you changed the interface?

  1. The new one is very C++ oriented and we might want to keep a C one
  2. The former list of arguments was just perfect for my needs. Actually I think it could be called directly in my example which mean that you pretty much implemented qv_thread_scope_split(_at) (which is a good thing because I've been stuck on it for way too long now).

As for the current implementation:

  1. you use a qvi_scope_split_agg_s structure and not a qvi_scope_coll_data_s one. I wonder why since multiple processes may call this ksplit routine.
  2. You force QV_HW_OBJ_LAST in the splitagg_init call and I'm not sure why. Wouldn't be more flexible to pass an object type that is taken as an argument to the function (as with the former interface).

I'd like to discuss these points at today's meeting if that's OK with you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants