gpt4 book ai didi

c - 在进程之间分配几乎均等的任务

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

我试图在一定数量的进程之间尽可能均匀地分配矩阵的行来完成某项任务,问题是,考虑到除法可能不准确,我无法弄清楚如何分配这些行行,尽管当我们假设除法相等时,这很容易做到。所以问题是这样的:

(假设精确除法):

//code...

work = rows / numprocs;

//leftover = rows % numprocs; /* what to do with this !! */

for(i = my_id * work; i < (my_id * work + work); i ++){
// do things...

//more code

提前致谢。

最佳答案

显然,某些进程将比其他进程包含更多的行。只需将剩余的 N 行(“剩余的”)分散到前 N 个进程中即可。

更新:

例如:

M = 22 rows
P = 5 processes
Q = M / P = 22 / 5 = 4
N = M - Q * P = 22 % 5 = 2

proc #0 - 5 rows
proc #1 - 5 rows
proc #2 - 4 rows
proc #3 - 4 rows
proc #4 - 4 rows

更新2:

获取行数、进程中起始行的函数:

// my_id = 0 -> (P-1)
R = (my_id < N) ? (M / P + 1) : (M / P);
S = (my_id < N) ? (my_id * R) : (my_id * R + N);

关于c - 在进程之间分配几乎均等的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30085165/

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