1.1为求全局总和例子中的my_first_i和my_last_i推导一个公式。需要注意的是:在循环中,应该给各个核分配数目大致相同的计算元素。提示:先考虑n能被p整除的情况。
时间: 2024-05-19 08:16:43 浏览: 76
对于n能被p整除的情况,即每个核处理的元素数相等,我们可以做如下计算:
每个核处理的元素数为n/p。
其中第i个核需要处理的元素为[i * (n/p) + 1, (i+1) * (n/p)]。
因此,my_first_i = i * (n/p) + 1,my_last_i = (i+1) * (n/p)。
综上所述,对于n能被p整除的情况,我们可以得到公式:
my_first_i = i * (n/p) + 1
my_last_i = (i+1) * (n/p)
在无法整除的情况下,我们可以考虑将剩余的元素均匀地分配给各个核。具体来说,我们可以将未被整除的元素平均地分配给前面几个核,例如前r个核每个处理的元素数为(n/p+1),后面的核每个处理的元素数为(n/p)。这样可以使各个核的负载尽量均衡。
考虑到这个问题的重点是求公式,所以在代码实现中还需要考虑边界问题,例如最后一个核的my_last_i即为n。
阅读全文