我正在使用几种技术(NumPy、Weave、Cython、Numba)来执行 Python 性能基准测试。该代码采用两个大小为 NxN 的 numpy 数组并将它们逐元素相乘并将值存储在另一个数组 C 中。
我的weave.inline()
代码给了我一个scipy.weave.build_tools.CompileError
. 我创建了一段极简代码,它会产生相同的错误。有人可以帮忙吗?
import time
import numpy as np
from scipy import weave
from scipy.weave import converters
def benchmark():
N = np.array(5000, dtype=np.int)
A = np.random.rand(N, N)
B = np.random.rand(N, N)
C = np.zeros([N, N], dtype=float)
t = time.clock()
weave_inline_loop(A, B, C, N)
print time.clock() - t
def weave_inline_loop(A, B, C, N):
code = """
int i, j;
for (i = 0; i < N; ++i)
{
for (j = 0; j < N; ++j)
{
C(i, j) = A(i, j) * B(i, j);
}
}
return_val = C;
"""
C = weave.inline(code, ['A', 'B', 'C', 'N'], type_converters=converters.blitz, compiler='gcc')
benchmark()