批处理线性规划在GPU上的同时求解
Simultaneous Solving of Batched Linear Programs on a GPU
摘要:
线性程序(LP)出现在大量应用程序中,将它们卸载到GPU可以提高性能。在GPU上卸载和求解LP的现有工作表明,通常在大尺寸LP(通常为500个约束、500个变量及以上)上存在性能增益。为了获得GPU的性能,对于涉及中小型LP的应用程序,我们建议并行批量求解大量LP。在本文中,我们提出了一个批处理LP求解器的CUDA,保持内存合并访问,低CPU-GPU内存传输延迟和负载均衡为目标的设计和实现。批处理LP求解器的性能进行了比较,在CPU中使用开源求解器GLPK(GNU线性编程工具包)和CPLEX求解器从IBM的顺序解决。对Netlib库中选定的LP基准测试的评估显示,对于一批1 e5 LP,CPLEX和GLPK求解器的最大速度分别为95倍和5倍。我们展示了我们的批处理LP求解器的应用,以提高控制系统设计的数学模型的状态空间探索领域的性能。
英文摘要:
Linear Programs (LPs) appear in a large number of applications and offloading them to a GPU is viable to gain performance. Existing work on offloading and solving an LP on a GPU suggests that there is performance gain generally on large sized LPs (typically 500 constraints, 500 variables and above). In order to gain performance from a GPU, for applications involving small to medium sized LPs, we propose batched solving of a large number of LPs in parallel. In this paper, we present the design and implementation of a batched LP solver in CUDA, keeping memory coalescent access, low CPU-GPU memory transfer latency and load balancing as the goals. The performance of the batched LP solver is compared against sequential solving in the CPU using the open source solver GLPK (GNU Linear Programming Kit) and the CPLEX solver from IBM. The evaluation on selected LP benchmarks from the Netlib repository displays a maximum speed-up of 95x and 5x with respect to CPLEX and GLPK solver respectively, for a batch of 1e5 LPs. We demonstrate the application of our batched LP solver to enhance performance in the domain of state-space exploration of mathematical models of control systems design.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。