GRock: parallel greedy coordinate descent method

This is a C/MPI implementation of parallel GRock for LASSO, as described in our paper. This is a straghtforward implementation, and its performance is not optimized.

Source code

Compile and run

  • Makefile is included in the zip file. You may need to edit Makefile to ensure that the variable GSLROOT is set correctly. To compile, type:

make

  • To run, type:

mpirun -np 2 ./pGRockLasso /2

where the first “2” specifies the number of processes and the second “2” is thed subfold of the data that is partitioned into 2 blocks.

Example output


[1] reading ./Gaussian//2/A2.dat
=============================
|    Start to load data!     |
=============================
[0] reading ./Gaussian//2/A1.dat
[0] reading ./Gaussian//2/b.dat
[0] reading ./Gaussian//2/xs1.dat
[1] reading ./Gaussian//2/b.dat
[1] reading ./Gaussian//2/xs2.dat
=============================
|GRock start to solve Lasso!|
|---------------------------|
|lambda=0.10, m=256, n=512  |
| Mode: dynamic update P.   |
=============================
iter  rel_err      obj     P
  0   3.42e-01     3.3601  42
  5   9.02e-03     2.7637  50
 10   2.10e-04     2.7635  50
 15   5.00e-06     2.7635  50
=============================
|    GRock solved Lasso!    |
|---------------------------|
|Summary:                   |
|   # of iteration: 20      |
|   relative error: 2.54e-07|
|  objective value: 2.76    |
|             time: 7.3e-03s|
=============================

« Back