gpt4 book ai didi

c - 进程 ID 的数学表达式作为网格大小、进程数量和线路 ID 的函数

转载 作者:行者123 更新时间:2023-11-30 17:43:22 26 4
gpt4 key购买 nike

我正在和一些组员一起编写一个程序,模拟动物在 NxN 细胞世界中的位置。我们已经将其作为串行程序完成,现在我将其更改为分布式,使用 OpenMPI。我们决定按进程平均分配世界线。

示例:在 8x8 世界 (N=8) 中,有 3 个进程 (p=3):

pid=0 handles lines 0, 1 and 2;
pid=1 handles lines 3, 4 and 5;
pid=2 handles lines 6 and 7.

我需要的是一个数学表达式(不是 C 函数!),它给我 pid 作为 N(世界上的行数)、p(进程数)和 i(行索引)的函数 [pid = f(N, p, i)]

Using previous example:
f(8, 3, 0) = 0;
f(8, 3, 1) = 0;
f(8, 3, 2) = 0;
f(8, 3, 3) = 1;
f(8, 3, 4) = 1;
f(8, 3, 5) = 1;
f(8, 3, 6) = 2;
f(8, 3, 7) = 2;

我不需要函数,因为如果我有一个 1000000x1000000 的世界,大约有 1000000^2 只动物,那么每个动物都会调用该函数一次。我认为“简单”的数学表达式更快,但我很难推导它。

提前致谢

最佳答案

您的意思是,如果 p=3,则 s(大小)= N/p,并且对于 N 中的任何 i:

pid = roundUp(i/N*s)

是这个吗?

关于c - 进程 ID 的数学表达式作为网格大小、进程数量和线路 ID 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20248414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com