Multiclass-interface 1.11__tar.gz → 1.14__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. {multiclass_interface-1.11 → multiclass_interface-1.14}/.gitlab-ci.yml +1 -1
  2. {multiclass_interface-1.11 → multiclass_interface-1.14/Multiclass_interface.egg-info}/PKG-INFO +2 -2
  3. {multiclass_interface-1.11/Multiclass_interface.egg-info → multiclass_interface-1.14}/PKG-INFO +2 -2
  4. {multiclass_interface-1.11 → multiclass_interface-1.14}/multiclass_interface/mpi_interface.py +14 -0
  5. {multiclass_interface-1.11 → multiclass_interface-1.14}/multiclass_interface/multiprocess_interface.py +8 -1
  6. {multiclass_interface-1.11 → multiclass_interface-1.14}/multiclass_interface/tests/test_mpi.py +4 -2
  7. {multiclass_interface-1.11 → multiclass_interface-1.14}/multiclass_interface/version.py +2 -2
  8. {multiclass_interface-1.11 → multiclass_interface-1.14}/.gitignore +0 -0
  9. {multiclass_interface-1.11 → multiclass_interface-1.14}/LICENSE +0 -0
  10. {multiclass_interface-1.11 → multiclass_interface-1.14}/Multiclass_interface.egg-info/SOURCES.txt +0 -0
  11. {multiclass_interface-1.11 → multiclass_interface-1.14}/Multiclass_interface.egg-info/dependency_links.txt +0 -0
  12. {multiclass_interface-1.11 → multiclass_interface-1.14}/Multiclass_interface.egg-info/requires.txt +0 -0
  13. {multiclass_interface-1.11 → multiclass_interface-1.14}/Multiclass_interface.egg-info/top_level.txt +0 -0
  14. {multiclass_interface-1.11 → multiclass_interface-1.14}/README.md +0 -0
  15. {multiclass_interface-1.11 → multiclass_interface-1.14}/multiclass_interface/__init__.py +0 -0
  16. {multiclass_interface-1.11 → multiclass_interface-1.14}/multiclass_interface/multi_object_list.py +0 -0
  17. {multiclass_interface-1.11 → multiclass_interface-1.14}/multiclass_interface/tests/__init__.py +0 -0
  18. {multiclass_interface-1.11 → multiclass_interface-1.14}/multiclass_interface/tests/my_test_cls.py +0 -0
  19. {multiclass_interface-1.11 → multiclass_interface-1.14}/multiclass_interface/tests/test_multiclass_list.py +0 -0
  20. {multiclass_interface-1.11 → multiclass_interface-1.14}/multiclass_interface/tests/test_multiprocessinterface.py +0 -0
  21. {multiclass_interface-1.11 → multiclass_interface-1.14}/pyproject.toml +0 -0
  22. {multiclass_interface-1.11 → multiclass_interface-1.14}/sequence_diagrams.md +0 -0
  23. {multiclass_interface-1.11 → multiclass_interface-1.14}/setup.cfg +0 -0
@@ -61,7 +61,7 @@ pypi_linux:
61
61
  #- pip install pypandoc
62
62
  - pip install -e . --upgrade
63
63
  - pip install --upgrade build
64
- - pip install --upgrade twine
64
+ - pip install twine==6.0.1 --upgrade
65
65
  - python3 -m build
66
66
  - twine upload dist/* -u $TWINE_USERNAME -p $TWINE_PASSWORD
67
67
  rules:
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: Multiclass_interface
3
- Version: 1.11
3
+ Version: 1.14
4
4
  Summary: Multiclass interface
5
5
  Author-email: "Mads M. Pedersen" <mmpe@dtu.dk>
6
6
  Project-URL: Homepage, https://gitlab.windenergy.dtu.dk/DYNAMIKS/multiclass_interface
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: Multiclass_interface
3
- Version: 1.11
3
+ Version: 1.14
4
4
  Summary: Multiclass interface
5
5
  Author-email: "Mads M. Pedersen" <mmpe@dtu.dk>
6
6
  Project-URL: Homepage, https://gitlab.windenergy.dtu.dk/DYNAMIKS/multiclass_interface
@@ -43,6 +43,20 @@ TERMINATE_ON_CLOSE = True # MPI workers (rank>0) will terminate (sys.exit) when
43
43
  COLLECTIVE_MPI = True # rank0 acts as a single point of contact (scatters command+arg and gathers results)
44
44
 
45
45
 
46
+ def main_run(f, *args, **kwargs):
47
+ if main:
48
+ r = f(*args, **kwargs)
49
+ if COLLECTIVE_MPI:
50
+ return r[0]
51
+ else:
52
+ try:
53
+ f(*args, **kwargs)
54
+ except BaseException:
55
+ pass
56
+ r = None
57
+ return comm.bcast(r)
58
+
59
+
46
60
  class MPIClassInterface():
47
61
  def __init__(self, cls, args_lst):
48
62
  if len(args_lst) > size:
@@ -1,11 +1,18 @@
1
1
  import multiprocessing
2
2
  import atexit
3
+ import os
4
+ try:
5
+ # before importing numpy
6
+ os.environ['OPENBLAS_NUM_THREADS'] = '1'
7
+ os.environ['MKL_NUM_THREADS'] = '1'
8
+ except Exception: # pragma: no cover
9
+ pass
10
+
3
11
  import numpy as np
4
12
  from threading import Thread
5
13
  from functools import wraps
6
14
  import traceback
7
15
  from _queue import Empty
8
- import os
9
16
  from contextlib import contextmanager
10
17
  import sys
11
18
  import inspect
@@ -21,6 +21,8 @@ def mpitest_mpi_MyTest():
21
21
  i = m.get_id()
22
22
  npt.assert_array_equal(i, np.arange(N))
23
23
 
24
+ i = mpi_interface.main_run(lambda: m.get_id())
25
+ npt.assert_array_equal(i, 0)
24
26
  npt.assert_array_equal(m[1:3].get_id(), np.arange(1, 3))
25
27
  t = time.time()
26
28
  m.work(1)
@@ -54,6 +56,8 @@ def mpitest_non_collective_mpi():
54
56
 
55
57
  try:
56
58
  assert m.get_id()[0] == rank + 10, m.get_id()
59
+ main_id = mpi_interface.main_run(lambda: m.get_id())
60
+ assert main_id == [10], (rank, main_id)
57
61
  assert rank < N # rank > N will fail with ChildProcessError
58
62
  except ChildProcessError:
59
63
  pass
@@ -86,9 +90,7 @@ def mpitest_all():
86
90
  try:
87
91
  with MPIClassInterface(MyTest, [(1,), (2,), (3,)]) as mpici:
88
92
  for f in [test_attribute, test_missing_attribute, test_execption, test_setattr, test_setattr_method]:
89
-
90
93
  run(f, mpici)
91
-
92
94
  except ChildProcessError:
93
95
  pass
94
96
 
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.11'
16
- __version_tuple__ = version_tuple = (1, 11)
15
+ __version__ = version = '1.14'
16
+ __version_tuple__ = version_tuple = (1, 14)