Optimization algorithms are becoming increasingly more important in many areas, such as finance and engineering. Typically, real problems involve several hundreds of variables, and are subject to as many constraints. Several methods have been developed trying to reduce the theoretical time complexity. Nevertheless, when problems exceed reasonable sizes they end up being very computationally intensive. Heterogeneous systems composed by coupling commodity CPUs and GPUs are becoming relatively cheap, highly performing systems. Recent developments of GPGPU technologies give even more powerful control over them. In this paper, we show how we use a revised simplex algorithm for solving linear programming problems originally described by Dantzig for both our CPU and GPU implementations. Previously, this approach has showed not to scale beyond around 200 variables. However, by taking advantage of modern libraries such as ATLAS for matrix-matrix multiplication, and the NVIDIA CUDA programming library on recent GPUs, we show that we can scale to problem sizes up to at least 2000 variables in our experiments for both architectures. On the GPU, we also achieve an appreciable precision on large problems with thousands of variables and constraints while achieving between 2× and 2.5× speed-ups over the serial ATLAS-based CPU version. With further tuning of both the algorithm and its implementations, even better results should be achievable for both the CPU and GPU versions.
[1]
H. James Hoover,et al.
Limits to Parallel Computation: P-Completeness Theory
,
1995
.
[2]
Naga K. Govindaraju,et al.
Challenges and Opportunities in Many-Core Computing
,
2008,
Proceedings of the IEEE.
[3]
Sanjay Mehrotra,et al.
On the Implementation of a Primal-Dual Interior Point Method
,
1992,
SIAM J. Optim..
[4]
John N. Tsitsiklis,et al.
Introduction to linear optimization
,
1997,
Athena scientific optimization and computation series.
[5]
Stephen J. Wright.
Primal-Dual Interior-Point Methods
,
1997,
Other Titles in Applied Mathematics.
[6]
David Blythe,et al.
Rise of the Graphics Processor
,
2008,
Proceedings of the IEEE.
[7]
Robert A. van de Geijn,et al.
BLAS (Basic Linear Algebra Subprograms)
,
2011,
Encyclopedia of Parallel Computing.
[8]
Anne C. Elster,et al.
High-Performance Computing: Past, Present, and Future
,
2002,
PARA.
[9]
G. Cho.
A NEW PRIMAL-DUAL INTERIOR POINT METHOD FOR LINEAR OPTIMIZATION
,
2009
.
[10]
Katta G. Murty,et al.
Linear complementarity, linear and nonlinear programming
,
1988
.
[11]
John D. Owens,et al.
GPU Computing
,
2008,
Proceedings of the IEEE.
[12]
Narendra Karmarkar,et al.
A new polynomial-time algorithm for linear programming
,
1984,
Comb..
[13]
Dianne P. O'Leary,et al.
IMPLEMENTING AN INTERIOR POINT METHOD FOR LINEAR PROGRAMS ON A CPU-GPU SYSTEM
,
2010
.