4747except :
4848 PsutilProcess = None
4949
50- __version__ = "0.1.3 "
50+ __version__ = "0.1.4 "
5151__all__ = ["Monkey" ]
5252__doc__ = """
5353Static Multi-Processing module
@@ -552,9 +552,14 @@ def _main():
552552 import argparse
553553 parser = argparse .ArgumentParser (prog = "python -m smp" , description = __doc__ ,
554554 formatter_class = argparse .ArgumentDefaultsHelpFormatter )
555- parser .add_argument ('-f' , '--oversubscription-factor' , default = oversubscription_factor , metavar = 'Number' ,
556- help = "Limits maximal number of threads as available CPU * Number" , type = int )
557- parser .add_argument ('-p' , '--max-top-workers' , default = max_top_workers , metavar = 'Number' , type = int ,
555+ parser .add_argument ('-f' , '--oversubscription-factor' , default = oversubscription_factor , metavar = 'N' ,
556+ help = "Limits maximal number of threads as available CPU*N" , type = int )
557+ parser .add_argument ('-t' , '--kmp-blocktime' , default = os .environ .get ("KMP_BLOCKTIME" , 0 ), metavar = 'N' ,
558+ help = "Sets KMP_BLOCKTIME as a time of busy wait of worker threads" , type = int )
559+ parser .add_argument ('-o' , '--kmp-composability' , action = 'store_true' ,
560+ help = "Disables monkey, uses KMP_COMPOSABILITY=mode=counting instead"
561+ " to enable composability mode of libiomp" )
562+ parser .add_argument ('-p' , '--max-top-workers' , default = max_top_workers , metavar = 'P' , type = int ,
558563 help = "Limits outermost parallelism by controlling number of thread or "
559564 "processes workers created by Python pools" )
560565 parser .add_argument ('-m' , action = 'store_true' , dest = 'module' ,
@@ -564,11 +569,16 @@ def _main():
564569 help = "Command line arguments" )
565570 args = parser .parse_args ()
566571 sys .argv = [args .name ] + args .args
567- if not os .environ .get ("KMP_BLOCKTIME" ):
568- os .environ ["KMP_BLOCKTIME" ] = "0"
569572 if '_' + args .name in globals ():
570573 return globals ()['_' + args .name ](* args .args )
574+ elif args .kmp_composability :
575+ os .environ ["KMP_COMPOSABILITY" ] = "mode=counting"
576+ os .environ ["MKL_THREADING_LAYER" ] = "INTEL"
577+ import runpy
578+ runf = runpy .run_module if args .module else runpy .run_path
579+ runf (args .name , run_name = '__main__' )
571580 else :
581+ os .environ ["KMP_BLOCKTIME" ] = str (args .kmp_blocktime )
572582 import runpy
573583 runf = runpy .run_module if args .module else runpy .run_path
574584 with Monkey (oversubscription_factor = args .oversubscription_factor ,
0 commit comments