diff options
author | ganesh-k13 <ganesh3597@gmail.com> | 2022-08-18 19:17:09 +0530 |
---|---|---|
committer | ganesh-k13 <ganesh3597@gmail.com> | 2022-08-19 18:16:27 +0530 |
commit | fe6369961f4ff136161b0dac2ae2ec620dbce5fb (patch) | |
tree | a6f8223ad44d2ec34e2807c6b3240d05960bc916 /numpy/lib/utils.py | |
parent | 0ca460da16787e3613d20c6cb46236a0b5bd3bbf (diff) | |
download | numpy-fe6369961f4ff136161b0dac2ae2ec620dbce5fb.tar.gz |
ENH: Added `show_runtime`
1. Information is derived with the help of `threadpoolctl` library.
2. In case `threadpoolctl` is not installed, a message is displayed
with help on how to install it.
3. SIMD related information is derived from `__cpu_features__`,
`__cpu_baseline__` and `__cpu_dispatch__`
Diffstat (limited to 'numpy/lib/utils.py')
-rw-r--r-- | numpy/lib/utils.py | 79 |
1 files changed, 78 insertions, 1 deletions
diff --git a/numpy/lib/utils.py b/numpy/lib/utils.py index e8f4952d3..479535dcc 100644 --- a/numpy/lib/utils.py +++ b/numpy/lib/utils.py @@ -13,9 +13,86 @@ import numpy as np __all__ = [ 'issubclass_', 'issubsctype', 'issubdtype', 'deprecate', 'deprecate_with_doc', 'get_include', 'info', 'source', 'who', - 'lookfor', 'byte_bounds', 'safe_eval' + 'lookfor', 'byte_bounds', 'safe_eval', 'show_runtime' ] + +def show_runtime(): + """ + Print information about various resources in the system + including available intrinsic support and BLAS/LAPACK library + in use + + See Also + -------- + show_config : Show libraries in the system on which NumPy was built. + + Notes + ----- + 1. Information is derived with the help of `threadpoolctl` + library. + 2. SIMD related information is derived from `__cpu_features__`, + `__cpu_baseline__` and `__cpu_dispatch__` + + Examples + -------- + >>> import numpy as np + >>> np.show_runtime() + [{'simd_extensions': {'baseline': ['SSE', 'SSE2', 'SSE3'], + 'found': ['SSSE3', + 'SSE41', + 'POPCNT', + 'SSE42', + 'AVX', + 'F16C', + 'FMA3', + 'AVX2'], + 'not_found': ['AVX512F', + 'AVX512CD', + 'AVX512_KNL', + 'AVX512_KNM', + 'AVX512_SKX', + 'AVX512_CLX', + 'AVX512_CNL', + 'AVX512_ICL']}}, + {'architecture': 'Zen', + 'filepath': '/usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so', + 'internal_api': 'openblas', + 'num_threads': 12, + 'prefix': 'libopenblas', + 'threading_layer': 'pthreads', + 'user_api': 'blas', + 'version': '0.3.20'}] + """ + from numpy.core._multiarray_umath import ( + __cpu_features__, __cpu_baseline__, __cpu_dispatch__ + ) + from pprint import pprint + config_found = [] + features_found, features_not_found = [], [] + for feature in __cpu_dispatch__: + if __cpu_features__[feature]: + features_found.append(feature) + else: + features_not_found.append(feature) + config_found.append({ + "simd_extensions": { + "baseline": __cpu_baseline__, + "found": features_found, + "not_found": features_not_found + } + }) + try: + from threadpoolctl import threadpool_info + config_found.extend(threadpool_info()) + except ImportError: + print("WARNING: `threadpoolctl` not found in system!" + " Install it by `pip install threadpoolctl`." + " Once installed, try `np.show_runtime` again" + " for more detailed build information") + pprint(config_found) + + def get_include(): """ Return the directory that contains the NumPy \\*.h header files. |