-
Notifications
You must be signed in to change notification settings - Fork 28
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
Cannot use disjoint pool if UMF is used via dlopen
#519
Comments
Some time ago I tried to make Disjoint Pool a dynamic lib - see discussion in #387 |
I remember that discussion. I still think, we should try to decrease the amount of UMF libraries as much as possible. |
I have looked at this in the past and not using C++ runtime means not using any containers nor locking primitives (because of exceptions). It would be easier to just rewrite it in C, as there is not much other C++ specific code. |
Is this a high priority issue? Is it needed for the 2025.0 release? |
No
I think we can consider it as a feature request for the next releases. So far MPI and oneCCL can work without it, but they definitely will need it in the future. |
oneCCL and Intel MPI are considering using UMF via
dlopen
. In that case, it is not possible to use pools that are compiled as a static library and are not part of thelibumf.so
binary.For example, the disjoint pool is compiled to the
libdisjoint_pool.a
static library. If an application useslibumf.so
viadlopen
(has no link dependency) and wants to use the disjoint pool it will get a linker error because thelibdisjoint_pool.a
requires UMF symbols that cannot be found.There are no such issues with pools that are part of
libumf.so
. The reproducer below causes a link-time error ifpool_disjoint
is used and works fine in the case ofpool_proxy
.Please provide a reproduction of the bug:
Consider the following code below:
To build
reproducer.c
:How often bug is revealed:
always
Actual behavior:
Linker errors:
Expected behavior:
TBD
Details
Today oneCCL and Intel MPI directly use Level 0 for memory allocations. So during migration to UMF, they can use
pool_proxy
(since it is part of thelibumf.so
binary) and it will be equivalent to their current implementation on top of Level 0. But eventually, using some "real" (that do actually pooling) pool manager might be beneficial for them.We can make
pool_disjoint
part oflibumf.so
if we will be able to get rid of C++ runtime dependencies.Requested priority:
Medium ?
The text was updated successfully, but these errors were encountered: