In this project, I will implement the locally optimal block preconditioned conjugate gradient (LOBPCG) algorithm for finding extremal generalized eigenvalues and their corresponding eigenvectors. The package will be interfaced in IterativeSolvers.jl. Additionally, parallel algebraic multigrid preconditioners will be implemented extending AMG.jl. Common preconditioners will then be grouped into a package and further interfaced in IterativeSolvers.jl. Testing wil be done using buckling problems defined with the help of JuAFEM.jl. The methods developed in this project will be benchmarked against Base.eigs and JacobiDavidson.jl, and results will be published on Github. Finally, the packages developed will be documented and ported to Julia 1.0 when it is released.