-
Notifications
You must be signed in to change notification settings - Fork 902
mpool/rcache rewrite #1118
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
mpool/rcache rewrite #1118
Conversation
49e3584
to
b8ed89d
Compare
@jsquyres, @bosilca, @hppritcha Comments on the new interfaces are welcome. Let me know soon if you see any problems or things that can be improved. This is targeted for 2.0.0. |
Hi Nathan, Thanks for putting this together. I tested this out. It worked for the MPI_Alloc_mem. I will let you know if I find any other issues. Thanks |
b8ed89d
to
43412e7
Compare
Fixed the red-black tree issue. Still trying to track down the mellanox issue. |
43412e7
to
f114730
Compare
:bot:retest Can't reproduce the Mellanox Jenkins failure. |
:bot:retest: |
d2bca24
to
2625f80
Compare
PR got screwed up on rebase. Fixing. |
2625f80
to
8d40a02
Compare
@hjelmn Any idea what's going wrong at btl_openib_endpoint.c:356? |
Assuming this isn't addressing a bug in the existing mpool/rcache implementation, I think this is too large a change to go in to 2.0 at this point. It looks like a good candidate for 2.1. |
65a7312
to
484f04d
Compare
@miked-mellanox I can't tell what in the Mellanox Jenkins failed. |
:bot:retest: |
2 similar comments
:bot:retest: |
:bot:retest: |
@miked-mellanox This looks like a false failure. When I run your env_mpi by hand with valgrind I get this:
If I include unistd.h and use __environ instead the test program works. Looks like this happens because the values of env and __environ differ if setenv or putenv is called anywere in the program. You will have to drop the usage of the non-standard three-argument main. |
484f04d
to
8efdc08
Compare
Rebased off master. |
1d15e9a
to
72b9947
Compare
:bot:retest: |
2 similar comments
:bot:retest: |
:bot:retest: |
:bot:retest: |
1 similar comment
:bot:retest: |
6614192
to
fb833e8
Compare
@sjeaugey Thanks for running MTT on the branch. I was able to fix what I think was causing the problems. Also, I making an attempt to put CUDA support in vader. Should have something ready this week. |
@hjelmn I would suggest you don't do it based on current SM support. We have a big PR coming with a significantly better approach (and also better performance). Would you be interested in attempting to add support in vader there ? |
@bosilca Sure, I will wait. Once I get positive MTT results I will commit this PR. I will wait until your PR to look at smcuda. |
@sjeaugey Looks like the updated PR wasn't run last night. Can you check what revision was run? |
@hjelmn I don't understand why it didn't run. Running it manually right now. |
@sjeaugey Any results? If this is working I want to get it merged in as soon as possible. |
@sjeaugey Looks like it ran last night and it looks clean. I will merge this later today. |
:bot:retest |
@hjelmn Indeed it looks cleaner, except for one cuda test. However, I noticed yesterday that when running without any --mca btl argument (in fact when running with the default configuration) I got a segmentation fault on all the tests I tried. I don't know what we're using in this case (yalla?) but there seem to be an issue. |
Might be worth adding a -mca pml_base_verbose 100 to see what pml is being selected. |
@sjeaugey Found the bug that is causing the MTT failure. Will push after some testing. |
@sjeaugey Ok, should be good for real now. |
This commit rewrites both the mpool and rcache frameworks. Summary of changes: - Before this change a significant portion of the rcache functionality lived in mpool components. This meant that it was impossible to add a new memory pool to use with rdma networks (ugni, openib, etc) without duplicating the functionality of an existing mpool component. All the registration functionality has been removed from the mpool and placed in the rcache framework. - All registration cache mpools components (udreg, grdma, gpusm, rgpusm) have been changed to rcache components. rcaches are allocated and released in the same way mpool components were. - It is now valid to pass NULL as the resources argument when creating an rcache. At this time the gpusm and rgpusm components support this. All other rcache components require non-NULL resources. - A new mpool component has been added: hugepage. This component supports huge page allocations on linux. - Memory pools are now allocated using "hints". Each mpool component is queried with the hints and returns a priority. The current hints supported are NULL (uses posix_memalign/malloc), page_size=x (huge page mpool), and mpool=x. - The sm mpool has been moved to common/sm. This reflects that the sm mpool is specialized and not meant for any general allocations. This mpool may be moved back into the mpool framework if there is any objection. - The opal_free_list_init arguments have been updated. The unused0 argument is not used to pass in the registration cache module. The mpool registration flags are now rcache registration flags. - All components have been updated to make use of the new framework interfaces. As this commit makes significant changes to both the mpool and rcache frameworks both versions have been bumped to 3.0.0. Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
This means we need not check for jemalloc in the configure script for this component. Removing this. In some machines having the TLS option on can cause errors in opening this component. --disable-tls while configuring jemalloc. Please look for instructions for installing jemalloc as a static library linked directly into memkind in CONTRIBUTING file github.com/memkind/memkindw
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
@hjelmn looks indeed good now ! |
@nhjelmn Oh wait. The test count in MTT is not right. The IBM test were not run. Need to figure out why. |
@sjeaugey Should be ok. Those tests don't have any CUDA specific so should be no different than what I see on my mlx4 systems. |
This PR brings in a complete rewrite of the mpool and rcache frameworks.
@vvenkates27 please verify memkind usability.