Place the following in your home directory at ~/.numpy-site.cfg in order to install numpy with openblas support
# Place the following in your home directory at ~/.numpy-site.cfg | |
# in order to install numpy with openblas support | |
[openblas] | |
libraries = openblas | |
library_dirs = /usr/local/opt/openblas/lib | |
include_dirs = /usr/local/opt/openblas/include |
# Copyright (c) Huy Nguyen 2013 | |
# All rights reserved. | |
# | |
# Redistribution and use in source and binary forms, with or without modification, | |
# are permitted provided that the following conditions are met: | |
# | |
# * Redistributions of source code must retain the above copyright notice, this | |
# list of conditions and the following disclaimer. | |
# | |
# * Redistributions in binary form must reproduce the above copyright notice, this | |
# list of conditions and the following disclaimer in the documentation and/or | |
# other materials provided with the distribution. | |
# | |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | |
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR | |
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | |
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
def _force_forder(x): | |
""" | |
Converts arrays x to fortran order. Returns | |
a tuple in the form (x, is_transposed). | |
""" | |
if x.flags.c_contiguous: | |
return (x.T, True) | |
else: | |
return (x, False) | |
def dot(A,B): | |
""" | |
Uses blas libraries directly to perform dot product | |
""" | |
from scipy import linalg | |
A, trans_a = _force_forder(A) | |
B, trans_b = _force_forder(B) | |
gemm_dot = linalg.get_blas_funcs("gemm", arrays=(A,B)) | |
# gemm is implemented to compute: C = alpha*AB + beta*C | |
return gemm_dot(alpha=1.0, a=A, b=B, trans_a=trans_a, trans_b=trans_b) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
I have tried to run your fastdot code but am receiving an error (works fine with 2-tensors but not for 3-tensors). Once I edit the site.cfg file am I supposed to do something else (I suspect my openblas is not correctly synced with numpy)?