【发布时间】:2014-06-23 15:59:08
【问题描述】:
我需要编写一个 C 函数来计算 n 个输入的最小值,并将它们按升序插入到数组中。输入没什么特别的。全部为正且
简而言之,MPI master 将 masterArray(填充随机整数)拆分为 subArrays。从站对子数组进行排序并将其返回给主站。然后,主人必须将已排序的子数组重新拼接到一个已排序的 finalArray 中(除非我可以重用 masterArray)。主机根据从机的数量获得n个子数组,需要从n个数组中挑选出n个值中的最小值,然后需要将指针前进到从中挑选出来的数组,所以该值将不再被考虑。直到所有的值都按升序传输到 finalArray 中。
我存储排序后的子数组的方式,因为它们来自主服务器的 Recv,是 memcpy() 将每个 chunkSize 元素的临时数组,其中 chunkSize = ARRAY_SIZE/(nprocs-1) 放入我称为一维数组 semiSortedArrays 中。
首先,我不太确定您如何定义一个接受 n 值的函数。我无法跟踪所有指针以及如何将 n 个参数传递给函数调用。我真的很感激一些帮助,因为我很困惑。
非常感谢,斯科特
【问题讨论】:
-
TL;DR 但是你的代码在哪里需要查看?
-
Errr 为什么这与排序有关? MPI 有一个 reduce 方法,可以在一次调用中完成此操作。 mpitutorial.com/mpi-reduce-and-allreduce: "MPI_MIN – 返回最小元素。"
-
一个接受 n 个值的函数 int *array;数组 = malloc(7);无效 func1(int *a);等等。你有一些你尝试过的代码吗?
-
哦,我不计算(我什至不确定这是否应该称为计算)来自 n 个输入的最小值......它应该对来自 n 个输入向量的最小值进行排序。我猜……
-
这不就是一个归并排序吗?