【发布时间】:2015-12-05 21:40:56
【问题描述】:
这和我的帖子here有点关系。
我正在尝试在 Rust 中实现矩阵乘法,我认为为了有效地做到这一点,我需要能够从矩阵中获取列数据。这很困难,因为我以行优先格式存储矩阵。
我正在使用上述link 和我之前的question 中详细介绍的展开点积实现。我希望能够为这个方法提供一个矩阵的行和另一个矩阵的列。
如何有效地从矩阵中选择列数据?更一般地说:如何选择任意数据模式(如 R、matlab、numpy 等)?
我试过了:
- 使用跨步视图并收集迭代器 - 这似乎太慢了。
- 使用标准进行循环迭代,但这似乎没有被 Rust 编译器向量化。
【问题讨论】:
-
我觉得你缺少上下文。例如,为什么不能直接使用跨步视图?你能先转置整个(子?-)矩阵,然后去重吗?什么没有被矢量化? - 也许我们可以解决这个问题。
-
LLVM 不一定会自动矢量化跨步循环,即使它可以识别一个,请参阅llvm.org/docs/Vectorizers.html#scatter-gather