Hello community, here is the log from the commit of package python3-numexpr for openSUSE:Factory checked in at 2016-07-21 08:09:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python3-numexpr (Old) and /work/SRC/openSUSE:Factory/.python3-numexpr.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-numexpr" Changes: -------- --- /work/SRC/openSUSE:Factory/python3-numexpr/python3-numexpr.changes 2016-06-19 11:08:58.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python3-numexpr.new/python3-numexpr.changes 2016-07-21 08:09:53.000000000 +0200 @@ -1,0 +2,13 @@ +Sun Jul 17 17:19:00 UTC 2016 - [email protected] + +- update to version 2.6.1: + * Fixed a performance regression in some situations as consequence + of increasing too much the BLOCK_SIZE1 constant. After more + careful benchmarks (both in VML and non-VML modes), the value has + been set again to 1024 (down from 8192). The benchmarks have been + made with a relatively new processor (Intel Xeon E3-1245 v5 @ + 3.50GHz), so they should work well for a good range of processors + again. + * Added NetBSD support to CPU detection. Thanks to Thomas Klausner. + +------------------------------------------------------------------- Old: ---- numexpr-2.6.0.tar.gz New: ---- numexpr-2.6.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python3-numexpr.spec ++++++ --- /var/tmp/diff_new_pack.fUDc6h/_old 2016-07-21 08:09:54.000000000 +0200 +++ /var/tmp/diff_new_pack.fUDc6h/_new 2016-07-21 08:09:54.000000000 +0200 @@ -17,7 +17,7 @@ Name: python3-numexpr -Version: 2.6.0 +Version: 2.6.1 Release: 0 Url: https://github.com/pydata/numexpr Summary: Fast numerical expression evaluator for NumPy ++++++ numexpr-2.6.0.tar.gz -> numexpr-2.6.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.0/ANNOUNCE.rst new/numexpr-2.6.1/ANNOUNCE.rst --- old/numexpr-2.6.0/ANNOUNCE.rst 2016-06-01 13:53:04.000000000 +0200 +++ new/numexpr-2.6.1/ANNOUNCE.rst 2016-07-17 11:46:18.000000000 +0200 @@ -1,7 +1,26 @@ ========================= - Announcing Numexpr 2.6.0 + Announcing Numexpr 2.6.1 ========================= +What's new +========== + +This is a manintenance release that fixes a performance regression in +some situations. More specifically, the BLOCK_SIZE1 constant has been +set to 1024 (down from 8192). This allows for better cache utilization +when there are many operands. Fixes #221. + +Also, support for NetBSD has been added. Thanks to Thomas Klausner. + +In case you want to know more in detail what has changed in this +version, see: + +https://github.com/pydata/numexpr/blob/master/RELEASE_NOTES.rst + + +What's Numexpr +============== + Numexpr is a fast numerical expression evaluator for NumPy. With it, expressions that operate on arrays (like "3*a+4*b") are accelerated and use less memory than doing the same calculation in Python. @@ -18,29 +37,6 @@ easy-to-deploy, easy-to-use, computational engine for projects that don't want to adopt other solutions requiring more heavy dependencies. -What's new -========== - -This is a minor version bump because it introduces a new function. -Also some minor fine tuning for recent CPUs has been done: - -- Introduced a new re_evaluate() function for re-evaluating the - previous executed array expression without any check. This is meant - for accelerating loops that are re-evaluating the same expression - repeatedly without changing anything else than the operands. If - unsure, use evaluate() which is safer. - -- The BLOCK_SIZE1 and BLOCK_SIZE2 constants have been re-checked in - order to find a value maximizing most of the benchmarks in bench/ - directory. The new values (8192 and 16 respectively) give somewhat - better results (~5%) overall. The CPU used for fine tuning is a - relatively new Haswell processor (E3-1240 v3). - -In case you want to know more in detail what has changed in this -version, see: - -https://github.com/pydata/numexpr/blob/master/RELEASE_NOTES.rst - Where I can find Numexpr? ========================= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.0/PKG-INFO new/numexpr-2.6.1/PKG-INFO --- old/numexpr-2.6.0/PKG-INFO 2016-06-01 13:58:34.000000000 +0200 +++ new/numexpr-2.6.1/PKG-INFO 2016-07-17 11:51:33.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: numexpr -Version: 2.6.0 +Version: 2.6.1 Summary: Fast numerical expression evaluator for NumPy Home-page: https://github.com/pydata/numexpr Author: David M. Cooke, Francesc Alted and others diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.0/RELEASE_NOTES.rst new/numexpr-2.6.1/RELEASE_NOTES.rst --- old/numexpr-2.6.0/RELEASE_NOTES.rst 2016-06-01 13:49:26.000000000 +0200 +++ new/numexpr-2.6.1/RELEASE_NOTES.rst 2016-07-15 19:25:19.000000000 +0200 @@ -2,6 +2,19 @@ Release notes for Numexpr 2.6 series ====================================== +Changes from 2.6.0 to 2.6.1 +=========================== + +- Fixed a performance regression in some situations as consequence of + increasing too much the BLOCK_SIZE1 constant. After more careful + benchmarks (both in VML and non-VML modes), the value has been set + again to 1024 (down from 8192). The benchmarks have been made with + a relatively new processor (Intel Xeon E3-1245 v5 @ 3.50GHz), so + they should work well for a good range of processors again. + +- Added NetBSD support to CPU detection. Thanks to Thomas Klausner. + + Changes from 2.5.2 to 2.6.0 =========================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.0/bench/vml_timing2.py new/numexpr-2.6.1/bench/vml_timing2.py --- old/numexpr-2.6.0/bench/vml_timing2.py 2016-05-01 14:13:01.000000000 +0200 +++ new/numexpr-2.6.1/bench/vml_timing2.py 2016-07-15 19:25:19.000000000 +0200 @@ -10,7 +10,7 @@ import numexpr as ne from time import time -N = 1e7 # higher value can cause segfault (on x86) +N = int(5e7) x = np.linspace(0, 1, N) y = np.linspace(0, 1, N) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.0/bench/vml_timing3.py new/numexpr-2.6.1/bench/vml_timing3.py --- old/numexpr-2.6.0/bench/vml_timing3.py 1970-01-01 01:00:00.000000000 +0100 +++ new/numexpr-2.6.1/bench/vml_timing3.py 2016-07-15 19:25:19.000000000 +0200 @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +import numpy as np +import numexpr as ne +from timeit import default_timer as timer + +x = np.ones(100000) +scaler = -1J +start = timer() +for k in range(10000): + cexp = ne.evaluate('exp(scaler * x)') +exec_time=(timer() - start) +print +print("Execution took", str(round(exec_time, 3)), "seconds") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.0/numexpr/cpuinfo.py new/numexpr-2.6.1/numexpr/cpuinfo.py --- old/numexpr-2.6.0/numexpr/cpuinfo.py 2016-05-01 14:13:01.000000000 +0200 +++ new/numexpr-2.6.1/numexpr/cpuinfo.py 2016-07-15 19:25:19.000000000 +0200 @@ -498,6 +498,32 @@ def _is_ppc860(self): return self.__machine(860) +class NetBSDCPUInfo(CPUInfoBase): + info = None + + def __init__(self): + if self.info is not None: + return + info = {} + info['sysctl_hw'] = key_value_from_command(['sysctl', 'hw'], sep='=') + info['arch'] = info['sysctl_hw'].get('hw.machine_arch', 1) + info['machine'] = info['sysctl_hw'].get('hw.machine', 1) + self.__class__.info = info + + def _not_impl(self): pass + + def _getNCPUs(self): + return int(self.info['sysctl_hw'].get('hw.ncpu', 1)) + + def _is_Intel(self): + if self.info['sysctl_hw'].get('hw.model', "")[0:5] == 'Intel': + return True + return False + + def _is_AMD(self): + if self.info['sysctl_hw'].get('hw.model', "")[0:3] == 'AMD': + return True + return False class SunOSCPUInfo(CPUInfoBase): info = None @@ -781,6 +807,8 @@ cpuinfo = IRIXCPUInfo elif sys.platform == 'darwin': cpuinfo = DarwinCPUInfo +elif sys.platform[0:6] == 'netbsd': + cpuinfo = NetBSDCPUInfo elif sys.platform.startswith('sunos'): cpuinfo = SunOSCPUInfo elif sys.platform.startswith('win32'): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.0/numexpr/numexpr_config.hpp new/numexpr-2.6.1/numexpr/numexpr_config.hpp --- old/numexpr-2.6.0/numexpr/numexpr_config.hpp 2016-06-01 13:41:46.000000000 +0200 +++ new/numexpr-2.6.1/numexpr/numexpr_config.hpp 2016-07-15 19:25:19.000000000 +0200 @@ -7,15 +7,17 @@ # define USE_UNALIGNED_ACCESS 1 #endif +#ifdef SCIPY_MKL_H +#define USE_VML +#endif + #ifdef USE_VML -/* The values below have been tuned for a Haswell processor (E3-1240 v3) */ -/* Note: with VML functions a larger block size (e.g. 8192) allows to make use - * of the automatic multithreading capabilities of the VML library */ -#define BLOCK_SIZE1 8192 +/* The values below have been tuned for a Skylake processor (E3-1245 v5 @ 3.50GHz) */ +#define BLOCK_SIZE1 1024 #define BLOCK_SIZE2 16 #else -/* The values below have been tuned for a Haswell processor (E3-1240 v3) */ -#define BLOCK_SIZE1 8192 +/* The values below have been tuned for a Skylake processor (E3-1245 v5 @ 3.50GHz) */ +#define BLOCK_SIZE1 1024 #define BLOCK_SIZE2 16 #endif @@ -33,10 +35,6 @@ #include "unistd.h" #endif -#ifdef SCIPY_MKL_H -#define USE_VML -#endif - #ifdef USE_VML #include "mkl_vml.h" #include "mkl_service.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.0/numexpr/version.py new/numexpr-2.6.1/numexpr/version.py --- old/numexpr-2.6.0/numexpr/version.py 2016-06-01 13:53:46.000000000 +0200 +++ new/numexpr-2.6.1/numexpr/version.py 2016-07-17 11:46:49.000000000 +0200 @@ -8,4 +8,4 @@ # rights to use. #################################################################### -version = '2.6.0' +version = '2.6.1' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.0/numexpr.egg-info/PKG-INFO new/numexpr-2.6.1/numexpr.egg-info/PKG-INFO --- old/numexpr-2.6.0/numexpr.egg-info/PKG-INFO 2016-06-01 13:58:34.000000000 +0200 +++ new/numexpr-2.6.1/numexpr.egg-info/PKG-INFO 2016-07-17 11:51:33.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: numexpr -Version: 2.6.0 +Version: 2.6.1 Summary: Fast numerical expression evaluator for NumPy Home-page: https://github.com/pydata/numexpr Author: David M. Cooke, Francesc Alted and others diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/numexpr-2.6.0/numexpr.egg-info/SOURCES.txt new/numexpr-2.6.1/numexpr.egg-info/SOURCES.txt --- old/numexpr-2.6.0/numexpr.egg-info/SOURCES.txt 2016-06-01 13:58:34.000000000 +0200 +++ new/numexpr-2.6.1/numexpr.egg-info/SOURCES.txt 2016-07-17 11:51:33.000000000 +0200 @@ -21,6 +21,7 @@ bench/varying-expr.py bench/vml_timing.py bench/vml_timing2.py +bench/vml_timing3.py numexpr/__init__.py numexpr/complex_functions.hpp numexpr/cpuinfo.py
