proxsuite 0.7.2
The Advanced Proximal Optimization Toolbox
Loading...
Searching...
No Matches
__init__.py
Go to the documentation of this file.
1import platform
2import numpy # noqa F401 for OpenMP proper linkage
3
4machine = platform.machine()
5has_vectorization_instructions = not machine.startswith(
6 ("arm", "aarch64", "power", "ppc64", "s390x", "sparc")
7)
8if has_vectorization_instructions:
9 from . import instructionset
10
11
12def load_main_module(globals):
13 def load_module(main_module_name):
14 import importlib
15
16 try:
17 main_module = importlib.import_module("." + main_module_name, __name__)
18 globals.update(main_module.__dict__)
19 del globals[main_module_name]
20 return True
21 except ModuleNotFoundError:
22 return False
23
24 if has_vectorization_instructions: # noqa
25 all_modules = [
26 ("proxsuite_pywrap_avx512", instructionset.has_AVX512F),
27 ("proxsuite_pywrap_avx2", instructionset.has_AVX2),
28 ]
29
30 for module_name, checker in all_modules:
31 if checker() and load_module(module_name):
32 return
33
34 assert load_module("proxsuite_pywrap")
35
36
38del load_main_module
39del platform
40del has_vectorization_instructions
41del machine
load_main_module(globals)
Definition __init__.py:12