【问题标题】:Advice about inversion of large sparse matrices关于大型稀疏矩阵求逆的建议
【发布时间】:2014-06-11 11:08:11
【问题描述】:

刚刚安装了一个装有两个 64 位 Intel Xeon X5680 3.33 GHz 处理器(每个 6 核)和 12 GB RAM 的 Windows 机器。我一直在一些大型数据集上使用 SAS,但它太慢了,所以我想设置 R 来进行并行处理。我希望能够进行矩阵运算,例如乘法和求逆。我的大部分数据都不大,3-4 GB 范围,但一个文件大约 50 GB。自从我使用 R 已经有一段时间了,所以我在网上四处查看,包括 CRAN HPC,看看有什么可用的。我认为 foreach 循环和 bigmemory 包将适用。我遇到了这篇文章:Is there a package for parallel matrix inversion in R,其中有一些有趣的建议。我想知道是否有人对 HIPLAR 包有经验。看起来 hiparlm 为矩阵包添加了功能,而 hiplarb 则完全添加了新功能。我的应用程序会推荐其中哪些?此外,还有对 PLASMA 库的参考。这有什么帮助吗?我的矩阵有很多零,所以我认为它们可以被认为是稀疏的。我没有看到任何关于如何将数据从 R 传递到 PLASMA 的示例,并且查看 PLASMA 文档,它说它不支持稀疏矩阵,所以我认为我不需要这个库。我在正确的轨道上吗?对其他方法有什么建议吗?

编辑:看起来 HIPLAR 和包 pbdr 没有帮助。我更倾向于大内存,尽管看起来 I/O 可能是个问题:http://files.meetup.com/1781511/bigmemoryRandLinearAlgebra_BryanLewis.pdf。本文讨论了虚拟关联矩阵的包 vam,但它必须是专有的。 package ff 在这里有什么帮助吗?我的 R 技能还不足以知道要追求的方向。很确定我可以使用 bigmemory 读取此内容,但不确定处理速度会非常快。

【问题讨论】:

  • ff 不会对矩阵运算有太大帮助。它更适合矩形对象。对于矩阵运算,你应该考虑r-pbd.org,即pbdDMAT包

标签: r matrix


【解决方案1】:

如果您想使用 HiPLAR(R 中的 MAGMA 和 PLASMA 库),目前仅适用于 Linux。对于这个和许多其他事情,我建议将您的操作系统切换到企鹅。

话虽如此,英特尔 MKL 优化可以为这类操作创造奇迹。对于大多数实际用途,这是要走的路。例如,使用 MKL 优化构建的 Python 处理大型矩阵的速度比 IDL 快约 20 倍,IDL 是专门为图像处理而设计的。 R 在使用 MKL 优化构建时同样显示出巨大的改进。您也可以从 Revolution Analytics 安装 R Open,其中包括 MKL 优化,但我不确定它与使用英特尔工具自己构建它的效果完全相同:https://software.intel.com/en-us/articles/build-r-301-with-intel-c-compiler-and-intel-mkl-on-linux

我肯定会考虑要执行的操作类型。 GPU 进程是那些非常适合高并行性的进程(许多相同的小计算同时运行,就像矩阵代数一样),但它们受到总线速度的限制。英特尔 MKL 优化的相似之处在于它可以帮助使用所有 CPU 内核,但它确实针对英特尔 CPU 架构进行了优化。因此,它也应该提供基本的内存优化。我认为这是最简单的路线。 HiPLAR 无疑是未来,因为它在设计上是 CPU-GPU,尤其是高度并行的异构架构正在进入消费系统。尽管我认为当今的大多数消费者系统都无法充分利用这一点。

干杯,

亚当

【讨论】:

    猜你喜欢
    • 2014-07-12
    • 2021-09-22
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多