LPG: Linear Programming on GPGPUs

Project contains:

  • libLPG - library that contains functions to solve linear programmes using a CPU or GPGPU.
  • LPG - a command-line based interface to the libLPG solver [not implemented yet!]
  • libOsiLPG - an Open Solver Interface library to allow COIN-OR projects to use LPG as their LP solver.

Project file structure

  • BuildTools [taken from the COIN-OR BuildTools SVN]
  • CoinUtils [taken from the COIN-OR CoinUtils SVN]
  • libLPG
    • kernel [the OpenCL kernels used by libLPG]
    • src [the C++ files and headers used by libLPG]
    • MSVisualStudio [the solution/project file for libLPG]
  • libOsiLPG
    • MSVisualStudio [the solution/project file for libOsiLPG]
    • src [the C++ files and headers used by libOsiLPG]

Project status

Done before 24th January

  • Solve LPs in single and double precision on CPU (dense A matrix, standard computational form)
  • Solve LPs in single precision on GPU (dense A, SCF)
  • Solve LPs with CBC

Todo

  • Implement all functions required for CBC to solve IPs using LPG
  • Write code to take any problem and convert to SCF
  • Enhance solvers to accept bounds on columns
  • Make solvers that can handle sparsity
  • Write the CLI for LPG

Firing up CBC with LPG (on Windows, VS2008)

These instructions will help you compile a simple example that uses CBC:

  1. Download CBC from its SVN repository
  2. Download LPG from...!
  3. Open the \Cbc\MSVisualStudio\v9\Cbc.sln solution file
  4. Add the libLPG and libOsiLPG projects to the solution
  5. Add a new empty project, call it cbcExampleMin
  6. Add \Cbc\examples\minimum.cpp to the new project
  7. Set cbcExampleMin as the StartUp project (right click on the project name, pick from menu)
  8. Set cbcExampleMin's dependecies to be:
    1. libCbc
    2. libCoinUtils
    3. libLPG
    4. libOsi
    5. libOsiCBC
    6. libOsiLPG
    7. libClp [needed for CBC, could probably be removed with correct config]
    8. libOsiClp [needed for CBC, could probably be removed with correct config]
    9. libCgl [needed for CBC]
  9. Set project properties -> C/C++ -> Code Generation -> Runtime library to /MTd
  10. Set the project to look in the following folders for includes:
    1. \Cbc\src
    2. \CoinUtils\src
    3. \BuildTools\headers
    4. \Osi\src
    5. LPG (wherever it is)\libOsiLPG\src
  11. Change the line:
    1. #include "OsiClpSolverInterface.hpp"
    2. to
    3. #include "OsiLpgSolverInterface.hpp"
  12. Change the line:
    1. OsiClpSolverInterface solver1;
    2. to
    3. OsiLpgSolverInterface solver1;
Edit | Attach | Watch | Print version | History: r6 | r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r1 - 2011-01-23 - IainDunning
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback