C++ 在C+中实现网格/循环进程并行化的最简单方法是什么+;

C++ 在C+中实现网格/循环进程并行化的最简单方法是什么+;,c++,parallel-processing,C++,Parallel Processing,我描述的一切都发生在我正在构建的水文模型中 我有一些for循环,用于控制跨网格数据集读取输入数据。初始输入可以是100x100到3000x3000单元之间的任意位置。读入这些输入后,我在网格上执行一些初始计算(5-10)。(有关我在输入中阅读的相关问题,请参见我的问题:)。在初始计算之后,我进入一种模式,在该模式下,我“进入”每个单元格并运行4-15个进程。每个单元都有大约15个进程的不同子集-其中一些单元在运行的进程方面与其他单元相同,没有一个单元运行其他地方不存在的子集。一个时间步由一个完整

我描述的一切都发生在我正在构建的水文模型中

我有一些for循环,用于控制跨网格数据集读取输入数据。初始输入可以是100x100到3000x3000单元之间的任意位置。读入这些输入后,我在网格上执行一些初始计算(5-10)。(有关我在输入中阅读的相关问题,请参见我的问题:)。在初始计算之后,我进入一种模式,在该模式下,我“进入”每个单元格并运行4-15个进程。每个单元都有大约15个进程的不同子集-其中一些单元在运行的进程方面与其他单元相同,没有一个单元运行其他地方不存在的子集。一个时间步由一个完整的循环通过所有单元组成。我可以跑30到15000个时间步

不,这是重要的部分,我认为:每个单元取决于相邻单元中运行的过程的结果,但不是在每个时间步。在一个时间步长内,当在一个单元格中时,当前正在运行的进程将引用上一个时间步长期间在相邻单元格中运行的进程的结果。单元中的任何内容都不取决于在同一时间段内相邻单元中运行的进程

因此,我认为我的程序在1000x10000个单元上运行1500个时间步大约需要一个小时,并行化的时机已经成熟。我已经对此做了初步研究,我担心解决方案会影响不同终端用户机器上的可移植性和性能


是否存在一种易于实施的解决方案,该解决方案不影响可移植性并适应不同用户的计算机内核数?

我会考虑使用GPU(图形卡)。有许多库支持这一点。由于您的程序在要求上似乎与康威的《生活游戏》相似,所以我会将其与谷歌的GPU或库名一起搜索。。。因此,你只需使用谷歌搜索。你打算使用哪种硬件?我使用的是一个使用两个内核的英特尔i7-5550U处理器和另一个具有8个内核的处理器(我记不清了)。但是这个程序将被发布到野外,供任何人使用,所以我不知道他们的计算机将如何设置。