AMF-Placer
2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
QPSolverWrapper.h
Go to the documentation of this file.
1
25
#ifndef _QPSOLVER
26
#define _QPSOLVER
27
28
#include "Eigen/Eigen"
29
#include "Eigen/SparseCore"
30
//#include "osqp++/osqp++.h"
31
#include "
strPrint.h
"
32
#include <assert.h>
33
#include <fstream>
34
#include <iostream>
35
#include <sstream>
36
#include <string>
37
#include <thread>
38
#include <vector>
39
40
class
QPSolverWrapper
41
{
42
public
:
43
typedef
struct
44
{
45
std::vector<Eigen::Triplet<float>>
objectiveMatrixTripletList
;
46
std::vector<float>
objectiveMatrixDiag
;
47
Eigen::VectorXd
objectiveVector
;
48
Eigen::VectorXd
solution
;
49
Eigen::VectorXd
oriSolution
;
50
}
solverDataType
;
51
52
solverDataType
solverData
;
53
// osqp::OsqpSolver osqpSolver;
54
55
Eigen::ConjugateGradient<Eigen::SparseMatrix<double>, Eigen::Lower | Eigen::Upper>
CGSolver
;
56
typedef
struct
57
{
58
bool
useUnconstrainedCG =
true
;
59
bool
MKLorNot =
false
;
60
float
lowerbound
;
61
float
upperbound
;
62
int
maxIters = 500;
63
float
tolerence = 0.001;
64
bool
solutionForward =
false
;
65
bool
verbose =
false
;
66
}
solverSettingsType
;
67
solverSettingsType
solverSettings
;
68
69
QPSolverWrapper
(
bool
useUnconstrainedCG,
bool
MKLorNot,
float
lowerbound,
float
upperbound,
int
elementNum,
70
bool
verbose)
71
{
72
solverSettings
.
useUnconstrainedCG
= useUnconstrainedCG;
73
solverSettings
.
MKLorNot
= MKLorNot;
74
solverSettings
.
lowerbound
= lowerbound;
75
solverSettings
.
upperbound
= upperbound;
76
solverSettings
.
verbose
= verbose;
77
solverData
.
solution
.resize(elementNum);
78
solverData
.
oriSolution
.resize(elementNum);
79
solverData
.
objectiveVector
.resize(elementNum);
80
}
81
~QPSolverWrapper
()
82
{
83
}
84
85
static
void
QPSolve
(
QPSolverWrapper
*&curSolver);
86
};
87
88
#endif
QPSolverWrapper::solverSettingsType::MKLorNot
bool MKLorNot
Definition:
QPSolverWrapper.h:59
QPSolverWrapper::solverDataType
Definition:
QPSolverWrapper.h:44
QPSolverWrapper::solverData
solverDataType solverData
Definition:
QPSolverWrapper.h:52
QPSolverWrapper::solverSettingsType
Definition:
QPSolverWrapper.h:57
QPSolverWrapper::solverDataType::objectiveMatrixDiag
std::vector< float > objectiveMatrixDiag
Definition:
QPSolverWrapper.h:46
QPSolverWrapper::solverSettingsType::lowerbound
float lowerbound
Definition:
QPSolverWrapper.h:60
QPSolverWrapper::solverSettingsType::upperbound
float upperbound
Definition:
QPSolverWrapper.h:61
QPSolverWrapper::QPSolverWrapper
QPSolverWrapper(bool useUnconstrainedCG, bool MKLorNot, float lowerbound, float upperbound, int elementNum, bool verbose)
Definition:
QPSolverWrapper.h:69
strPrint.h
QPSolverWrapper
Definition:
QPSolverWrapper.h:41
QPSolverWrapper::CGSolver
Eigen::ConjugateGradient< Eigen::SparseMatrix< double >, Eigen::Lower|Eigen::Upper > CGSolver
Definition:
QPSolverWrapper.h:55
QPSolverWrapper::~QPSolverWrapper
~QPSolverWrapper()
Definition:
QPSolverWrapper.h:81
QPSolverWrapper::solverDataType::oriSolution
Eigen::VectorXd oriSolution
Definition:
QPSolverWrapper.h:49
QPSolverWrapper::solverSettingsType::verbose
bool verbose
Definition:
QPSolverWrapper.h:65
QPSolverWrapper::solverSettings
solverSettingsType solverSettings
Definition:
QPSolverWrapper.h:67
QPSolverWrapper::solverDataType::objectiveVector
Eigen::VectorXd objectiveVector
Definition:
QPSolverWrapper.h:47
QPSolverWrapper::QPSolve
static void QPSolve(QPSolverWrapper *&curSolver)
Definition:
QPSolverWrapper.cc:29
QPSolverWrapper::solverDataType::solution
Eigen::VectorXd solution
Definition:
QPSolverWrapper.h:48
QPSolverWrapper::solverSettingsType::useUnconstrainedCG
bool useUnconstrainedCG
Definition:
QPSolverWrapper.h:58
QPSolverWrapper::solverDataType::objectiveMatrixTripletList
std::vector< Eigen::Triplet< float > > objectiveMatrixTripletList
Definition:
QPSolverWrapper.h:45
src
lib
HiFPlacer
problemSolvers
QPSolverWrapper.h
Generated by
1.8.18