1
1
Граф коммитов

52 Коммитов

Автор SHA1 Сообщение Дата
Nathan Hjelm
8cbf743cfa mca/base: standize MCA verbosity levels
Up until this point we have had inconsistent usage for MCA verbosity
levels. This commit attempts to correct this by recommending
components use these standard levels: none (0), error (1), warn (10),
info (20), debug (40), and trace (60).

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2015-08-17 11:47:57 -06:00
Nathan Hjelm
cea735b3c3 mca/base: fix coverity issues and enable project name in MCA groups
CID 1047278 Unchecked return value

Updated check for mca_base_var_generate_full_name4 to match other
checks. Logically equivalent to the old check. Not a bug.

CID 1196685 Dereference null return

Added check for NULL when looking up the original variable for a
synonym.

CID 1269705 Logically dead code

Removed code that set the project to NULL. Code was intended to be
removed with an earlier commit that added the project name into the
component structure. Added code to actually support searching for a
group with a wildcard ('*').

CID 1292739 Dereference null return
CID 1269819 Dereference null return

Removed unnecessary string duplication and strchr.

CID 1287030 Logically dead code

Refactored fixup_files code and confirmed that the code in question is
not reachable. Removed the dead code.

CID 1292740 Use of untrusted string

Use strdup to silence coverity warning.

CID 1294413 Free of address-of expression

Reset mitem to NULL after the OPAL_LIST_FOREACH loop to ensure we
never try to free the list sentinel.

CID 1294414 Unchecked return value

Use (void) to indicate we do not care about the return code in this
instance.

CID 1294415 Resource leak

On error free all the base pointer.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2015-05-21 13:33:31 -06:00
Nathan Hjelm
9caffa5dd8 mca/base: fix source file name bug for synonyms
This commit fixes synonyms so the source file is correctly printed out
by ompi_info. This commit also adds support for printing out the line
number where the variable is set.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2015-05-12 09:52:31 -06:00
Nathan Hjelm
5ea1f1c12b mca/base: set string values to NULL after they are freed
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2015-04-21 09:45:10 -06:00
Jeff Squyres
14afe14b6a mca_base_var.c: whitespace cleanup
No code changes
2015-04-20 08:56:42 -07:00
Jeff Squyres
1f237b78d1 *_info tools: quote parsable values if they contain colons
Thanks to Lev Givon for the suggestion.
2015-04-20 08:56:42 -07:00
Nathan Hjelm
3436f2917d Merge pull request #449 from hjelmn/mca_base_update
mca/base update
2015-04-16 08:41:48 -06:00
Elena
96bdf595c2 fix for -am -tune options issue came from PR 520 2015-04-15 15:51:49 +03:00
Nathan Hjelm
a7b0c00ab6 fix memory leaks and valgrind errors
This commit fixes several vagrind errors. Included:

 - installdirs did not correctly reinitialize all pointers to NULL
   at close. This causes valgrind errors on a subsequent call to
   opal_init_tool.

 - several opal strings were leaked by opal_deregister_params which
   was setting them to NULL instead of letting them be freed by the
   MCA variable system.

 - move opal_net_init to AFTER the variable system is initialized and
   opal's MCA variables have been registered. opal_net_init uses a
   variable registered by opal_register_params!

 - do not leak ompi_mpi_main_thread when it is allocated by
   MPI_T_init_thread.

 - do not overwrite ompi_mpi_main_thread if it is already set (by
   MPI_T_init_thread).

 - mca_base_var: read_files was overwritting mca_base_var_file_list
   even if it was non-NULL.

 - mca_base_var: set all file global variables to initial states on
   finalize.

 - btl/vader: decrement enumerator reference count to ensure that it
   is freed.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2015-04-11 09:28:35 -06:00
Mike Dubman
58d002098b Merge pull request #474 from elenash/master
Introduce -tune command line option to set env vars and mca params from ...
2015-04-01 08:23:34 +03:00
Nathan Hjelm
6d1a41611f MCA/base: Detect overlapping variable names.
Signed-off-by: Nathan Hjelm <hjelmn@me.com>
2015-03-27 10:59:05 -06:00
Nathan Hjelm
de1e7d58e1 Add support setting variables from project_name environment variables
Signed-off-by: Nathan Hjelm <hjelmn@me.com>
2015-03-27 10:59:05 -06:00
Nathan Hjelm
b68d66bb9b MCA: Add the project/project version to the MCA base component
This commit adds support for project_framework_component_* parameter
matching. This is the first step in allowing the same framework name
in multiple projects. This change also bumps the MCA component version
to 2.1.0.

