---+ *LPG*: Linear Programming on GPGPUs <img alt="lpg2.png" src="%ATTACHURL%/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!] * 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-ORCoinUtils 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_ - 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 * _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) These instructions will help you compile a simple example that uses CBC: 1 Download CBC from its SVN repository 1 Download LPG from...! 1 Open the _\Cbc\MSVisualStudio\v9\Cbc.sln_ solution file 1 Add the libLPG and libOsiLPG projects to the solution 1 Add a new empty project, call it cbcExampleMin 1 Add _\Cbc\examples\minimum.cpp_ to the new project 1 Set cbcExampleMin as the Start Up project (right click on the project name, pick from menu) 1 Set cbcExampleMin's dependecies to be: 1 libCbc 1 libCoinUtils 1 libLPG 1 libOsi 1 libOsiCBC 1 libOsiLPG 1 libClp [needed for CBC, could probably be removed with correct config] 1 libOsiClp [needed for CBC, could probably be removed with correct config] 1 libCgl [needed for CBC] 1 Set project properties -> C/C++ -> Code Generation -> Runtime library to /MTd 1 Set the project to look in the following folders for includes: 1 \Cbc\src 1 \CoinUtils\src 1 \BuildTools\headers 1 \Osi\src 1 LPG (wherever it is)\libOsiLPG\src 1 Change the line: 1 #include "OsiClpSolverInterface.hpp" 1 to 1 #include "OsiLpgSolverInterface.hpp" 1 Change the line: 1 !OsiClpSolverInterface solver1; 1 to 1 !OsiLpgSolverInterface solver1;
Attachments
Attachments
Topic attachments
I
Attachment
History
Action
Size
Date
Who
Comment
png
lpg2.png
r1
manage
11.0 K
2011-01-24 - 21:36
IainDunning
This topic: ORUA
>
WebHome
>
LinearProgrammingOnGPGPUs
Topic revision: r4 - 2011-01-31 - TWikiAdminUser
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback