我发现,numpy.sin当参数大小小于等于8192且大于8192时,行为会有所不同。性能和返回的值都不同。有人可以解释这种影响吗?
例如,让我们计算sin(pi / 4):
x = np.pi*0.25
for n in range(8191, 8195):
xx = np.repeat(x, n)
%timeit np.sin(xx)
print(n, np.sin(xx)[0])
Run Code Online (Sandbox Code Playgroud)
64.7 µs ± 194 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
8191 0.7071067811865476
64.6 µs ± 166 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
8192 0.7071067811865476
20.1 µs ± 189 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
8193 0.7071067811865475
21.8 …Run Code Online (Sandbox Code Playgroud) 拜托,我这里需要一盏灯。我想在 Windows 上使用一个好的 BLAS/LAPACK 库安装 numpy ,但绝对没有页面足够好地解释这个过程。看来 OpenBLAS 是一个不错且快速的选择。
目标是将“theano”与“keras”结合使用,而“theano”要求库是“动态的”,而不是静态的。(不确定我明白这意味着什么,但它会导致缓慢和内存问题)
请把我当作一个完全的新手。给我一个关于如何做到这一点的分步教程!不要忘记告诉我文件应该放在“哪里”!哪些文件夹应该放在 PATH 中!我应该调用什么命令,它们的输出是什么,在哪里?我如何处理他们的结果或编译文件?numpy 如何找到它们?等等。我见过的所有网站似乎都认为我是 linux 专家并且已经知道一切。
我尝试过的:
从这里下载了 numpy+mkl 的编译版本-- 这确实安装了 numpy,它变得可用了,但是 theano 出现了内存泄漏问题,除了工作缓慢之外。是ldflags在.theanorc文件中设置权限的问题吗?如果是这样,哪些是标志?- 关于 MKL 库,这个答案可能有用吗?
尝试安装 Anaconda - 它也不起作用,我不知道出了什么问题。它给了我建议安装一些额外东西的消息,它工作但非常慢。比我上面提到的被窃听的 numpy 版本慢 10 倍以上(所以,不可接受,不可能以这种速度工作)。如果我必须更改有关 Anaconda 的所有内容,最好改用常规 Python 并了解发生了什么。
发现这些已经编译的BLAS/LAPACK 库(.dll 和 .lib)文件。但是……我该怎么处理他们?-- 只需将他们的文件夹添加到PATHvar 并安装 numpy 给我“numpy-atlas”,而不是我下载的库。我如何让 numpy 看到它们?
试图理解这个页面,但是,它似乎会引导我完全到上一个案例,我将如何处理结果?他们建议我使用的库在哪里?什么是建议的quickbuild脚本,它们在哪里?
在此处找到 Cygwin …
Anaconda Python 发行版使用针对 Intel-MKL 库而不是“标准”NumPy 编译的 NumPy(和相关包)。如何在特定的 conda 环境中使用带有“标准”NumPy 的 Anaconda?不幸的是,目前还不能使用另一个 Python 发行版。如果相关:我使用的是 Windows 和 Python 3.6。
我想测试和比较使用英特尔 MKL 和不使用英特尔 MKL 的 Numpy 矩阵乘法和特征分解性能。
我已经使用pip install mkl(Windows 10(64位),Python 3.8)安装了MKL。
然后我使用这里的示例进行 matmul 和特征分解。
我现在如何启用和禁用 MKL 以便检查使用 MKL 和不使用 MKL 时的 numpy 性能?
参考代码:
import numpy as np
from time import time
def matrix_mul(size, n=100):
# reference: https://markus-beuckelmann.de/blog/boosting-numpy-blas.html
np.random.seed(112)
a, b = np.random.random((size, size)), np.random.random((size, size))
t = time()
for _ in range(n):
np.dot(a, b)
delta = time() - t
print('Dotted two matrices of size %dx%d in %0.4f ms.' % (size, size, delta / n …Run Code Online (Sandbox Code Playgroud)