我描述的所有内容目前都出现在我正在建设的水文模型中。
我有一些for循环控制跨网格数据集的输入数据读取。初始输入可以是100x100到3000x3000个单元格。读完这些输入后,我在网格上执行一些初始计算(5-10)。 (请在此处查看我的问题,以了解与阅读输入相关的问题:http://bit.ly/1AkyzWy)。在初步计算之后,我进入一个模式,我步入"进入"每个细胞并运行4-15个过程。每个细胞都有大约15个过程的不同子集 - 其中一些细胞在运行的过程方面与其他细胞相同,并且没有细胞运行在其他地方不存在的子集。时间步长包括一个完整的循环遍历所有单元格。我可以在30到15,000个时间段内运行。
这里没有重要的部分,我认为:每个单元格取决于在相邻单元格中运行的进程的结果,但不是在每个时间步长期间。在一个时间步骤内,当在一个单元中时,当前运行的进程引用在前一个时间步长期间在相邻单元中运行的进程的结果。单元格内的任何内容都不依赖于在相同时间步长期间在相邻单元格中运行的进程。
因此,我认为我的程序可能需要一个小时左右才能在1000x10000单元上运行1500个步骤,这对于并行化来说已经成熟。我已经对此进行了初步研究,我担心影响不同最终用户计算机上的可移植性和性能的解决方案。
是否存在易于实施的解决方案,不会影响可移植性并适应不同的用户'计算机核心数量?