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

make

mpiexec -n 4 ./pGRockLasso Data/Gaussian/4

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

Example output

[0] reading /tmpData/Gaussian/4/A1.dat
[1] reading /tmpData/Gaussian/4/A2.dat
[2] reading /tmpData/Gaussian/4/A3.dat
[3] reading /tmpData/Gaussian/4/A4.dat
[2] reading /tmpData/Gaussian/4/xs3.dat
[1] reading /tmpData/Gaussian/4/xs2.dat
[0] reading /tmpData/Gaussian/4/xs1.dat
[3] reading /tmpData/Gaussian/4/xs4.dat
  # relative error        obj time per iteration
  0 6.135552e-01     4.7049 3.342867e-03
  1 4.877022e-01     3.0104 4.781008e-03
  2 3.464975e-01     2.4344 1.359606e-02
  3 2.805175e-01     2.0514 2.311945e-03
  4 2.098517e-01     1.8593 2.238750e-04
  5 1.430713e-01     1.8331 2.150536e-04
  6 9.790339e-02     1.6960 2.169609e-04
  7 7.167996e-02     1.6616 2.148151e-04
  8 5.799108e-02     1.6668 2.200603e-04
  9 4.384168e-02     1.6865 2.269745e-04
 10 3.253416e-02     1.6800 1.305819e-03
 11 2.632147e-02     1.6709 2.210140e-04
 12 1.835447e-02     1.6624 2.169609e-04
 13 1.336643e-02     1.6553 6.083012e-03
 14 9.507526e-03     1.6488 3.409386e-04
 15 7.907204e-03     1.6485 2.138615e-04
 16 6.031871e-03     1.6451 2.110004e-04
 17 3.663741e-03     1.6425 2.269745e-04
 18 2.775902e-03     1.6447 2.179146e-04
 19 2.271782e-03     1.6442 2.169609e-04
 20 1.596608e-03     1.6441 2.169609e-04

« Back