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.
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.
[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