All master frameworks have been updated to use the new component
versioning macro. An mca.h has been added to each project to add a
project specific versioning macro of the form
PROJECT_MCA_VERSION_2_1_0.

Signed-off-by: Nathan Hjelm <hjelmn@me.com>
2015-03-27 10:59:04 -06:00
Elena
90f5b2bb84 Introduce -tune command line option to set env vars and mca params from file 2015-03-26 18:33:53 +02:00
Nathan Hjelm
ccba8ce856 Merge pull request #457 from hjelmn/mpit_fixes
mca/base: fix bugs in framework deregistration/re-registration
2015-03-18 08:37:49 -06:00
Nathan Hjelm
005c6022e2 mca/base: fix bugs in framework deregistration/re-registration
There were a number of bugs in the framework/variable code that
affected deregistration:

 - Frameworks could be erroneously closed if seperately registered and
   opened then subsequently closed. This was a bug in the original
   design which only reference counted opens but not
   registrations. This would cause undefined behavior if
   MPI_T_finalize actually calls ompi_info_close_components as
   intended. Now both registrations and opens are reference counted
   and frameworks/components are not torn down until the matching
   number of close calls have been made.

 - group_find_by_name did not pass the invalidok flags down
   to mca_base_var_group_get_internal correctly.

 - Group deregistration caused the group to be completely reset. This
   does not match the behavior required by MPI_T as it could reduce
   the number of variables/subgroups in a group.

This commit also updates MPI_T_finalize to call
ompi_info_close_components as originally intended.

Closes #374

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2015-03-09 16:52:53 -06:00
Elena
737f06dd68 fix: mca_base_env_var mca parameter is never handled if it's set from amca conf file 2015-03-06 12:12:26 +02:00
Gilles Gouaillardet
852dbafd51 mca/base: fix misc memory leaks
as reported by Coverity with CIDs 710628, 1196713 and 1269855
2015-03-05 14:06:18 +09:00
Nathan Hjelm
49ba150972 mca/base: fix path string parsing
CID 993709
2015-02-12 13:03:46 -07:00
Jeff Squyres
00c878957c mca_base_var.c: add debug check for another programming error
Coverity alerted us to the fact that there are places where
the synonym_for param is hard-coded to -1 when calling
register_variable().  It would be a coding error if synonym_for==-1
and (flags & MCA_BASE_VAR_FLAG_SYNONYM)>0, so let's add that to the
debug-only check at the top of the function.

This was CID 993717.
2015-02-12 10:24:02 -08:00
Ralph Castain
894acb0aa8 configury: new OPAL_SET_MCA_PREFIX/ORTE_SET_MCA_CMD_LINE_ID macros
These two macros set the MCA prefix and MCA cmd line id,
   respectively.  Specifically, MCA parameters will be named
   PREFIX<foo> in the environment, and the cmd line will use
   -ID foo bar.

   These macros must be called during configure.ac and a value
   supplied. In the case of Open MPI, the values given are
   PREFIX=OMPI_MCA_ and ID=mca.

   Other projects (such as ORCM) will call these macros with
   their own unique values.  For example, ORCM uses PREFIX=ORCM_MCA_
   and ID=omca

   This scheme is necessary to allow running Open MPI applications under
   systems that use their own versions of ORTE and OPAL.  For example,
   when running OMPI applications under ORCM, we need the MCA params passed
   to the ORCM daemons to be separated from those recognized by the OMPI application.
2014-10-22 18:57:40 -07:00
Ralph Castain
b6aa691e0a Fix incorrect implementation of new MCA param mca_base_env_list - it was not picking up envars and forwarding them, but only worked if you explicitly set a value for the envar. Ensure it works for both direct and indirect launch modes. Remove stale code as this replaced orte_forward_envars. Ensure it doesn't get passed to the ORTE daemons. 2014-10-16 12:58:56 -07:00
Jeff Squyres
dc66e197cc var: fix segv in deprecated file var show_help()
Ensure to include the new variable filename in the show_help() output
when we load a deprecated MCA param from a file.

Fixes #236
2014-10-15 08:07:31 -07:00
Jeff Squyres
d244b7b860 mca_base_var: fix possibilty of unaligned variable assignments
Add a debugging check that ensures that the registered storage is
aligned appropriately for the type that is specified.

When we know that the storage is properly aligned, we can cast the
mbv_storage to the appropriate type and then simply do the assignment.
We used to do this assignment via a union, but clang's
-fsanitizer=alignment complained about this.

This commit was SVN r32716.
2014-09-11 23:02:49 +00:00
Nathan Hjelm
a32d93ec20 mca/base: make clang static analyzer happy
cmr=v1.8.3:reviewer=jsquyres

