4040PROTOTYPE ERROR_CLASS init_thread (INT_OUT argc , ARGV argv , INT required ,
4141 INT_OUT provided )
4242{
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;
4445 char * env ;
4546
4647 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,
5455 safe_required = required ;
5556 }
5657
57- /* check for environment overrides for required thread level. If
58+ /* check for environment overrides for required thread level. If
5859 * 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.
6163 */
6264 if (NULL != (env = getenv ("OMPI_MPI_THREAD_LEVEL" ))) {
6365 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 );
6768 if (!err_arg_required ) {
6869 safe_required = env_required ;
6970 }
0 commit comments