代码之家  ›  专栏  ›  技术社区  ›  Thermodynamix

如何在集群上存储TB大小的C++数组

  •  0
  • Thermodynamix  · 技术社区  · 6 年前

    我想做一个巨大的模拟,需要大约1 TB的数据来描述一堆相互作用的粒子(每个粒子有不同的相互作用)。是否可以将这些数据存储在C++数组中?

    我可以访问一个60节点的集群。每个节点有2个CPU和48x16GB DDR4。因此,每个节点的总内存为192 GB,或者说集群上的总内存为11520 GB=11 TB。如何在此群集上动态分配1 TB阵列?

    1 回复  |  直到 6 年前
        1
  •  0
  •   John Zwinck    6 年前

    您有1 TB的数据和11 TB的总内存。因此,将所有数据存储在集群上是没有问题的,只是如何存储的问题。

    您可以将它打包到尽可能少的节点上,即6个节点。或者你可以把它分散到所有60个节点上。哪种方法更好取决于许多因素,包括使用这些数据的访问模式、集群的成本模型(无论使用多少节点,都是免费的吗?),等等。

    您需要确定特定集群上每个任务可用的最大内存是多少。这是由集群管理员配置的。例如,某些集群可能会平均分配内存,因此每个节点中的192 GB RAM可能仅在为节点上的core运行一个任务时可用,而不是在每个节点运行一个任务时可用。您还没有告诉我们有多少个核心,显然我们也不知道您的集群的使用策略是什么。

    C++问题的答案是:是的,你可以在C++中存储1个TB vector array list map