This commit was SVN r32360.
2014-07-30 17:45:28 +00:00
Ralph Castain
354a1d07a6 Silence warning about set-but-unused var
This commit was SVN r32186.
2014-07-09 22:37:05 +00:00
Mike Dubman
6efc9a7329 opal mca: externalize delimiter for base_env_list mca parameters
fixed by Elena, reviewed by MikeD

This commit was SVN r32182.
2014-07-09 18:55:49 +00:00
Mike Dubman
32aeba4bdf opal: revert env_list separator to ";" from "+"
This commit was SVN r32172.
2014-07-09 05:38:51 +00:00
Joshua Ladd
057370364d Opal: Add a new MCA variable type "version_string". Also add a
new flag to ompi_info that allows a user to print all MCA variables of a specific type.  

 --type version_string

This command will print all MCA variables of type version_string.

This feature was developed by Elena Shipunova and was reviewed by Josh Ladd.

This commit was SVN r32166.
2014-07-09 01:37:23 +00:00
Joshua Ladd
30da6d3a17 Opal: add a new MCA parameter that allows the user to specify a list of environment variables. This parameter will become the standard mechanism by which environment variables are set for OMPI applications replacing the -x option.
mpirun ... -x env_foo1=val1 -x env_foo2 -x env_foo3=val3  should now be expressed as

mpirun ... -mca mca_base_env_list env_foo1=val1+env_foo2+env_foo3=val3. 

The motivation for doing this is so that a list of environment variables may be set via standard MCA mechanisms such as mca parameter files, amca lists, etc. 

This feature was developed by Elena Shipunova and was reviewed by Josh Ladd.

This commit was SVN r32163.
2014-07-09 00:38:25 +00:00
Jeff Squyres
86f747c627 mca_base_var: use ERR_NOT_FOUND when var is inactive
After discussion with Nathan, change the ERR_VALUE_OUT_OF_BOUNDS to be
ERR_NOT_FOUND, for two reasons:

1. It's consistent with other uses of ERR_NOT_FOUND in the code.
1. In this case, we could have just looked up a variable that is
   basically a "hole" -- e.g., var indexes 0, 1, 2 are valid, and 4,
   5, and 5 are valid, but 3 is invalid (e.g., 3 was de-registered --
   remember that MPI_T explicitly does not allow re-using indexes).
   So returning ERR_OUT_OF_BOUNDS seems weird -- returning
   ERR_NOT_FOUND seems a bit more natural.

cmr=v1.8.2:ticket=trac:4587

This commit was SVN r32158.

The following Trac tickets were found above:
  Ticket 4587 --> https://svn.open-mpi.org/trac/ompi/ticket/4587
2014-07-08 20:00:18 +00:00
Ralph Castain
20535bca19 Reorder the var release so a debugger can still see the var name that caused a segfault, thus helping to identify the var in question
cmr=v1.8.2:reviewer=hjelmn

This commit was SVN r32068.
2014-06-24 13:51:31 +00:00
Ralph Castain
11faab1091 The final step of the RFC: convert the <foo>libdir and friends to fit their respective code areas, and equate them all at the top. Note that we can't entirely separate things as the opal_install_dirs framework can't handle separated locations for the various trees.
This commit was SVN r31679.
2014-05-08 02:01:35 +00:00
Nathan Hjelm
a28012b29d Fix MPI_T issues identified by friendly users.
Several fixes:

 - I was allowing an MPI_T_cvar_handle to be created for an invalid
   variable. Fixed this by checking if the variable is valid in
   mca_base_var_get.

 - Use a better error code when the caller tries to create an unbound
   pvar handle for a bound variable.

 - Return the verbosity level in MPI_T_cvar_get_info.

cmr=v1.8.2:reviewer=jsquyres

This commit was SVN r31576.
2014-04-30 22:10:30 +00:00
Ralph Castain
7c4fa3446c Per the telecon, revert r31302 for now pending an RFC review on the idea of setting app proc envar's using an MCA param
This commit was SVN r31345.

The following SVN revision numbers were found above:
  r31302 --> open-mpi/ompi@6a1b78e26b
2014-04-08 15:47:12 +00:00
Mike Dubman
6a1b78e26b opal: add mca param to control ranks env variables
add -mca base_env_list "var1=val1 var2=val2 ..." mca parameter that can be used in mca param files
or with -am app.conf mpirun commandline to set rank env variables with mca mechanism

fixed by Elena, reviewed by Miked

cmr=v1.8.1:reviewer=ompi-rm1.8

