MKL BLAS 函数

所述accelerate.mkl.blas模块包含的由底层英特尔MKL库来实现BLAS功能的子集。

参考

accelerate.mkl.blas.dot( x , y )

计算并返回xy的向量点积。

参数:
  • x – 一维数组
  • y – 一维数组
返回类型:

结果

笔记:

可以复制输入参数以调整它们的类型。

accelerate.mkl.blas.axpy( alpha , x , y )

\(y \leftarrow alpha*x + y\)

参数:
  • alpha – 一个标量
  • x – 一维数组
  • y – 一维数组
返回类型:

一维数组

笔记:

可以复制输入参数以调整它们的类型。

笔记:

y仅在它具有适当的类型时就地修改。请参阅此示例

accelerate.mkl.blas.gemv( trans , alpha , A , x , beta=0. , y=None )

广义矩阵向量乘法:

\(y \leftarrow alpha*trans(A)*x + beta*y\)

参数:
  • 反式——
    'n','N':\(反式(A)=A\)
    't', 'T':\(trans(A)=A^T\)(A 的转置)
    'c','C':\(trans(A)=A^*\)(A 的厄米转置)
  • alpha – 一个标量
  • x – 一维数组
  • beta – 一个标量
  • y – 一维数组
返回类型:

一维数组

笔记:

可以复制输入参数以调整它们的类型,以及将维度排序调整为列优先。

笔记:

y仅在它具有适当的类型时就地修改。请参阅此示例。如果y别名Ax ,则结果未定义。

accelerate.mkl.blas.gemm( transa , transb , alpha , A , B , beta=0. , C=None )

广义矩阵-矩阵乘法:

\(C \leftarrow alpha*transa(A)*transb(B) + beta*C\)

参数:
  • 交易
    'n','N':\(transa(A)=A\)
    't', 'T':\(transa(A)=A^T\)(A 的转置)
    'c','C':\(transa(A)=A^*\)(A 的厄米转置)
  • transb -
    'n','N':\(transb(B)=B\)
    't', 'T':\(transb(B)=B^T\)(B 的转置)
    'c','C':\(transb(B)=B^*\)(B 的厄米转置)
  • alpha – 一个标量
  • A – 二维数组
  • B——二维数组
  • beta – 一个标量
  • C – 二维数组
返回类型:

二维数组

笔记:

可以复制输入参数以调整它们的类型,以及将维度排序调整为列优先。

笔记:

仅当C具有适当的类型时,它才会就地修改。请参阅此示例。如果C别名AB ,则结果未定义。

示例

alpha = 1.+1.j
A = np.arange(16, dtype=np.float64).reshape(4,4)
x = np.arange(4, dtype=np.float64)
beta = 0.
y = np.arange(4, dtype=np.float64)
result = blas.gemv('N', alpha, A, x, beta, y)

由于alpha是复数,\(alpha*A*x + beta*y\) 的结果也将是复数,因此不能存储在y 中。因此y不能就地修改。