【问题标题】:Element wise multiplication between matrices in BLAS?BLAS中矩阵之间的元素乘法?
【发布时间】:2014-05-21 22:15:00
【问题描述】:

我开始在 c++(特别是 intel MKL)中使用 BLAS 函数来创建我的一些旧 Matlab 代码的更快版本。

到目前为止它运行良好,但我不知道如何在 2 个矩阵上执行元素乘法(Matlab 中的 A .* B)。

我知道 gemv 在矩阵和向量之间做了类似的事情,所以我应该将我的一个矩阵分解为 vectprs 并重复调用 gemv 吗?我认为这会起作用,但我觉得应该为这个操作内置一些东西。


【问题讨论】:

  • 不确定 BLAS 是否支持这一点。如果您可以将矩阵数据视为线性数据,那么this question 可能是相关的。另请参阅this thread
  • 显然已将对此的支持添加到 MKLDNN,但我认为 MKL 本身并不直接支持它。我没有显示它是如何使用的代码片段。 github.com/oneapi-src/oneDNN/issues/255

标签: c++ matlab matrix blas


【解决方案1】:

使用 Hadamard 产品。在 MKL 中是 v?MUL。例如。双打:

vdMul( n, a, b, y );

在 Matlab 表示法中它执行:

y[1:n] = a[1:n] .* b[1:n]

在您的情况下,您可以将矩阵视为向量。

【讨论】:

猜你喜欢
  • 2018-04-11
  • 2017-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多