This commit was SVN r31302.
2014-04-01 21:14:31 +00:00
Jeff Squyres
e3f818ba87 Remove a sketchy use of asprintf() passing a union by value.
The original code was passing a union by value, and doing odd things
on Solaris/SPARC (where "odd" rhymes with "SIGBUS").  Replace it with
an exploded switch/case block for all the enum values.  Also use the
string literals so that we get compiler checking of the format string
vs. the type of the actual arguments.

cmr=v1.7.4:revier=hjelmn:subject=Fix MCA base var to not pass union by value

This commit was SVN r30276.
2014-01-13 22:24:14 +00:00
Nathan Hjelm
91c4890886 MCA/base/var: Fix integer overflow check and add support for printing new
variable names for deprecated variables.

Closes trac:3270

cmr=v1.7.4:reviewer=jsquyres

This commit was SVN r30275.

The following Trac tickets were found above:
  Ticket 3270 --> https://svn.open-mpi.org/trac/ompi/ticket/3270
2014-01-13 20:29:56 +00:00
Jeff Squyres
13b29cff2c This commit compliements/completes r30140. r30140 made all the
configury/Makefile.am changes; this commit renames the internal
installdirs.h framework struct field names to match the configry macro
names:

 * pkgdatdir ->	ompidatadir
 * pkglibdir -> ompilibdir
 * pkgincludedir -> ompiincludedir

This commit was SVN r30145.

The following SVN revision numbers were found above:
  r30140 --> open-mpi/ompi@8b778903d8
2014-01-07 23:36:33 +00:00
Nathan Hjelm
653babc737 Fix a couple issues with the mca_base_var system:
- Use ->boolval for booleans when creating a string.
 - Solaris has some issue with the ?: used in one of find functions. Use an if instead.
 - Change all instances of index -> vari to avoid issues with redefining index.

cmr=v1.7.4:reviewer=jsquyres

This commit was SVN r29997.
2013-12-19 23:28:17 +00:00
Jeff Squyres
750e6f6895 Fix compiler warning.
cmr=v1.7.4:reviewer=hjelmn

This commit was SVN r29682.
2013-11-13 15:33:55 +00:00
Ralph Castain
11a3743b21 Cleanup unitialized var warnings
This commit was SVN r29038.
2013-08-16 21:49:17 +00:00
Nathan Hjelm
841ed962f6 fix MCA variable and component system leaks
cmr=v1.7.3:reviewer=rhc

This commit was SVN r29011.
2013-08-09 19:50:28 +00:00
Nathan Hjelm
ebbb32120a MCA/base: variable system updates
- Use an enumerator to handle bool values.

 - Fix a leak in the variable enumerator.

 - Fix a leak in an orte parameter.

This commit was SVN r28949.
2013-07-25 15:42:01 +00:00
Nathan Hjelm
61d331d5b5 MCA/base: fix some warnings and an error in the MCA variable system
This commit was SVN r28909.
2013-07-22 17:52:39 +00:00
Nathan Hjelm
d446675526 MCA: Per-RFC, add support for performance variables
This commit adds an API for registering and querying performance
variables (mca_base_pvar) in the MCA base. The existing MCA variable
system API has been updated to reflect the new API: MCA variable
groups have performance variables, and new types have been added (double,
unsigned long long) to reflect what is required by the MPI_T
interface. Additionally, the MCA variable group code has been split
into its own set of files: mca_base_var_group.[ch].

Details of the new API can be found in doxygen comments in the header:
mca_base_pvar.h.

Other changes to the variable system:

 - Use an opal_hash_table to speed up variable/group lookup.

 - Clean up code associated with MCA variable types.

 - Registered performance variables are printed by ompi_info -a. In the
   future an option should be added to control this behavior.

Changes to OMPI:

 - Added full support for the MPI_T performance variable interface.

This commit was SVN r28800.
2013-07-16 16:02:13 +00:00
Nathan Hjelm
a694bcb6b6 Add support for the MCA variable information level to ompi_info.
Add an option to ompi_info (-l, --level) that takes a number in the
interval (1,9). Only MCA variables up to this level will be printed.
The default level is 1.

Print the level as part of both the parsable and readable output.

This commit was SVN r28750.
2013-07-10 18:52:36 +00:00
Jeff Squyres
089c632cce Remove a bunch of dead code: gcc 4.7 warns of set-but-unused
variables.  So get rid of them.

This commit was SVN r28538.
2013-05-17 21:45:49 +00:00
Nathan Hjelm
bccf8c657a Per RFC add initial support for the MPI 3.0 tools interface.
Current MPI_T support:
  - Full cvar interface.
  - Full categories interface.
  - No pvar support at this time.

This commit was SVN r28376.
2013-04-24 15:59:23 +00:00
Ralph Castain
d12eed0703 Silence warning
This commit was SVN r28249.
2013-03-27 22:07:29 +00:00