如何在群集上存储TB大小的C ++阵列

问题描述 投票:0回答:1

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

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

c++ memory-management heap-memory large-data hpc
1个回答
0
投票

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

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

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

您的C ++问题的答案是:是的,您可以在C ++ vectorarraylistmap或任何其他数据结构中存储1 TB。 C ++对此没有任何限制。

© www.soinside.com 2019 - 2024. All rights reserved.