P-FISTA: parallel fast iterative soft-thresholding algorithm

This is a C/MPI implementation of parallel FISTA 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:

mpiexec -n 4 ./pFistaLasso /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
[0] reading /tmpData/Gaussian/4/xs1.dat
[1] reading /tmpData/Gaussian/4/xs2.dat
[2] reading /tmpData/Gaussian/4/xs3.dat
[3] reading /tmpData/Gaussian/4/xs4.dat
  # relative error  objective time per iter
  0 3.354951e-01     4.6279 1.905107e-02
  1 2.578163e-01     3.3489 6.447077e-03
  2 1.819598e-01     2.6660 1.859665e-04
  3 1.149489e-01     2.2144 1.869202e-04
  4 6.219215e-02     1.9321 1.859665e-04
  5 2.592899e-02     1.7431 1.869202e-04
  6 1.149625e-02     1.6434 2.989769e-04
  7 1.383103e-02     1.6014 3.340244e-04
  8 1.597597e-02     1.5898 1.474857e-03
  9 1.434637e-02     1.5952 1.878738e-04
 10 1.069169e-02     1.6086 2.160072e-04
 11 6.704211e-03     1.6239 2.217054e-03
 12 4.112722e-03     1.6371 1.909733e-04
 13 3.353478e-03     1.6463 1.862049e-04
 14 3.331370e-03     1.6512 1.869202e-04
 15 3.231070e-03     1.6525 1.871586e-04
 16 2.669282e-03     1.6513 2.081394e-04
 17 1.948274e-03     1.6490 1.850128e-04
 18 1.396547e-03     1.6465 1.862049e-04


« Back