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
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel

Reply via email to