Skip to content

Commit

Permalink
ENH: Added show_runtime
Browse files Browse the repository at this point in the history
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__`
  • Loading branch information
ganesh-k13 committed Jul 24, 2022
1 parent 45bc13e commit 02043a2
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 0 deletions.
1 change: 1 addition & 0 deletions numpy/__init__.py
Expand Up @@ -122,6 +122,7 @@
else:
try:
from numpy.__config__ import show as show_config
from numpy.__config__ import runtime as show_runtime
except ImportError as e:
msg = """Error importing numpy: you should not try to import numpy from
its source directory; please exit the numpy source tree, and relaunch
Expand Down
78 changes: 78 additions & 0 deletions numpy/distutils/misc_util.py
Expand Up @@ -2452,6 +2452,84 @@ def show():
print(" found = %s" % (','.join(features_found)))
print(" not found = %s" % (','.join(features_not_found)))
def 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. 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__`
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_config` again"
" for more detailed build information")
pprint(config_found)
'''))

return target
Expand Down

0 comments on commit 02043a2

Please sign in to comment.