【发布时间】:2018-09-26 21:30:25
【问题描述】:
我目前正在对通过药物贴剂的扩散过程进行建模,其中涉及使用数值方法求解 PDE。我当前的问题是尝试在 C 中为多维数组动态分配内存。
我要分配内存的数组是:
双联[1000][1000][1000];
还可以动态地将内存分配给另一个维度的数组吗?我正在 64 位系统上编写代码,但是,我使用 shell(Bitvise SSH 客户端)来编译代码,以便我可以在超级计算机(BlueShark?)上运行它。
双联[1000][1000][1000][1000];
有人提示我使用 MPI 来完成这项任务?
感谢您的关注和帮助!
【问题讨论】:
-
1) 发布执行“我要分配内存的数组是:”的代码 2) 先尝试小于 1000 的值,例如 10。
-
为
double marray[1000][1000][1000];分配内存很简单:double (*a)[1000][1000][1000] = malloc (sizeof *a);- 尽管您的机器可能缺乏资源和足够宽的size_t。 -
嘿 Chux 感谢您的回复,我使用动态内存分配的唯一做法是将内存分配给矩阵(2-D),因此我不知道从哪里开始(3- D) 或 (4-D)。也许有指针的东西?
-
@TimBroslav:超级计算机通常只是快速网络上的大量小型机器。您需要找到一种方法将阵列分布在多台机器上 - 例如对于 1000 台机器,每台机器大约有 8 GiB,并且不会在任何一台机器上拥有全部 8 TiB 的数据。 C 不会为您执行此操作,您需要某种库(例如,可能是“Open MPI”)。
-
OPM 只是 C 的扩展,这是我正在使用的,我应该提到这一点,对不起。
标签: c multidimensional-array mpi dynamic-memory-allocation