Skip to content

Commit

Permalink
nodual
Browse files Browse the repository at this point in the history
  • Loading branch information
heeryerate committed Sep 9, 2015
1 parent 32ef0b1 commit b048cb6
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 23 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,4 @@ matlab/lib/gloptipoly3
octave-core
data
release
cpp/.DS_Store
Binary file removed cpp/.DS_Store
Binary file not shown.
48 changes: 25 additions & 23 deletions cpp/src/cocoa/class/QuadraticLossCD.h
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,8 @@ class QuadraticLossCD: public QuadraticLoss<L, D> {
double finish = 0 ;
double elapsedTime = 0 ;
D unbiasedestimator = 0;
D beta = 0.0001;
D beta = 0.05;
D eta = beta / (instance.lambda * instance.n);

for (unsigned int t = 0; t < distributedSettings.iters_communicate_count; t++) {

Expand All @@ -474,44 +475,45 @@ class QuadraticLossCD: public QuadraticLoss<L, D> {

for (unsigned int it = 0; it < distributedSettings.iterationsPerThread; it++) {
L idx = rand() / (0.0 + RAND_MAX) * instance.n;
// compute "delta alpha" = argmin
D dotProduct = 0;
for (L i = instance.A_csr_row_ptr[idx];
i < instance.A_csr_row_ptr[idx + 1]; i++) {
dotProduct += w[instance.A_csr_col_idx[i]] * instance.A_csr_values[i];
}

unbiasedestimator = dotProduct - instance.b[idx] + instance.x[idx];
deltaAlpha[idx] = - beta * unbiasedestimator ;
unbiasedestimator = dotProduct - 1.0 * instance.b[idx] + instance.x[idx];
deltaAlpha[idx] += - beta * unbiasedestimator ;

cblas_sum_of_vectors(deltaW, instance.x, -beta / (instance.lambda * instance.n) * unbiasedestimator);
}
vall_reduce(world, deltaW, wBuffer);
gamma = 1; // set np = 1
cblas_sum_of_vectors(w, wBuffer, gamma);
cblas_sum_of_vectors(instance.x, deltaAlpha, gamma);
for (L i = instance.A_csr_row_ptr[idx];
i < instance.A_csr_row_ptr[idx + 1]; i++)
deltaW[instance.A_csr_col_idx[i]] += - eta * unbiasedestimator * instance.A_csr_values[i];
}
double primalError;
double dualError;
vall_reduce(world, deltaW, wBuffer);
gamma = 1; // set np = 1
cblas_sum_of_vectors(w, wBuffer, gamma);
cblas_sum_of_vectors(instance.x, deltaAlpha, gamma);
}
double primalError;
double dualError;

finish = gettime_();
elapsedTime += finish - start;
finish = gettime_();
elapsedTime += finish - start;

this->computeObjectiveValue(instance, world, w, dualError, primalError);
this->computeObjectiveValue(instance, world, w, dualError, primalError);

if (ctx.settings.verbose) {
cout << "Iteration " << t << " elapsed time " << elapsedTime
<< " error " << primalError << " " << dualError
<< " " << primalError + dualError << endl;
if (ctx.settings.verbose) {
cout << "Iteration " << t << " elapsed time " << elapsedTime
<< " error " << primalError << " " << dualError
<< " " << primalError + dualError << endl;

logFile << t << "," << elapsedTime << "," << primalError << ","
<< dualError << "," << primalError + dualError << endl;
logFile << t << "," << elapsedTime << "," << primalError << ","
<< dualError << "," << primalError + dualError << endl;

}
}

}

}

virtual void subproblem_solver_BB(ProblemData<L, D> &instance, std::vector<D> &deltaAlpha, std::vector<D> &w,
std::vector<D> &wBuffer, std::vector<D> &deltaW, DistributedSettings & distributedSettings,
mpi::communicator &world, D gamma, Context &ctx, std::ofstream &logFile) {
Expand Down

0 comments on commit b048cb6

Please sign in to comment.