Difference: LinearProgrammingOnGPGPUs (1 vs. 6)

Revision 62012-01-14 - TWikiAdminUser

Line: 1 to 1
Changed:
<
<
META TOPICPARENT name="WebHome"
>
>
META TOPICPARENT name="ExperimentsWithLPAndGPUs"
 

LPG: Linear Programming on GPUs

lpg2.png

Line: 74 to 74
 
    1. OsiLpgSolverInterface solver1;

META FILEATTACHMENT attachment="lpg2.png" attr="" comment="" date="1295904972" name="lpg2.png" path="lpg2.png" size="11221" stream="lpg2.png" tmpFilename="" user="IainDunning" version="1"
Added:
>
>
META TOPICMOVED by="BaseUserMapping_333" date="1326585542" from="NDSG.LinearProgrammingOnGPGPUs" to="ORUA.LinearProgrammingOnGPGPUs"

Revision 52011-02-18 - IainDunning

Line: 1 to 1
 
META TOPICPARENT name="WebHome"
Changed:
<
<

LPG: Linear Programming on GPGPUs

>
>

LPG: Linear Programming on GPUs

  lpg2.png

Revision 42011-01-31 - TWikiAdminUser

Line: 1 to 1
 
META TOPICPARENT name="WebHome"

LPG: Linear Programming on GPGPUs

Line: 29 to 29
 
  • Solve LPs with CBC

Todo

Changed:
<
<
  • 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
>
>
  • Implement all functions required for CBC to solve IPs using LPG - Abandoned for now, may try again on Symphony
  • Write code to take any problem and convert to SCF - Done 26th Jan, except it leaves bounds on variables
  • Enhance solvers to accept bounds on columns - WORKING ON NOW
 
  • Make solvers that can handle sparsity
Changed:
<
<
  • Write the CLI for LPG
  • Compress single/dbl cpu solver into one file using preprocessor defines Done 24th Jan
>
>
  • Write the CLI for LPG - Done 27th Jan
  • Compress single/dbl cpu solver into one file using preprocessor defines - Done 24th Jan
 

Firing up CBC with LPG (on Windows, VS2008)

Revision 32011-01-24 - IainDunning

Line: 1 to 1
 
META TOPICPARENT name="WebHome"

LPG: Linear Programming on GPGPUs

Added:
>
>
lpg2.png
 

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!]
Line: 32 to 34
 
  • Enhance solvers to accept bounds on columns
  • Make solvers that can handle sparsity
  • Write the CLI for LPG
Changed:
<
<
  • Compress single/dbl cpu solver into one file using preprocessor defines Done 24th Jan
>
>
  • Compress single/dbl cpu solver into one file using preprocessor defines Done 24th Jan
 

Firing up CBC with LPG (on Windows, VS2008)

Line: 67 to 69
 
    1. to
    2. #include "OsiLpgSolverInterface.hpp"
  1. Change the line:
Changed:
<
<
    1. OsiClpSolverInterface solver1;
>
>
    1. OsiClpSolverInterface solver1;
 
    1. to
Changed:
<
<
    1. OsiLpgSolverInterface solver1;
>
>
    1. OsiLpgSolverInterface solver1;

META FILEATTACHMENT attachment="lpg2.png" attr="" comment="" date="1295904972" name="lpg2.png" path="lpg2.png" size="11221" stream="lpg2.png" tmpFilename="" user="IainDunning" version="1"

Revision 22011-01-24 - IainDunning

Line: 1 to 1
 
META TOPICPARENT name="WebHome"

LPG: Linear Programming on GPGPUs

Line: 9 to 9
 

Project file structure

Changed:
<
<
  • BuildTools [taken from the COIN-OR BuildTools SVN]
  • CoinUtils [taken from the COIN-OR CoinUtils SVN]
>
>
  • BuildTools [taken from the COIN-OR BuildTools SVN]
  • CoinUtils [taken from the COIN-ORCoinUtils SVN]
 
  • libLPG
    • kernel [the OpenCL kernels used by libLPG]
    • src [the C++ files and headers used by libLPG]
Line: 31 to 32
 
  • Enhance solvers to accept bounds on columns
  • Make solvers that can handle sparsity
  • Write the CLI for LPG
Added:
>
>
  • Compress single/dbl cpu solver into one file using preprocessor defines Done 24th Jan
 

Firing up CBC with LPG (on Windows, VS2008)

Revision 12011-01-23 - IainDunning

Line: 1 to 1
Added:
>
>
META TOPICPARENT name="WebHome"

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;
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback