跳转至

文献&代码阅读

CP_2012_GLUCOSE Restart

SAT问题是一个经典的NP完全问题。许多其他领域的问题都可以转化为SAT问题,并利用SAT求解器进行求解。搜索重启是现代SAT求解器的关键部分之一。一个优秀的重启策略可以提高现代SAT求解器的效率。作者将现代SAT求解器看作“子句生成器”,并使用文字块距离(LBD)对子句质量进行衡量。作者使用全局平均和局部平均的LBD作为动态评估子句质量的方法,并根据两者之间的差距,判断是否进行重启。针对该重启策略的实验表明:该重启策略能显著提高SAT问题中不可满足实例的判定效率,但对可满足实例没有显著的效率提升。作者又提出,当本次搜索中已赋值的变量数量显著多于之前搜索的平均数量时,对重启操作进行阻塞,可以帮助可满足实例的判定。我认为本文提出的重启策略和阻塞策略想法简明、实现有效,有助于后续SAT求解器的设计。

原论文 幻灯片

IJCAI_2012_Inprocessing

SAT问题是数学中的一个基础问题,而逻辑学、图论、计算机科学和运筹学等领域中的众多问题都可以转化为SAT问题。为了提高SAT求解器的性能,现代求解器往往会使用多种推理规则对子句进行化简。这些操作在求解过程前被称为预处理,在求解过程中被称为内处理。本文的作者认为混合使用多种化简技术可能存在求解过程不完整的问题,缺乏相关的理论支持。于是作者通过分析现有的技术,提取出其中的关键步骤,绘制出化简技术之间的关系图,随后提出了一个内处理规则框架,并且证明只要遵循该框架就可以保证求解过程的完整性。作者还将被广泛认可的求解技术套用到框架中以证明框架的合理性。我认为这个内处理框架能够为未来SAT求解器的设计提供指导性的帮助。

原论文 幻灯片

TACAS_2021_GPU Inprocessing

SAT问题是数学中的一个基础问题,而逻辑学、图论、计算机科学和运筹学等领域中的众多问题都可以转化为SAT问题。提高SAT求解器的性能,也就相当于提高了一大类问题的求解效率。在本论文中,作者希望通过GPU实现一个性能更高的SAT求解器,但GPU有限的存储空间成为了实现过程中的第一个阻碍。所以作者提出了一种并行回收垃圾存储空间的算法,相较于线性的垃圾回收算法具有极大的性能提升。作者还设计了一种在内处理过程中消除变量依赖的任务分配算法,使得内处理过程具有了一定的并行性。结合三阶段变量消去优化,并行内处理部分有平均1.8倍的性能提升。但是,可能由于该论文没有对CDCL SAT求解器的关键部分——冲突分析过程进行优化,导致GPU求解器对比CPU版本的整体提升并不大。

原论文 幻灯片

ASPLOS_2021_GAMMA

稀疏矩阵乘法是计算机领域中的基础问题,是许多稀疏算法的核心,如稀疏深度神经网络,稀疏线性和张量代数,图分析等。通过提高运行速度或是降低所需的缓存空间,都可以提高稀疏矩阵乘法在cpu与gpu上的运行效率。该论文从优化访存的角度出发,利用Gustavson算法,使得稀疏矩阵乘法的数据流行平稳化,从而使得内存的访问局部连续化。作者还针对该访存模式设计了片上存储结构和对应的动态调度算法,相较于同类的硬件系统提高了性能并降低了片上储存空间。

原论文 幻灯片