40
40
PROTOTYPE ERROR_CLASS init_thread (INT_OUT argc , ARGV argv , INT required ,
41
41
INT_OUT provided )
42
42
{
43
- int err , err_arg_required = false, safe_required = MPI_THREAD_SERIALIZED ;
43
+ int err , safe_required = MPI_THREAD_SERIALIZED ;
44
+ bool err_arg_required = false;
44
45
char * env ;
45
46
46
47
ompi_hook_base_mpi_init_thread_top (argc , argv , required , provided );
@@ -54,16 +55,16 @@ PROTOTYPE ERROR_CLASS init_thread(INT_OUT argc, ARGV argv, INT required,
54
55
safe_required = required ;
55
56
}
56
57
57
- /* check for environment overrides for required thread level. If
58
+ /* check for environment overrides for required thread level. If
58
59
* there is, check to see that it is a valid/supported thread level.
59
- * if it is lower than argument required, set it anyway, program can
60
- * check provided == required to verify that required has been ignored
60
+ * If valid, the environment variable always override the provided thread
61
+ * level (even if lower than argument `required`). A user program can
62
+ * check `provided != required` to check if `required` has been overruled.
61
63
*/
62
64
if (NULL != (env = getenv ("OMPI_MPI_THREAD_LEVEL" ))) {
63
65
int env_required = atoi (env );
64
- err_arg_required = err_arg_required ||
65
- (env_required != MPI_THREAD_SINGLE && env_required != MPI_THREAD_FUNNELED &&
66
- env_required != MPI_THREAD_SERIALIZED && env_required != MPI_THREAD_MULTIPLE );
66
+ err_arg_required |= (env_required != MPI_THREAD_SINGLE && env_required != MPI_THREAD_FUNNELED &&
67
+ env_required != MPI_THREAD_SERIALIZED && env_required != MPI_THREAD_MULTIPLE );
67
68
if (!err_arg_required ) {
68
69
safe_required = env_required ;
69
70
}
0 commit comments