Patent Document ID: 9262799
Application ID: 14536477
Patent Flag: 1

Claim One:
1. A computerized method for computing eigenpairs of a large square matrix in a high performance computing (HPC) system having a plurality of nodes, each node including one or more processing cores for executing program threads, the nodes having non-uniform memory access, the method comprising: allocating the computing resources of the high performance computing system into a plurality of partitions, each partition comprising memory and a plurality of computer processor cores; allocating the computing resources of the one of the plurality of partitions into a plurality of partition nodes, each partition node comprising associated node memory and a plurality of the computer processor cores; segmenting the large square matrix of data into a plurality of digestible sub-matrices; storing the plurality of sub-matrices in a partition memory, which partition memory is accessible by each node, such that all of the sub-matrices are accessible by each of the nodes, the partition memory comprising the plurality of node memories; in a first phase, reducing the square matrix to band form by: instantiating an instance of band reduction software on one of the plurality of partition nodes, the band reduction software employing a user-specified first number of threads for executing first phase matrix operations on the sub-matrices; instantiating additional instances of band reduction software on additional partition nodes; dedicating, within each of the partition nodes, one of the plurality of cores to a corresponding one of the plurality of threads; creating a band matrix from the square matrix by performing matrix operations on the sub-matrices using the band reduction software, each of the threads accessing the sub-matrices from the partition memory, such that each node executes its corresponding instance of the computer software in an SMP mode; storing the band matrix in band-matrix segments in the partition memory; and terminating the instances of the band reduction software; in a second phase, reducing the band matrix to tridiagonal form by: instantiating an instance of tridiagonal reduction software on one of the plurality of nodes, the tridiagonal reduction software employing a second number of user-specified second phase threads for executing second phase matrix operations on the band matrix; creating a tridiagonal matrix by performing matrix operations on the band-matrix using the tridiagonal reduction software, each of the second phase threads accessing the band-matrix from the partition memory; storing the tridiagonal matrix in the partition memory; and terminating the instances of tridiagonal reduction software; in a third phase, computing eigenvectors and eigenvalues of the tridiagonal matrix by: instantiating an instance of tridiagonal eigensolution software on a partition node, the tridiagonal eigensolution software employing a third number of user-specified third phase threads for executing third phase matrix operations on the tridiagonal matrix; determining the eigenvectors and eigenvalues of the tridiagonal matrix by performing matrix operations on the tridiagonal matrix using the tridiagonal eigensolution software; storing the eigenvectors and eigenvalues of the tridiagonal matrix in the partition memory; and terminating the instances of the tridiagonal eigensolution software; determining the eigenpairs of the square matrix by in a fourth phase, transforming the eigenvectors of the tridiagonal matrix to eigenvectors of the band matrix by: instantiating an instance of band backtransform software on one of the plurality of partition nodes, the band backtransform software employing a fourth number of user-specified fourth phase threads for executing fourth phase matrix operations on the eigenvectors of the tridiagonal matrix; transforming the eigenvectors of the tridiagonal matrix to eigenvectors of the band matrix by performing matrix operations on the eigenvectors of the tridiagonal matrix using the band backtransform software; storing the eigenvectors of the band matrix in the partition memory; and terminating the instances of the band backtransform software; in a fifth phase, transforming the eigenvectors of the band matrix to eigenvectors of the square matrix by: instantiating an instance of dense backtransform software on one of the partition nodes, the dense backtransform software employing a fifth number of user-specified fifth phase threads for executing fifth phase matrix operations on the eigenvectors of the band matrix; instantiating additional instances of the dense backtransform software on the partition nodes; dedicating, within each of partition nodes, one of the plurality of cores to a corresponding one of the plurality of fifth phase threads; transforming eigenvectors of the band matrix to eigenvectors of a square matrix by performing matrix operations on the eigenvectors of the band matrix using the dense backtransform software, each of the fifth phase threads accessing the eigenvectors of the band matrix from the partition memory, such that each node executes its corresponding instance of the dense backtransform software in an SMP mode; and storing the eigenvectors of the square matrix in the partition memory.