Implementation of FastICA algorithm fot PULP platform
First of all, use docker-compose run --rm pulp to run the container and open a shell.
Then, move to the directory containing the project (i.e., ~/fast-ica) and compile it using make clean all; you can set the following variables:
COMP: number of independent components;OBS: number of observations;USE_CLUSTER: whether to offload the task to the cluster or use only the Fabric Controller;CORES: number of cores to use (from 1 to 8);STRATEGY: FastICA strategy (0 for Parallel and 1 for Deflation);G_FUNC: G function to use in FastICA (0 for LogCosh, 1 for Exp and 2 for Cube);MAX_ITER: maximum number of iterations;SAMPLES: number of samples of the signal to generate;WINDOW_SIZE: temporal resolution of the signal to generate;ADD_NOISE: whether to add Gaussian noise to the generated signal or not;VERB: whether to print the original signal, the observations and the recovered signal to standard output.
Finally, the program can be run with make run.
The results can be visualized using the pyutils/plot_signals.py REPORT.LOG N_COMP N_REC program.