[sdpb] 42/233: Tiny changes for debugging output
Tobias Hansen
thansen at moszumanska.debian.org
Thu Mar 9 04:06:16 UTC 2017
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository sdpb.
commit b4614a7c1bc51183ad691d65091bee0da2937c32
Author: David Simmons-Duffin <dsd at neptune.sns.ias.edu>
Date: Tue Jul 29 13:57:25 2014 -0400
Tiny changes for debugging output
---
main.cpp | 39 +++++++++++++++++++++++++++++----------
1 file changed, 29 insertions(+), 10 deletions(-)
diff --git a/main.cpp b/main.cpp
index 4c383b8..2f2535b 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1663,13 +1663,13 @@ void computeCorrectorRMatrix(const Real &beta,
R.addDiagonal(beta*mu);
}
-// Minimum eigenvalue of A, via the QR method
+// Eigenvalues of A, via the QR method
// Inputs:
// A : n x n Matrix (will be overwritten)
// eigenvalues : Vector of length n
// workspace : Vector of lenfth 3*n-1 (temporary workspace)
//
-Real minEigenvalueViaQR(Matrix &A, Vector &eigenvalues, Vector &workspace) {
+void eigenvaluesViaQR(Matrix &A, Vector &workspace, Vector &eigenvalues) {
assert(A.rows == A.cols);
assert((int)eigenvalues.size() == A.rows);
assert((int)workspace.size() == 3*A.rows - 1);
@@ -1678,8 +1678,16 @@ Real minEigenvalueViaQR(Matrix &A, Vector &eigenvalues, Vector &workspace) {
mpackint workSize = workspace.size();
Rsyev("NoEigenvectors", "LowerTriangular", A.rows, &A.elements[0], A.rows, &eigenvalues[0], &workspace[0], &workSize, &info);
assert(info == 0);
+}
- // Eigenvalues are sorted in ascending order
+// Minimum eigenvalue of A, via the QR method
+// Inputs:
+// A : n x n Matrix (will be overwritten)
+// eigenvalues : Vector of length n
+// workspace : Vector of lenfth 3*n-1 (temporary workspace)
+//
+Real minEigenvalueViaQR(Matrix &A, Vector &workspace, Vector &eigenvalues) {
+ eigenvaluesViaQR(A, workspace, eigenvalues);
return eigenvalues[0];
}
@@ -1689,7 +1697,7 @@ Real minEigenvalueViaQR(Matrix &A, Vector &eigenvalues, Vector &workspace) {
// eigenvalues : vector<Vector> of length A.blocks.size()
// workspace : vector<Vector> of length A.blocks.size()
//
-Real minEigenvalueViaQR(BlockDiagonalMatrix &A, vector<Vector> &eigenvalues, vector<Vector> &workspace) {
+Real minEigenvalueViaQR(BlockDiagonalMatrix &A, vector<Vector> &workspace, vector<Vector> &eigenvalues) {
assert(A.blocks.size() == eigenvalues.size());
assert(A.blocks.size() == workspace.size());
@@ -1699,7 +1707,7 @@ Real minEigenvalueViaQR(BlockDiagonalMatrix &A, vector<Vector> &eigenvalues, vec
#pragma omp parallel for schedule(dynamic)
for (unsigned int b = 0; b < A.blocks.size(); b++) {
- Real minBlockLambda = minEigenvalueViaQR(A.blocks[b], eigenvalues[b], workspace[b]);
+ Real minBlockLambda = minEigenvalueViaQR(A.blocks[b], workspace[b], eigenvalues[b]);
#pragma omp critical
{
lambdaMin = min(lambdaMin, minBlockLambda);
@@ -1720,7 +1728,7 @@ Real stepLength(BlockDiagonalMatrix &XInvCholesky,
XInvDX.copyFrom(dX);
lowerTriangularCongruence(XInvDX, XInvCholesky);
- const Real lambda = minEigenvalueViaQR(XInvDX, eigenvalues, workspace);
+ const Real lambda = minEigenvalueViaQR(XInvDX, workspace, eigenvalues);
const Real gamma = parameters.stepLengthReduction;
if (lambda > -gamma)
return 1;
@@ -1736,11 +1744,15 @@ void computeSchurComplementCholesky(const SDP &sdp,
BlockDiagonalMatrix &SchurBlocks,
BlockDiagonalMatrix &SchurBlocksCholesky,
Matrix &SchurUpdateLowRank,
- Matrix &SchurComplementCholesky) {
+ Matrix &SchurComplementCholesky,
+ int i) {
timers.computeSchurBlocks.resume();
computeSchurBlocks(sdp, BilinearPairingsXInv, BilinearPairingsY, SchurBlocks);
timers.computeSchurBlocks.stop();
+
+ // cout << "SchurBlocks[" << i << "] = " << SchurBlocks << ";\n";
+
timers.schurBlocksCholesky.resume();
choleskyDecomposition(SchurBlocks, SchurBlocksCholesky);
timers.schurBlocksCholesky.stop();
@@ -1752,6 +1764,9 @@ void computeSchurComplementCholesky(const SDP &sdp,
for (int p = 0; p < sdp.polMatrixValues.rows; p++)
SchurUpdateLowRank.elt(p, n) = r*sdp.polMatrixValues.elt(p, n);
}
+
+ // cout << "SchurUpdateLowRank[" << i << "] = " << SchurUpdateLowRank << ";\n";
+
timers.schurCholeskyUpdate.resume();
choleskyUpdate(SchurComplementCholesky, SchurUpdateLowRank);
timers.schurCholeskyUpdate.stop();
@@ -1954,7 +1969,8 @@ SDPSolverStatus SDPSolver::run(const SDPSolverParameters ¶meters,
SchurBlocks,
SchurBlocksCholesky,
SchurUpdateLowRank,
- SchurComplementCholesky);
+ SchurComplementCholesky,
+ iteration);
// computeSchurComplementCholesky2(sdp,
// XInv,
// BilinearPairingsXInv,
@@ -2000,8 +2016,8 @@ SDPSolverStatus SDPSolver::run(const SDPSolverParameters ¶meters,
dY *= dualStepLength;
Y += dY;
- printInfo(iteration, mu, status, isPrimalFeasible, isDualFeasible,
- primalStepLength, dualStepLength, betaCorrector);
+ // printInfo(iteration, mu, status, isPrimalFeasible, isDualFeasible,
+ // primalStepLength, dualStepLength, betaCorrector);
}
timers.runSolver.stop();
@@ -2254,6 +2270,9 @@ void solveSDP(const path sdpFile,
printSDPBHeader(sdpFile, outFile, checkpointFile, parameters);
const SDP sdp = readBootstrapSDP(sdpFile);
+
+ // cout << "polMatrixValues = " << sdp.polMatrixValues << ";\n";
+ // cout << "bilinearBases = " << sdp.bilinearBases << ";\n";
SDPSolver solver(sdp);
solver.initialize(parameters);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/sdpb.git
More information about the debian-science-commits
mailing list