SAWdoubler:一个计算自我回避行走的程序
SAWdoubler: a program for counting self-avoiding walks
摘要:
本文介绍了一个用倍长法计算正则格上自回避游动总数Z(N)的软件包SAWdoubler,其基本概念已由我们发表.我们讨论了一种算法,用于创建所有SAW的长度为N,这些SAW在树数据结构中的有效存储,以及一种算法,用于计算校正项的计数Z(2N)的SAW的两倍长度,删除所有组合的两个相交的单一长度的SAW。我们提出了一个有效的编号的网格网站,使利用对称性,并导致一个更小的树数据结构,这种编号是通过增加欧几里德距离从原点的网格。此外,我们展示了如何通过将算法的主循环的迭代分布在多核架构的核心上来并行计算。在三维立方晶格上的实验结果表明,Z(28)可以在双核PC上仅用1小时40分钟计算,与单核计算相比,加速比为1.56,并且通过使用26倍的对称性获得增益。我们目前的结果为内存的使用,并显示如何计算,以适应在4 GB的RAM。很容易将SAWdoubler软件扩展到其他格;它在GNU LGPL许可下公开可用。
英文摘要:
This article presents SAWdoubler, a package for counting the total number Z(N) of self-avoiding walks (SAWs) on a regular lattice by the length-doubling method, of which the basic concept has been published previously by us. We discuss an algorithm for the creation of all SAWs of length N, efficient storage of these SAWs in a tree data structure, and an algorithm for the computation of correction terms to the count Z(2N) for SAWs of double length, removing all combinations of two intersecting single-length SAWs. We present an efficient numbering of the lattice sites that enables exploitation of symmetry and leads to a smaller tree data structure; this numbering is by increasing Euclidean distance from the origin of the lattice. Furthermore, we show how the computation can be parallelised by distributing the iterations of the main loop of the algorithm over the cores of a multicore architecture. Experimental results on the 3D cubic lattice demonstrate that Z(28) can be computed on a dual-core PC in only 1 hour and 40 minutes, with a speedup of 1.56 compared to the single-core computation and with a gain by using symmetry of a factor of 26. We present results for memory use and show how the computation is made to fit in 4 Gbyte RAM. It is easy to extend the SAWdoubler software to other lattices; it is publicly available under the GNU LGPL license.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。