我必须将两个数组与OpenMP合并。想法是通过联合排序将数组划分为p个段(其中p是处理器数量),然后让这些段中的每个处理器合并。
问题是,与两个数组的非并行合并相比,根本没有提速。
我检查了a
和b
数组的分割范围是否正确,并且据我所知。 coRank
函数在a
和c
的{{1}}中将b
的值排名,据我所知这似乎是正确的,不应引起问题。如果我们查看Windows Task Manager的CPU使用情况,则在程序启动时所有CPU内核的峰值都相同,因此我假设所有CPU实际上都可以执行某项操作。合并后的数组是正确的,但是它需要一个顺序的合并。
a
merge函数的输出是正确的,但是它应该比顺序合并要快,而事实并非如此。