首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集群上R的内存虚拟化

集群上R的内存虚拟化
EN

Stack Overflow用户
提问于 2014-07-26 03:59:37
回答 3查看 220关注 0票数 1

我对并行计算几乎一无所知,所以这个问题可能很愚蠢,而且可能不可能做我想做的事情。

我使用的是有40个节点的linux集群,但是由于我不知道如何在R中编写并行代码,所以我只能使用一个。在这个节点上,我试图分析内存被淹没的数据(大约64 am )。所以我的问题不是缺乏计算能力,而是内存限制。

我的问题是,是否甚至可以使用一些R包(如doSnow)来进行隐式并行化,使用2-3个节点来增加内存限制,还是需要从地面重写脚本以使其显式并行化?

对不起,如果我的问题太天真,欢迎任何建议。

谢谢,

西蒙

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-26 05:30:22

我不认为有这样的包裹。原因是这样做没有多大意义。内存访问非常快,从另一台计算机通过网络访问数据的速度与此相比非常慢。因此,如果存在这样一个包,它几乎是无用的,因为处理器需要一直等待网络上的数据,这将使计算非常慢。

这对于从现成硬件构建的普通计算集群来说是正确的.如果您有一个特殊的集群,其中远程内存访问是快速的,并且是作为操作系统的服务提供的,那么它当然不会那么糟糕。

否则,您需要做的是尝试将问题划分为多个部分,手动,然后使用R或其他工具进行并行化。

一种替代方法是将一些数据保存在磁盘上,而不是将所有数据加载到内存中。在加载数据的另一部分之前,您仍然需要(某种程度上)划分问题,以确保内存中的数据部分被用于合理的计算时间。

是否值得(或完全可能)执行这些选项,完全取决于您的应用程序。

顺便说一句。在R中有一个很好的高性能计算工具列表:http://cran.r-project.org/web/views/HighPerformanceComputing.html

票数 3
EN

Stack Overflow用户

发布于 2021-05-18 18:54:48

关于今后的调查:

你可能想看看两个包“雪”和“平行”。库“斯诺”扩展了apply/lapply/sapply的功能.在多个核心和/或一个节点上工作。

当然,您可以使用多个核心执行简单的并行计算:

#SBATCH --cpus每个任务=(在这里输入一些数字)

您还可以使用多个节点(最好使用前面提到的库)执行并行计算:

#SBATCH -n任务-每个节点=(在这里输入一些数字)

但是,考虑到几个方面的含义,您可能想要使用Python而不是R,在这里,使用"Dask“工作人员可以更有效地执行并行。

票数 1
EN

Stack Overflow用户

发布于 2014-09-17 23:42:12

您可能想看看TidalScale,它允许您聚合集群上的节点,使用底层节点的集合资源运行一个Linux实例。www.tidalscale.com。尽管R应用程序可能本质上是单线程的,但是您可以在节点之间为R应用程序提供一个单一的、简单的、连贯的内存空间,这对您的应用程序是透明的。

祝你的项目好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24967400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档