ejr / matchpres (public) (License: BSD) (since 2018-08-29) (hash sha1)
Ye olde thesis code implementing an auction-based weighted bipartite matching algorithm over MPI.
List of commits:
Subject Hash Author Date (UTC)
Add (necessary) paranoia about bid+mu==bid. e7fa29ba64ddbd1ebf22b9926d220fee0574f5ff Jason Riedy 2006-02-23 22:57:56
Use gcc-4.0 4b47d644bd9cc78de467e610cacfcc668c3b5570 Jason Riedy 2006-02-23 19:35:59
Dump ent and diag type to stdout as well. 35870ff529230efd7877eb133e55d27ebf1f4943 Jason Riedy 2006-02-23 19:11:42
Select int/float, sum/prod at run-time; add those+nstats to output. 8f9d7d47e8b6516fad0716e6c756c027d4073c66 Jason Riedy 2006-02-23 19:01:13
Little cleanups 97b622070c66a8aded98e4e02feb860021dfaa06 Jason Riedy 2005-04-25 21:56:10
Dumb bug fix: use all_pg and not pg after allreduce. c9aada3d4ea3cd354a27df2c91cdb5e022a48dcd Jason Riedy 2005-04-25 21:36:49
"Optimized" seaborg build, plus it has MPI memory allocation 010c31532fbdd08ebf50815f4223719e06cc0ea1 Jason Riedy 2005-04-25 20:53:30
Fix parallel mu_min computation. 1839c8967c53b5e7311406a4c8e630975b15ca64 Jason Riedy 2005-04-25 20:49:10
More home makefile twiddles d8237ea380793307781f78f155244fffbc6e1065 Jason Riedy 2005-04-25 19:12:57
Add relative gap termination criteria to parallel matchers. 4df0541dc376888d74a22b5770871cb90c1c2f70 Jason Riedy 2005-04-25 18:44:20
Add Make.inc for home 55087d06413e6a59d1c3b41294126cd56f6d46b7 Jason Riedy 2005-04-25 18:10:22
Add Make.seaborg 66fe7a0f65ad57d1fffeeb8db2e614f38cf6cbc0 Jason Riedy 2005-04-25 18:10:06
Move Make.inc out of the way a6aca26e1d6cfb15faa570d63890a20798df3444 Jason Riedy 2005-04-20 20:23:50
Fix price => scaling transformation 1c223b72d65972e9b381e576b90934c40d555e27 Jason Riedy 2005-04-20 20:22:12
Bugs go poo a136075289af1e672e28187cf41210a5ec27eccc Jason Riedy 2005-04-20 02:22:32
More data: primal, dual, duration 2c59b3bdc4789035f919ce2132f2d20e33884329 Jason Riedy 2005-04-18 18:20:44
Removed mistaken Acopy 8af95560220c3dd532eba9efa95b6993a0bedf97 Jason Riedy 2005-04-18 05:07:13
write new data from matchmtx. 9bbe665ce58799a37beed4e6557f756bdf6e8a48 Jason Riedy 2005-04-18 05:05:14
Dumb bug fix. 0acb519a5298ca2fd3256cc54e7e91a267990022 Jason Riedy 2005-04-13 04:21:01
quit when not square b74d721df984ae9c60d4617921d6dc7813215022 Jason Riedy 2005-04-12 23:36:47
Commit e7fa29ba64ddbd1ebf22b9926d220fee0574f5ff - Add (necessary) paranoia about bid+mu==bid.
Also twiddled some debugging output.
Author: Jason Riedy
Author date (UTC): 2006-02-23 22:57
Committer name: Jason Riedy
Committer date (UTC): 2006-02-23 22:57
Parent(s): 4b47d644bd9cc78de467e610cacfcc668c3b5570
Signing key:
Tree: 1a9ddb85a0020d370a0d4a7dabbd204f94614121
File Lines added Lines deleted
auction.c 5 3
File auction.c changed (mode: 100644) (index f3dd096..c4f5d07)
... ... auction_pass (const struct spcsr_t A, const double *b,
642 642 */ */
643 643
644 644 assert (bid.price + mu >= price[bid.j]); assert (bid.price + mu >= price[bid.j]);
645
645 if (!isinf(bid.price) && bid.price + mu <= bid.price)
646 bid.price = nextafter(bid.price, HUGE_VAL);
647 /*assert (isinf(bid.price) || bid.price + mu > bid.price);*/
646 648 /* /*
647 649 if (1 == bid.j) if (1 == bid.j)
648 650 printf ("bidding for %d: (%d, %d), price %g\n", 1, i, bid.j, bid.price+mu); printf ("bidding for %d: (%d, %d), price %g\n", 1, i, bid.j, bid.price+mu);
 
... ... auction_scaling (const struct spcsr_t A, const double *b_in,
1456 1458
1457 1459 const double theta = 1.0/8.0; const double theta = 1.0/8.0;
1458 1460
1461 double pval = -1.0, dval;
1459 1462 #if !defined(NDEBUG) #if !defined(NDEBUG)
1460 1463 int *seenr = NULL; int *seenr = NULL;
1461 1464 seenr = malloc (A.nr * sizeof(int)); seenr = malloc (A.nr * sizeof(int));
 
... ... auction_scaling (const struct spcsr_t A, const double *b_in,
1589 1592 #endif #endif
1590 1593 } }
1591 1594 else { else {
1592 double pval, dval;
1593 1595 auction_eval_primal_mdual (A, b, match, price, &pval, &dval); auction_eval_primal_mdual (A, b, match, price, &pval, &dval);
1594 1596 gap = dval - pval; gap = dval - pval;
1595 1597 if (gap / pval < mu_final) break; if (gap / pval < mu_final) break;
 
... ... auction_scaling (const struct spcsr_t A, const double *b_in,
1642 1644
1643 1645 /* /*
1644 1646 printf( "... mu = %g\n... n_unmatched = %d\n", mu, n_unmatched); printf( "... mu = %g\n... n_unmatched = %d\n", mu, n_unmatched);
1645 printf( "... gap = %g\n", gap);
1647 printf( "... gap = %g\n... primal = %g\n", gap, pval);
1646 1648 */ */
1647 1649 STATS(a_stats_n_unmatched[a_nstats] = n_unmatched;); STATS(a_stats_n_unmatched[a_nstats] = n_unmatched;);
1648 1650 STATS(a_stats_mu[a_nstats] = mu;); STATS(a_stats_mu[a_nstats] = mu;);
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/ejr/matchpres

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/ejr/matchpres

Clone this repository using git:
git clone git://git.rocketgit.com/user/ejr/matchpres

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main