The simple answer is you can't. The mpool is loaded before the BTLs
and on Linux the loader use the RTLD_NOW flag (i.e. all symbols have
to be defined or the dlopen call will fail).

Moreover, there is no way in Open MPI to exchange information between
components except a global variable or something in the mca/common. In
other words there is no way for you to call from the mpool a function
from the sm BTL.

george.

On Jan 13, 2009, at 19:22 , Eugene Loh wrote:

> With the sm BTL, there is a file that each process mmaps in for
> shared memory.
>
> I'm trying to get mpool_sm to size the file appropriately. So, I
> would like mpool_sm to call some mca_btl_sm function that provides a
> good guess of the size. (mpool_sm creates and mmaps the file, but
> the size depends on parameters like eager limit and max frag size
> that are known by the btl_sm.)
>
> On Solaris, this works fine.
>
> On Linux, at mpirun time, I get
>
> ./a.out: symbol lookup error: /home/eugene/workspace/lib/openmpi/
> mca_mpool_sm.so: undefined symbol: mca_btl_sm_get_file_size
> ./a.out: symbol lookup error: /home/eugene/workspace/lib/openmpi/
> mca_mpool_sm.so: undefined symbol: mca_btl_sm_get_file_size
> --------------------------------------------------------------------------
> mpirun has exited due to process rank 1 with PID 17224 on
> node mynode-0 exiting without calling "finalize". This may
> have caused other processes in the application to be
> terminated by signals sent by mpirun (as reported here).
> --------------------------------------------------------------------------
>
> What's up? How do I get mpool_sm to call btl_sm? Why does this
> depend on OS? (I am okay with btl_sm calling mpool_sm instead if
> that would help.)
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/devel