On Tue, Feb 23, 2021 at 5:47 PM Charles R Harris <charlesr.har...@gmail.com> wrote:
> > > On Tue, Feb 23, 2021 at 11:10 AM Neal Becker <ndbeck...@gmail.com> wrote: > >> I have code that performs dot product of a 2D matrix of size (on the >> order of) [1000,16] with a vector of size [1000]. The matrix is >> float64 and the vector is complex128. I was using numpy.dot but it >> turned out to be a bottleneck. >> >> So I coded dot2x1 in c++ (using xtensor-python just for the >> interface). No fancy simd was used, unless g++ did it on it's own. >> >> On a simple benchmark using timeit I find my hand-coded routine is on >> the order of 1000x faster than numpy? Here is the test code: >> My custom c++ code is dot2x1. I'm not copying it here because it has >> some dependencies. Any idea what is going on? >> >> import numpy as np >> >> from dot2x1 import dot2x1 >> >> a = np.ones ((1000,16)) >> b = np.array([ 0.80311816+0.80311816j, 0.80311816-0.80311816j, >> -0.80311816+0.80311816j, -0.80311816-0.80311816j, >> 1.09707981+0.29396165j, 1.09707981-0.29396165j, >> -1.09707981+0.29396165j, -1.09707981-0.29396165j, >> 0.29396165+1.09707981j, 0.29396165-1.09707981j, >> -0.29396165+1.09707981j, -0.29396165-1.09707981j, >> 0.25495815+0.25495815j, 0.25495815-0.25495815j, >> -0.25495815+0.25495815j, -0.25495815-0.25495815j]) >> >> def F1(): >> d = dot2x1 (a, b) >> >> def F2(): >> d = np.dot (a, b) >> >> from timeit import timeit >> print (timeit ('F1()', globals=globals(), number=1000)) >> print (timeit ('F2()', globals=globals(), number=1000)) >> >> In [13]: 0.013910860987380147 << 1st timeit >> 28.608758996007964 << 2nd timeit >> > > I'm going to guess threading, although huge pages can also be a problem on > a machine under heavy load running other processes. Call overhead may also > matter for such small matrices. > > What BLAS library are you using. I get much better results using an 8 year old i5 and ATLAS. Chuck
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion