基准测试(使用BLAS的python与c ++)和(numpy)
我想编写一个程序,该程序广泛使用BLAS和LAPACK线性代数功能。由于性能是一个问题,因此我做了一些基准测试,想知道我采用的方法是否合法。 可以说,我有三个参赛者,并希望通过一个简单的矩阵矩阵乘法来测试他们的表现。参赛者是: Numpy,仅使用的功能dot。 Python,通过共享对象调用BLAS功能。 C ++,通过共享库调用BLAS功能。 情境 我为不同的尺寸实现了矩阵矩阵乘法i。i为5的增量和matricies运行5-500 m1和m2设置了这样的: m1 = numpy.random.rand(i,i).astype(numpy.float32) m2 = numpy.random.rand(i,i).astype(numpy.float32) 1.脾气暴躁 使用的代码如下所示: tNumpy = timeit.Timer("numpy.dot(m1, m2)", "import numpy; from __main__ import m1, m2") rNumpy.append((i, tNumpy.repeat(20, 1))) 2. Python,通过共享库调用BLAS 具有功能 _blaslib = ctypes.cdll.LoadLibrary("libblas.so") def Mul(m1, m2, i, r): no_trans = c_char("n") n = c_int(i) one = …