Skip to content

Commit 5535665

Browse files
Merge pull request #1 from IntelPython/feature/publication
Initial publication of smp module for Python
2 parents 2271b85 + af08cb9 commit 5535665

File tree

7 files changed

+768
-15
lines changed

7 files changed

+768
-15
lines changed

LICENSE

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,21 @@
1-
BSD 3-Clause License
2-
3-
Copyright (c) 2017, Intel Python
4-
All rights reserved.
1+
Copyright (c) 2017, Intel Corporation
52

63
Redistribution and use in source and binary forms, with or without
74
modification, are permitted provided that the following conditions are met:
85

9-
* Redistributions of source code must retain the above copyright notice, this
10-
list of conditions and the following disclaimer.
11-
12-
* Redistributions in binary form must reproduce the above copyright notice,
13-
this list of conditions and the following disclaimer in the documentation
14-
and/or other materials provided with the distribution.
15-
16-
* Neither the name of the copyright holder nor the names of its
17-
contributors may be used to endorse or promote products derived from
18-
this software without specific prior written permission.
6+
* Redistributions of source code must retain the above copyright notice,
7+
this list of conditions and the following disclaimer.
8+
* Redistributions in binary form must reproduce the above copyright
9+
notice, this list of conditions and the following disclaimer in the
10+
documentation and/or other materials provided with the distribution.
11+
* Neither the name of Intel Corporation nor the names of its contributors
12+
may be used to endorse or promote products derived from this software
13+
without specific prior written permission.
1914

2015
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
2116
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2217
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23-
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
18+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
2419
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2520
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2621
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Static Multi-Processing
2+
**SMP** module allows to set static affinity mask for each process inside process pool to limit total
3+
number of threads running in application:
4+
```
5+
python -m smp [-f <oversubscription_factor>] [-p <number_of_outermost_processes>] script.py
6+
```
7+
The module supports two types of process pool: multiprocessing.pool.Pool and
8+
concurrent.futures.ProcessPoolExecutor, as well as one thread pool: multiprocessing.pool.ThreadPool.
9+
Can be run with TBB module as well:
10+
```
11+
python -m smp [-f <oversubscription_factor>] [-p <number_of_outermost_processes>] -m tbb script.py
12+
```

SMP.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/usr/bin/env python
2+
# Copyright (c) 2017, Intel Corporation
3+
#
4+
# Redistribution and use in source and binary forms, with or without
5+
# modification, are permitted provided that the following conditions are met:
6+
#
7+
# * Redistributions of source code must retain the above copyright notice,
8+
# this list of conditions and the following disclaimer.
9+
# * Redistributions in binary form must reproduce the above copyright
10+
# notice, this list of conditions and the following disclaimer in the
11+
# documentation and/or other materials provided with the distribution.
12+
# * Neither the name of Intel Corporation nor the names of its contributors
13+
# may be used to endorse or promote products derived from this software
14+
# without specific prior written permission.
15+
#
16+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26+
27+
28+
from smp import *
29+
from smp import __all__, __doc__
30+
31+
if __name__ == "__main__":
32+
from smp import _main
33+
import sys
34+
sys.exit(_main())

meta.yaml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#{% set data = load_setup_py_data() %}
2+
#{% set version = data.get('version') %}
3+
{% set version = "0.1.3" %}
4+
{% set buildnumber = 0 %}
5+
6+
package:
7+
name: smp
8+
version: {{version}}
9+
10+
source:
11+
path: .
12+
13+
requirements:
14+
build:
15+
- python
16+
run:
17+
- python
18+
19+
build:
20+
number: {{buildnumber}}
21+
entry_points:
22+
- python-smp = smp:_main
23+
noarch_python: True
24+
script: python setup.py install
25+
26+
test:
27+
requires:
28+
- intel_tester
29+
files:
30+
- intel_tester_config.py
31+
commands:
32+
- python -c "from intel_tester import test_routine; test_routine.test_exec()" # [linux]
33+
- python-smp -h # [linux]
34+
imports:
35+
- smp
36+
- SMP
37+
38+
about:
39+
license: BSD
40+
license_file: LICENSE
41+
summary: a Static Multi-Processing module handling nested parallelism issues like oversubscription while composing different parallel components

setup.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/usr/bin/env python
2+
# Copyright (c) 2017, Intel Corporation
3+
#
4+
# Redistribution and use in source and binary forms, with or without
5+
# modification, are permitted provided that the following conditions are met:
6+
#
7+
# * Redistributions of source code must retain the above copyright notice,
8+
# this list of conditions and the following disclaimer.
9+
# * Redistributions in binary form must reproduce the above copyright
10+
# notice, this list of conditions and the following disclaimer in the
11+
# documentation and/or other materials provided with the distribution.
12+
# * Neither the name of Intel Corporation nor the names of its contributors
13+
# may be used to endorse or promote products derived from this software
14+
# without specific prior written permission.
15+
#
16+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26+
27+
28+
# System imports
29+
from __future__ import print_function
30+
import platform
31+
import os
32+
from smp import __version__ as ver, __doc__ as doc
33+
34+
from distutils.core import *
35+
36+
setup( name ="SMP",
37+
description ="Static Multi-Processing",
38+
long_description= doc,
39+
url ="https://software.intel.com/intel-distribution-for-python",
40+
author ="Intel Corporation",
41+
author_email="[email protected]",
42+
license ="BSD",
43+
version = ver,
44+
classifiers =[
45+
'Development Status :: 4 - Beta',
46+
'Environment :: Console',
47+
'Environment :: Plugins',
48+
'Intended Audience :: Developers',
49+
'Intended Audience :: System Administrators',
50+
'Intended Audience :: Other Audience',
51+
'Intended Audience :: Science/Research',
52+
'License :: OSI Approved :: BSD License',
53+
#'Operating System :: MacOS :: MacOS X',
54+
#'Operating System :: Microsoft :: Windows',
55+
'Operating System :: POSIX :: Linux',
56+
'Programming Language :: Python',
57+
'Programming Language :: Python :: 2',
58+
'Programming Language :: Python :: 3',
59+
'Topic :: System :: Hardware :: Symmetric Multi-processing',
60+
],
61+
keywords='multiprocessing multithreading composable parallelism affinity',
62+
packages=['smp'],
63+
py_modules=['SMP'],
64+
)

0 commit comments

Comments
 (0)