cf377db823
Features: - Support for an override parameter file (openmpi-mca-param-override.conf). Variable values in this file can not be overridden by any file or environment value. - Support for boolean, unsigned, and unsigned long long variables. - Support for true/false values. - Support for enumerations on integer variables. - Support for MPIT scope, verbosity, and binding. - Support for command line source. - Support for setting variable source via the environment using OMPI_MCA_SOURCE_<var name>=source (either command or file:filename) - Cleaner API. - Support for variable groups (equivalent to MPIT categories). Notes: - Variables must be created with a backing store (char **, int *, or bool *) that must live at least as long as the variable. - Creating a variable with the MCA_BASE_VAR_FLAG_SETTABLE enables the use of mca_base_var_set_value() to change the value. - String values are duplicated when the variable is registered. It is up to the caller to free the original value if necessary. The new value will be freed by the mca_base_var system and must not be freed by the user. - Variables with constant scope may not be settable. - Variable groups (and all associated variables) are deregistered when the component is closed or the component repository item is freed. This prevents a segmentation fault from accessing a variable after its component is unloaded. - After some discussion we decided we should remove the automatic registration of component priority variables. Few component actually made use of this feature. - The enumerator interface was updated to be general enough to handle future uses of the interface. - The code to generate ompi_info output has been moved into the MCA variable system. See mca_base_var_dump(). opal: update core and components to mca_base_var system orte: update core and components to mca_base_var system ompi: update core and components to mca_base_var system This commit also modifies the rmaps framework. The following variables were moved from ppr and lama: rmaps_base_pernode, rmaps_base_n_pernode, rmaps_base_n_persocket. Both lama and ppr create synonyms for these variables. This commit was SVN r28236. |
||
---|---|---|
.. | ||
base.h | ||
event_base_close.c | ||
event_base_open.c | ||
Makefile.am | ||
README.openmpi |
Last updated: 15 Sep 2010 How to update the Libevent embedded in OPAL ------------------------------------------- OPAL requires some modification of the Libevent build system in order to properly operate. In addition, OPAL accesses the Libevent functions through a set of wrappers - this is done for three reasons: 1. Hide the Libevent functions. Some applications directly call libevent APIs and expect to operate against a locally installed library. Since the library used by OPAL may differ in version, and to avoid linker errors for multiply-defined symbols, it is important that the libevent functions included in OPAL be "hidden" from external view. Thus, OPAL's internal copy of libevent is built with visibility set to "hidden" and all access from the OPAL code base is done through "opal_xxx" wrapper API calls. In those cases where the system is built against a compiler that doesn't support visibility, conflicts can (unfortunately) arise. However, since only a very few applications would be affected, and since most compilers support visibility, we do not worry about this possibility. 2. Correct some deficiencies in the distributed Libevent configuration tests. Specifically, the distributed tests for kqueue and epoll support provide erroneous results on some platforms (as determined by our empirical testing). OPAL therefore provides enhanced tests to correctly assess those environments. 3. Enable greater flexibility in configuring Libevent for the specific environment. In particular, OPAL has no need of Libevent's dns, http, and rpc events, so configuration options to remove that code from Libevent have been added. The procedure for updating Libevent has been greatly simplified compared to prior versions in the OPAL code base by replacing file-by-file edits with configuration logic. Thus, updating the included libevent code can generally be accomplished by: 1. create a new opal/mca/event component for the updated version, using a name "libeventxxx", where xxx = libevent version. For example, libevent 2.0.7 => component libevent207 2. create a subdirectory "libevent" in the new component and unpack the new libevent code tarball into it. 3. copy the configure.m4, autogen.subdirs, component.c, moduule.c, Makefile.am, and .h files from a prior version to the new component. You will need to customize them for the new version, but they can serve as a good template. In many cases, you will just have to update the component name. 4. edit libevent/configure.in to add OMPI specific options and modes. Use the corresponding file from a prior version as a guide. The necessary changes are marked with "OMPI" comments. These changes have been pushed upstream to libevent, and so edits may no longer be required in the new version. 5. Modify libevent/Makefile.am. Here again, you should use the file from a prior version as an example. Hopefully, you can just use the file without change - otherwise, the changes will have to be done by hand. Required changes reflect the need for OMPI to turn "off" unused subsystems such as http. These changes have been pushed upstream to libevent, and so edits may no longer be required in the new version. 6. in your new component Makefile.am, note that the libevent headers are listed by name when WITH_INSTALL_HEADERS is given. This is required to support the OMPI --with-devel-headers configure option. Please review the list and update it to include all libevent headers for the new version.