Skip to content

Commit 933c940

Browse files
Added --kmp-composability switch which enables KMP_COMPOSABILITY=mode=counting
1 parent 5535665 commit 933c940

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

smp/__init__.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
except:
4848
PsutilProcess = None
4949

50-
__version__ = "0.1.3"
50+
__version__ = "0.1.4"
5151
__all__ = ["Monkey"]
5252
__doc__ = """
5353
Static 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

Comments
 (0)