一句话:揭示 GPU 执行 NFA 的内存与利用率瓶颈,并通过内存私有化、查表计算化与动态调度显著加速。
本文研究为何具备高并行度与高内存带宽的 GPU 仍难以高效执行非确定性有限自动机(NFA)。作者首先指出 GPU 内存层次中的过度数据移动是主要瓶颈,提出利用片上存储实现读私有化,并将部分间接表查询转换为计算以减少内存读取。这些优化虽缓解内存瓶颈,却导致工作静态绑定到核心、空闲 NFA 状态浪费算力的问题。为此,作者提出动态方案,在降低内存使用的同时平衡计算利用率。组合优化显著优于已有最佳 GPU NFA 实现,并在多个应用上超过专用 Automata Processor,其余应用也在一数量级以内。
Non-deterministic Finite Automata (NFA) are space-efficient finite state machines that have significant applications in domains such as pattern matching and data analytics. In this paper, we investigate why the Graphics Processing Unit (GPU)---a massively parallel computational device with the highest memory bandwidth available on general-purpose processors---cannot efficiently execute NFAs. First, we identify excessive data movement in the GPU memory hierarchy and describe how to privatize reads effectively using GPU's on-chip memory hierarchy to reduce this excessive data movement. We also show that in several cases, indirect table lookups in NFAs can be eliminated by converting memory reads into computation, to further reduce the number of memory reads. Although our optimization techniques significantly alleviate these memory-related bottlenecks, a side effect of these techniques is the static assignment of work to cores. This leads to poor compute utilization, where GPU cores are wasted on idle NFA states. Therefore, we propose a new dynamic scheme that effectively balances compute utilization with reduced memory usage. Our combined optimizations provide a significant improvement over the previous state-of-the-art GPU implementations of NFAs. Moreover, they enable current GPUs to outperform the domain-specific accelerator for NFAs (i.e., Automata Processor) across several applications while performing within an order of magnitude for the rest of the applications.