-
Notifications
You must be signed in to change notification settings - Fork 868
Visibility
Jeff Squyres edited this page Sep 2, 2014
·
3 revisions
Starting from the moment where the Windows port has been done, another opportunity to improve Open MPI showed up. We can improve the loading time of our shared libraries as well as decreasing their size by carefully monitoring the symbols that get exported. This approach also allows the definition of a well defined interface for components writers and prohibits the usage of internal functions that are not supposed to be used from a component.
- Automatic detection of the visibility capability of the used compiler. At the moment the following compilers are supported:
- GCC (> 4.X)
- Intel Compiler (>= 10.0) (in the 9.x version the visibility is broken)
- Many of the available components have been fixed to support the visibility feature.
- Upcoming Sun compilers are supposed to support the gcc syntax for visibility. Nevertheless attach to this wiki page there is a (untested) patch to exploid Sun's ldscope mechanism for managing symbols visibility.
- Add more compilers with similar features (e.g. the sun compiler, pgi and patch scale)
- Fixing the remaining components (they are updated but not tested):
- Udapl
- Portals
- UD
- XGrid
- BProc
- XCpu
- Poe
- Decide which functionallity needs to be exported.
Most of the details have been described in Windows port. For helping to fix the remaining components please see the following instructions:
- Checkout the development branch via : svn co https://svn.open-mpi.org/svn/ompi/tmp/sven-visibility
- Configure the branch as usual
- Compile and install the branch
- Try to run a sample application.
- If a componment cannot be loaded at all then the component structure is not exported. Add the corresponding *_DECLSPEC or *_MODULE_DECLSPEC to the component structure declaration. GOTO 3 .
- If there are missing symbols the linker will complain and give you an error which tell's you the name of the missing symbol. Go to the source and prepend the declaration of the missing symbol with the corresponing *_DECLSPEC or *_MODULE_DECLSPEC(IMPORTANT: tag the declaration and not the implementation). If the declartaion is missing add one. GOTO 3.
- If everything works as expected commit your changes back to the branch and update the Wiki page
If you want to add another compiler please contact us directly.