What was done ?

1) Using C++ to perform eigendecomposition of the matrix on single node if the whole matrix fits into one partition. Generated Eigen and LAPACK implementation for these.

Running Time Now:

1) 1000 x 1000 matrix - 100 components

ECL code - 3 min 42 sec

Eigen - 32 sec

2) BBC example - 9000 x 2000 matrix - 100 components

ECL code - 4 min 26 sec

Eigen - 55 sec

3) BBC example - 9000 x 2000 matrix - 50 components

ECL code - 3 min 36 sec

Eigen - 51 sec

4) 10000 x 10000 matrix - 100 components

ECL code - 4 min 57 code

Eigen - 59 sec

All other tests are working with this new code.

2) Generated Pull Request for finished work. Waiting for reviews.

What needs to be done ?

1) Performing full inspection of code and make any style changes if required.

2) Make any changes suggested on the pull request.