首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大型RAM需求和群集/云

大型RAM需求和群集/云
EN

Stack Overflow用户
提问于 2011-08-26 01:15:02
回答 3查看 1K关注 0票数 1

这确实是一个生物信息学的问题,但我会尽可能地概括它。下面是半假设的情况:

假设我可以访问一个集群,甚至一个云。我想在这个集群/云上运行一些非常具体的程序(确切地说,是基因组/转录汇编程序)。问题是,我希望这些程序(天鹅绒/绿洲、三位一体等)需要大量内存,保守地说是100GB+,而我的集群/云上最大的节点只有32 my。

现在,除了切换到基于MPI/Hadoop的程序(ABySS或诸如此类),编写自己的程序,或者购买一台新计算机之外,我还有什么可行的选择?有没有人尝试过使用分布式操作系统(MOSIX、Kerrighed等)在群集/云的多个节点上共享内存?虚拟SMP怎么样?还有什么?

谢谢你的帮助!

编辑以澄清:我们还可以说,上面提到的程序(Velvet/Oases和Trinity)需要一个具有大RAM池的单一系统。在坚果外壳中,我正在寻找一种可行的方法,将一堆节点“粘贴”到一个虚拟超级节点中,在这个虚拟超级节点中,单个进程可以像访问单个系统一样访问所有节点的所有RAM。我知道像这样的东西可能会给性能带来相当大的影响,但我正在寻找可能的东西,而不一定是高效的。

附注:如果我的术语让事情变得混乱,我很抱歉。我对这其中的许多东西都有些陌生。

EN

回答 3

Stack Overflow用户

发布于 2011-08-26 02:22:51

这完全取决于你的应用程序的性质。切换到Hadoop、MPI、MOSIX或VSMP可能无法解决您的问题,因为当您可以将应用程序划分为多个并发执行块时,这些技术很有帮助。

现在,如果您的应用程序可划分为并发块,请选择适合您需求的最佳软件技术。否则,建议升级您的硬件。用于选择软件技术,如果您的应用程序:

  1. 是数据密集型的:试试Hadoop或Dryad或类似的东西。
  2. 是进程密集型的,在它的块之间传递许多消息:尝试
  3. 包含许多轻量级线程:为你的GPGPU使用GPGPU

看看斯坦福大学的RAMCloud project吧。这在某种程度上是相关的。

票数 2
EN

Stack Overflow用户

发布于 2011-09-26 07:22:07

您的问题省略了要完成的处理的性质。这一点尤为重要。例如,每个对象真的是100 in,还是100 in是许多小得多的对象的集合?

尽管如此,为了解决一般问题,我经常在内存映射文件中使用100GB+数据集。如果学习如何进行内存映射,您可能会发现这是一条非常简单路径。更重要的是,如果数据在一个地方,那么一个简单的方法就是使用NFS,然后多个系统可以同时访问相同的数据。在任何情况下,内存映射通常都很容易编织到现有程序中,特别是与管理数据块在网格中的移动相比。

正如你所注意到的,有像MOSIX或MPI这样的选项,或者你可以看看memcached或memcacheDB,尽管我认为从长远来看效果不是很好。就系统的排序而言,我建议首先使用内存映射,然后是MPI、MOSIX和memcached。

票数 1
EN

Stack Overflow用户

发布于 2014-04-03 23:14:36

在任何情况下,都不要使用MOSIX来解决此问题。MOSIX是一个分发CPU密集型线程的系统,当您需要大量协作时,它的性能通常不是很好。要使用这个大型数据集,无论如何都必须使用MPI。

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

https://stackoverflow.com/questions/7194477

复制
相关文章

相似问题

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