排序网络的凝聚律及其在函数式程序设计中的应用
An Agglomeration Law for Sorting Networks and its Application in Functional Programming
摘要:
在本文中,我们将提出一个一般的凝聚法排序网络。聚合是设计并行程序时的常用技术,用于控制计算的粒度,从而在算法和算法运行的机器之间找到更好的匹配。通常,这是通过将较小的任务分组并在一个并行进程中整体计算它们来完成的。在排序网络的情况下,这可以通过用一个进程计算网络的更大部分来完成。本文中的凝聚法则追求一种不同的策略:将输入数据分组,并在保持算法原始结构的情况下将算法推广到凝聚输入。这将导致一个新的访问机会,排序网络非常适合在现代多核计算机,计算机网络或GPGPU编程的有效并行化。此外,这使我们能够使用排序网络作为任意排序算法的(并行或分布式)合并阶段,从而轻松创建新的混合排序算法。函数式程序设计语言的表达能力帮助我们将这一定律应用于系统构建的排序网络,从而产生高效且易于适应的排序算法。最后,用Eden程序设计语言给出了一个应用实例,说明了该方法的有效性。不同的并行排序算法的运行时行为的实现进行了比较。
英文摘要:
In this paper we will present a general agglomeration law for sorting networks. Agglomeration is a common technique when designing parallel programmes to control the granularity of the computation thereby finding a better fit between the algorithm and the machine on which the algorithm runs. Usually this is done by grouping smaller tasks and computing them en bloc within one parallel process. In the case of sorting networks this could be done by computing bigger parts of the network with one process. The agglomeration law in this paper pursues a different strategy: The input data is grouped and the algorithm is generalized to work on the agglomerated input while the original structure of the algorithm remains. This will result in a new access opportunity to sorting networks well-suited for efficient parallelization on modern multicore computers, computer networks or GPGPU programming. Additionally this enables us to use sorting networks as (parallel or distributed) merging stages for arbitrary sorting algorithms, thereby creating new hybrid sorting algorithms with ease. The expressiveness of functional programming languages helps us to apply this law to systematically constructed sorting networks, leading to efficient and easily adaptable sorting algorithms. An application example is given, using the Eden programming language to show the effectiveness of the law. The implementation is compared with different parallel sorting algorithms by runtime behaviour.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。