关于大型稀疏矩阵求逆的建议

时间:2014-04-25 16:13:01

标签: r matrix

刚刚安装了一个带有两个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没有帮助。我更倾向于bigmemory,虽然看起来I / O可能是一个问题:http://files.meetup.com/1781511/bigmemoryRandLinearAlgebra_BryanLewis.pdf。本文讨论虚拟关联矩阵的包vam,但它必须是专有的。包ff在这里会有什么帮助吗?我的R技能还不足以知道追求的方向。我很确定我可以使用bigmemory读取它,但不确定处理速度会非常快。

1 个答案:

答案 0 :(得分:0)

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

话虽如此,英特尔MKL优化可以为这类操作带来奇迹。对于大多数实际用途,它是要走的路。例如,使用MKL优化构建的Python可以处理大型矩阵,比IDL专门用于图像处理的速度快20倍。当使用MKL优化构建时,R同样显示出巨大的改进。您还可以从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设计,特别是高度并行的异构架构进入消费者系统。如今,大多数消费者系统都无法充分利用这一点。

干杯,

亚当