El método de gradiente conjugado precondicionado por bloques óptimo local ( LOBPCG ) es un método sin matrices para encontrar los autovalores más grandes (o más pequeños) y los autovectores correspondientes de un problema de autovalores generalizado simétrico.
para un par dadode matrices hermíticas complejas o simétricas reales , donde la matrizTambién se asume que es definida positiva .
Fondo
En 1948, Kantorovich propuso calcular el valor propio más pequeño.de una matriz simétricapor descenso más pronunciado usando una direcciónde un gradiente escalado de un cociente de Rayleighen un producto escalar, con el tamaño del paso calculado minimizando el cociente de Rayleigh en el espacio lineal de los vectoresy, es decir, de manera localmente óptima. Samokish [ 1 ] propuso aplicar un precondicionadoral vector residualpara generar la dirección precondicionaday se derivó asintóticamente, comoaproximaciones al vector propio , límites de la tasa de convergencia. D'yakonov sugirió [ 2 ] un precondicionamiento espectralmente equivalente y derivó límites de la tasa de convergencia no asintótica. El descenso más pronunciado multipaso localmente óptimo por bloques para problemas de valores propios se describió en [3]. La minimización local del cociente de Rayleigh en el subespacio generado por la aproximación actual, el residuo actual y la aproximación anterior, así como su versión por bloques, apareció en [4]. La versión precondicionada se analizó en [ 5 ] y [ 6 ] .
Características principales
Fuente: [ 7 ]
- Sin matriz , es decir, no requiere almacenar explícitamente la matriz de coeficientes, sino que puede acceder a ella evaluando productos matriz-vector.
- Sin factorización , es decir, no requiere ninguna descomposición matricial incluso para un problema generalizado de valores propios .
- Los costes por iteración y el uso de memoria son comparables a los del método de Lanczos , que calcula un único par de autovalores extremos de una matriz simétrica.
- La convergencia lineal está garantizada teóricamente y se observa en la práctica.
- Convergencia acelerada debido al precondicionamiento directo , en contraste con el método de Lanczos , que incluye precondicionamiento variable y no simétrico, así como precondicionamiento fijo y definido positivo .
- Permite la incorporación sencilla de técnicas eficientes de descomposición de dominio y multigrid mediante preacondicionamiento.
- El programa comienza en caliente y calcula una aproximación al vector propio en cada iteración.
- Es numéricamente más estable en comparación con el método de Lanczos y puede funcionar con aritmética informática de baja precisión.
- Fácil de implementar, ya han aparecido muchas versiones.
- El bloqueo permite utilizar operaciones de matriz-matriz altamente eficientes, por ejemplo, BLAS 3.
- El tamaño del bloque se puede ajustar para equilibrar la velocidad de convergencia con los costes computacionales de las ortogonalizaciones y el método de Rayleigh-Ritz en cada iteración.
Algoritmo
Versión de vector único
Preliminares: Descenso de gradiente para problemas de valores propios
El método realiza una maximización (o minimización) iterativa del cociente de Rayleigh generalizado.
lo que resulta en encontrar los pares propios más grandes (o más pequeños) de
La dirección del ascenso más pronunciado, que es el gradiente , del cociente de Rayleigh generalizado es directamente proporcional al vector
llamado residuo de vector propio . Si un precondicionadorEstá disponible, se aplica al residuo y da como resultado el vector
llamado residuo preacondicionado. Sin preacondicionamiento, establecemosy entoncesUn método iterativo
o, en resumen,
se conoce como ascenso (o descenso) más pronunciado precondicionado, donde el escalarse denomina tamaño de paso. El tamaño de paso óptimo se puede determinar maximizando el cociente de Rayleigh, es decir,
(oen caso de minimizar), en cuyo caso el método se denomina óptimo local.
Recurrencia a tres trimestres
Para acelerar drásticamente la convergencia del ascenso (o descenso) más pronunciado precondicionado localmente óptimo, se puede agregar un vector adicional a la relación de recurrencia de dos términos para convertirla en una relación de tres términos:
(usar(en caso de minimización). La maximización/minimización del cociente de Rayleigh en un subespacio tridimensional se puede realizar numéricamente mediante el método de Rayleigh-Ritz . Agregar más vectores, como por ejemplo la extrapolación de Richardson , no produce una aceleración significativa [ 8 ] , pero aumenta los costos computacionales, por lo que generalmente no se recomienda.
Mejoras en la estabilidad numérica
A medida que las iteraciones convergen, los vectoresyse vuelven casi linealmente dependientes , lo que resulta en una pérdida de precisión y hace que el método de Rayleigh-Ritz sea numéricamente inestable en presencia de errores de redondeo. La pérdida de precisión puede evitarse sustituyendo el vectorcon un vector, que puede estar más lejos de, en la base del subespacio tridimensional, manteniendo el subespacio sin cambios y evitando la ortogonalización o cualquier otra operación adicional. [ 8 ] Además, puede ser necesario ortogonalizar la base del subespacio tridimensional para problemas de valores propios mal condicionados para mejorar la estabilidad y la precisión alcanzable.
análogos del subespacio de Krylov
Esta es una versión de vector único del método LOBPCG, una de las posibles generalizaciones de los solucionadores lineales de gradiente conjugado precondicionados al caso de problemas de valores propios simétricos . [ 8 ] Incluso en el caso trivialyla aproximación resultante conserá diferente de la obtenida por el algoritmo de Lanczos , aunque ambas aproximaciones pertenecerán al mismo subespacio de Krylov .
Escenarios de uso práctico
La extrema simplicidad y la alta eficiencia de la versión de vector único de LOBPCG la hacen atractiva para aplicaciones relacionadas con valores propios bajo severas limitaciones de hardware, que van desde la detección de anomalías en tiempo real basada en agrupamiento espectral mediante partición de grafos en ASIC o FPGA integrados hasta el modelado de fenómenos físicos de complejidad computacional récord en supercomputadoras de exaescala TOP500 .
Versión en bloque
Resumen
Los pares propios subsiguientes pueden calcularse uno por uno mediante LOBPCG de vector único complementado con una deflación ortogonal o simultáneamente como un bloque. En el primer enfoque, las imprecisiones en los vectores propios aproximados ya calculados afectan de forma aditiva la precisión de los vectores propios calculados posteriormente, aumentando así el error con cada nuevo cálculo. Iterar varios vectores propios aproximados juntos en un bloque de forma localmente óptima en la versión de bloque de LOBPCG [ 8 ] permite un cálculo rápido, preciso y robusto de los vectores propios, incluidos aquellos correspondientes a autovalores casi múltiples donde el LOBPCG de vector único sufre de una convergencia lenta. El tamaño del bloque puede ajustarse para equilibrar la estabilidad numérica frente a la velocidad de convergencia frente a los costes computacionales de las ortogonalizaciones y el método de Rayleigh-Ritz en cada iteración.
Diseño central
El enfoque de bloques en LOBPCG reemplaza a los vectores individuales.ycon vectores de bloques, es decir matricesy, donde, por ejemplo, cada columna deaproxima uno de los autovectores. Todas las columnas se iteran simultáneamente y la siguiente matriz de autovectores aproximadosse determina mediante el método de Rayleigh-Ritz en el subespacio generado por todas las columnas de matricesyCada columna dese calcula simplemente como el residuo precondicionado para cada columna deLa matrizse determina de tal manera que los subespacios abarcados por las columnas dey deson lo mismo.
Estabilidad numérica frente a eficiencia
El resultado del método de Rayleigh-Ritz está determinado por el subespacio generado por todas las columnas de las matrices.ydonde una base del subespacio puede ser teóricamente arbitraria. Sin embargo, en la aritmética computacional inexacta, el método de Rayleigh-Ritz se vuelve numéricamente inestable si algunos de los vectores base son aproximadamente linealmente dependientes. Las inestabilidades numéricas suelen ocurrir, por ejemplo, si algunos de los autovectores en el bloque iterativo ya alcanzan la precisión alcanzable para una precisión computacional dada y son especialmente prominentes en baja precisión, por ejemplo, precisión simple .
El arte de implementar LOBPCG de forma diversa consiste en garantizar la estabilidad numérica del método de Rayleigh-Ritz con un coste computacional mínimo mediante la elección de una buena base del subespacio. El enfoque posiblemente más estable, que consiste en hacer que los vectores base sean ortogonales, por ejemplo, mediante el proceso de Gram-Schmidt , es también el más costoso computacionalmente. Por ejemplo, las implementaciones de LOBPCG [ 9 ] [ 10 ] utilizan la descomposición de Cholesky, inestable pero eficiente , de la matriz normal , que se realiza únicamente en matrices individuales.y, en lugar de en todo el subespacio. La cantidad de memoria de computadora en constante aumento permite tamaños de bloque típicos hoy en día en elrango, donde el porcentaje de tiempo de cálculo dedicado a las ortogonalizaciones y el método de Rayleigh-Ritz comienzan a predominar.
Bloqueo de autovectores previamente convergidos
Los métodos de bloques para problemas de valores propios que iteran subespacios suelen presentar convergencias más rápidas entre algunos vectores propios iterativos que otros, lo que motiva el bloqueo de los vectores propios ya convergidos, es decir, su eliminación del bucle iterativo, para evitar cálculos innecesarios y mejorar la estabilidad numérica. La simple eliminación de un vector propio puede generar su duplicado en vectores que aún se encuentran en iteración. El hecho de que los vectores propios de problemas de valores propios simétricos sean ortogonales entre sí sugiere que todos los vectores iterativos deben ser ortogonales a los vectores bloqueados.
El bloqueo puede implementarse de manera diferente manteniendo la precisión numérica y la estabilidad al tiempo que se minimizan los costos de computación. Por ejemplo, las implementaciones de LOBPCG, [ 9 ] [ 10 ] siguen, [ 8 ] [ 11 ] separando el bloqueo duro, es decir una deflación por restricción, donde los autovectores bloqueados sirven como entrada de código y no cambian, del bloqueo blando, donde los vectores bloqueados no participan en el paso iterativo típicamente más costoso de calcular los residuos, sin embargo, participan completamente en el método Rayleigh-Ritz y por lo tanto se permite que sean cambiados por el método Rayleigh-Ritz.
Modificaciones, LOBPCG II
LOBPCG incluye todas las columnas de matricesyen el método Rayleigh-Ritz, lo que resulta en un hasta-por-problema de valores propios necesario para resolver y hastaproductos escalares para calcular en cada iteración, dondeindica el tamaño del bloque: el número de columnas. Para tamaños de bloque grandesEsto comienza a dominar los costos de computación y E/S, y a limitar la paralelización, donde varios dispositivos de computación funcionan simultáneamente.
El artículo original de LOBPCG [ 8 ] describe una modificación, llamada LOBPCG II, para abordar dicho problema ejecutando la versión de vector único del método LOBPCG para cada par propio deseado con el procedimiento de Rayleigh-Ritz resolviendode problemas de valores propios proyectados de 3x3. El procedimiento global de Rayleigh-Ritz para todosLos pares propios se calculan en cada iteración, pero solo en las columnas de la matriz., reduciendo así el número de productos escalares necesarios adey el tamaño del problema global de valores propios proyectados a-por-de-por-En cada iteración. La referencia [ 12 ] va más allá al aplicar el algoritmo LOBPCG a cada vector propio aproximado por separado, es decir, ejecutar la versión sin bloqueo del método LOBPCG para cada par propio deseado durante un número fijo de iteraciones. Los procedimientos de Rayleigh-Ritz en estas ejecuciones solo necesitan resolver un conjunto de problemas de valores propios proyectados de 3 × 3. El procedimiento global de Rayleigh-Ritz para todos los pares propios deseados se aplica solo periódicamente al final de un número fijo de iteraciones sin bloqueo de LOBPCG.
Estas modificaciones pueden ser menos robustas en comparación con el LOBPCG original. Las ramas que se ejecutan individualmente en el LOBPCG de un solo vector pueden no seguir rutas iterativas continuas, sino que se invierten y crean aproximaciones duplicadas al mismo vector propio. El LOBPCG de un solo vector puede no ser adecuado para valores propios agrupados, pero las ejecuciones separadas del LOBPCG de bloques pequeños requieren que se determinen automáticamente sus tamaños de bloque durante el proceso de iteraciones, ya que el número de grupos de valores propios y sus tamaños pueden ser desconocidos a priori.
Teoría y práctica de la convergencia
LOBPCG por construcción garantiza [ 8 ] minimizar el cociente de Rayleigh no más lento que el descenso de gradiente más pronunciado por bloques , que tiene una teoría de convergencia completa. Cada vector propio es un punto estacionario del cociente de Rayleigh , donde el gradiente se anula. Por lo tanto, el descenso de gradiente puede ralentizarse en las proximidades de cualquier vector propio , sin embargo, se garantiza que convergerá al vector propio con una tasa de convergencia lineal o, si este vector propio es un punto de silla , es más probable que el cociente de Rayleigh iterativo caiga por debajo del valor propio correspondiente y comience a converger linealmente al siguiente valor propio inferior. El peor valor de la tasa de convergencia lineal se ha determinado [ 8 ] y depende de la brecha relativa entre el valor propio y el resto del espectro de la matriz y la calidad del precondicionador , si está presente.
Para una matriz general, evidentemente no hay forma de predecir los autovectores y, por lo tanto, generar las aproximaciones iniciales que siempre funcionen bien. La solución iterativa de LOBPCG puede ser sensible a las aproximaciones de los autovectores iniciales, por ejemplo, tardando más en converger y ralentizándose al pasar pares de autovectores intermedios. Además, en teoría, no se puede garantizar la convergencia necesariamente al par de autovectores más pequeño, aunque la probabilidad de que no se alcance es cero. Una función gaussiana aleatoria de buena calidad con media cero es comúnmente la opción predeterminada en LOBPCG para generar las aproximaciones iniciales. Para fijar las aproximaciones iniciales, se puede seleccionar una semilla fija para el generador de números aleatorios .
A diferencia del método de Lanczos , el método LOBPCG rara vez muestra convergencia superlineal asintótica en la práctica.
Análisis de componentes principales parcial (PCA) y descomposición en valores singulares (SVD)
LOBPCG se puede adaptar fácilmente para calcular varios valores singulares grandes y los vectores singulares correspondientes (SVD parcial), por ejemplo, para el cálculo iterativo de PCA , para una matriz de datos D con media cero, sin calcular explícitamente la matriz de covarianza D T D , es decir, de forma independiente de la matriz . El cálculo principal es la evaluación de una función del producto D T ( D X ) de la matriz de covarianza D T D y el vector de bloques X que aproxima iterativamente los vectores singulares deseados. PCA necesita los autovalores más grandes de la matriz de covarianza, mientras que LOBPCG se implementa típicamente para calcular los más pequeños. Una solución sencilla es negar la función, sustituyendo − D T ( D X ) por D T ( D X ) y, por lo tanto, invirtiendo el orden de los autovalores, ya que a LOBPCG no le importa si la matriz del problema de autovalores es definida positiva o no. [ 9 ]
LOBPCG para PCA y SVD está implementado en SciPy desde la revisión 1.4.0 [ 13 ].
Implementaciones generales de software
El inventor de LOBPCG, Andrew Knyazev , publicó una implementación de referencia llamada Block Locally Optimal Preconditioned Eigenvalue Xolvers (BLOPEX) [ 14 ] [ 15 ] con interfaces a PETSc , hypre y Parallel Hierarchical Adaptive MultiLevel method (PHAML). [ 16 ] Otras implementaciones están disponibles en, por ejemplo, GNU Octave , [ 17 ] MATLAB (incluyendo para matrices distribuidas o de mosaico), [ 9 ] Java , [ 18 ] Anasazi ( Trilinos ), [ 19 ] SLEPc , [ 20 ] [ 21 ] SciPy , [ 10 ] Julia , [ 22 ] MAGMA, [ 23 ] Pytorch , [ 24 ] Rust , [ 25 ] OpenMP y OpenACC , [ 26 ] CuPy (una biblioteca de matrices compatible con NumPy acelerada por CUDA ), [ 27 ] Google JAX , [ 28 ] y NVIDIA AMGX. [ 29 ] LOBPCG está implementado, [ 30 ] pero no incluido, en TensorFlow .
Aplicaciones
Los paquetes de software scikit-learn y Megaman [ 31 ] utilizan LOBPCG para escalar el agrupamiento espectral [ 32 ] y el aprendizaje de variedades [ 33 ] a través de mapas propios laplacianos a grandes conjuntos de datos. NVIDIA ha implementado [ 34 ] LOBPCG en su biblioteca nvGRAPH introducida en CUDA 8. Sphynx, [ 35 ] un particionador de grafos paralelo híbrido habilitado para memoria compartida y distribuida, la primera herramienta de particionamiento de grafos que funciona en GPU en configuraciones de memoria distribuida, utiliza el agrupamiento espectral para el particionamiento de grafos , calculando vectores propios en la matriz laplaciana del grafo utilizando LOBPCG del paquete Anasazi .
LOBPCG está implementado en ABINIT [ 36 ] (incluida la versión CUDA ) y Octopus . [ 37 ] Ha sido utilizado para matrices de miles de millones de elementos por finalistas del Premio Gordon Bell , en la supercomputadora Earth Simulator en Japón. [ 38 ] [ 39 ] El modelo de Hubbard para sistemas de electrones fuertemente correlacionados para comprender el mecanismo detrás de la superconductividad utiliza LOBPCG para calcular el estado fundamental del hamiltoniano en la computadora K [ 40 ] y sistemas multi-GPU. [ 41 ]
Existen versiones de LOBPCG para MATLAB [ 42 ] y Julia [ 43 ] [ 44 ] para ecuaciones de Kohn-Sham y teoría funcional de la densidad (DFT) utilizando la base de ondas planas. Las implementaciones recientes incluyen TTPY, [ 45 ] Platypus‐QM, [ 46 ] MFDn, [ 47 ] ACE-Molecule, [ 48 ] LACONIC. [ 49 ]
LOBPCG de BLOPEX se utiliza para la configuración del preacondicionador en la biblioteca de solucionadores BDDCML ( Multilevel Balancing Domain Decomposition by Constraints ), que está incorporada en OpenFTL (Open Finite element Template Library) y en el simulador Flow123d de flujo de agua subterránea, transporte de solutos y calor en medios porosos fracturados . LOBPCG se ha implementado [ 50 ] en LS-DYNA e indirectamente en ANSYS . [ 51 ]
LOBPCG es uno de los solucionadores de valores propios principales en PYFEMax y en el software de elementos finitos multifísicos de alto rendimiento Netgen/NGSolve. LOBPCG de hypre está incorporado en la biblioteca C++ escalable y ligera de código abierto para métodos de elementos finitos MFEM , que se utiliza en muchos proyectos, incluidos BLAST , XBraid, VisIt , xSDK, el instituto FASTMath en SciDAC y el Centro de codiseño para discretizaciones exaescala eficientes (CEED) en el proyecto de computación exaescala .
Se puede utilizar un filtro de paso bajo aproximado iterativo basado en LOBPCG para la eliminación de ruido ; véase, por ejemplo, [ 52 ] , para acelerar la eliminación de ruido de variación total .
La segmentación de imágenes mediante agrupamiento espectral realiza una incrustación de baja dimensión utilizando una matriz de afinidad entre píxeles, seguida de la agrupación de los componentes de los vectores propios en el espacio de baja dimensión, por ejemplo, utilizando el laplaciano del grafo para el filtro bilateral . La segmentación de imágenes mediante partición de grafos espectrales por LOBPCG con precondicionamiento multigrid se propuso por primera vez en [ 53 ] y se probó en [ 54 ] y [ 55 ] . Este último enfoque se implementó posteriormente en Python scikit-learn [ 56 ] , que utiliza LOBPCG de SciPy con precondicionamiento multigrid algebraico para resolver el problema de valores propios para el laplaciano del grafo.
Referencias
- ↑ Samokish, BA (1958). "El método del descenso más pronunciado para un problema de valores propios con operadores semiacotados". Izvestiya Vuzov, Math. (5): 105– 114.
- ↑ D'yakonov, EG (1996). Optimización en la resolución de problemas elípticos . CRC-Press. pág. 592. ISBN 978-0-8493-2872-5.
- ↑ Cullum, Jane K. ; Willoughby, Ralph A. (2002). Algoritmos de Lanczos para cálculos de valores propios simétricos grandes. Vol. 1 (Reimpresión del original de 1985) . Sociedad de Matemáticas Industriales y Aplicadas .
- ↑ Knyazev, Andrew V. (1987). "Estimaciones de la tasa de convergencia para métodos iterativos para el problema de valores propios simétrico de malla". Revista Soviética de Análisis Numérico y Modelado Matemático . 2 (5): 371– 396. doi : 10.1515/rnam.1987.2.5.371 . S2CID 121473545 .
- ↑ Knyazev, AV (1991). "Un método de gradiente conjugado precondicionado para problemas de valores propios y su implementación en un subespacio". En Albrecht, J.; Collatz, L.; Hagedorn, P.; Velte, W. (eds.). Tratamiento numérico de problemas de valores propios, vol. 5. Serie internacional de matemáticas numéricas, vol. 96, págs. 143-154 . doi : 10.1007/978-3-0348-6332-2_11 . ISBN 978-3-0348-6334-6.
- ↑ Knyazev, Andrew V. (1998). "Solucionadores de valores propios precondicionados: ¿un oxímoron?". Electronic Transactions on Numerical Analysis . 7 : 104–123 .
- ↑ Knyazev, Andrew (2017). "Implementaciones recientes, aplicaciones y extensiones del método de gradiente conjugado precondicionado por bloques localmente óptimo (LOBPCG)". arXiv : 1708.08354 [ cs.NA ].
- 1 2 3 4 5 6 7 8 Knyazev, Andrew V. (2001). "Hacia el solucionador de autovalores precondicionado óptimo: método de gradiente conjugado precondicionado por bloques localmente óptimo". SIAM Journal on Scientific Computing . 23 (2): 517– 541. Bibcode : 2001SJSC...23..517K . doi : 10.1137/S1064827500366124 . S2CID 7077751 .
- 1 2 3 4 Función de intercambio de archivos de MATLAB LOBPCG
- 1 2 3 Función de álgebra lineal dispersa de SciPy lobpcg
- ↑ Knyazev, A. (2004). Bloqueo duro y blando en métodos iterativos para problemas de valores propios simétricos . Octava Conferencia de Copper Mountain sobre Métodos Iterativos, 28 de marzo - 2 de abril de 2004. doi : 10.13140/RG.2.2.11794.48327 .
- ↑ Vecharynski, E.; Yang, C.; Pask, JE (2015). "Un algoritmo de gradiente conjugado precondicionado proyectado para calcular muchos pares propios extremos de una matriz hermitiana" . J. Comput. Phys . 290 : 73–89 . arXiv : 1407.7506 . Bibcode : 2015JCoPh.290...73V . doi : 10.1016/j.jcp.2015.02.030 . S2CID 43741860 .
- ↑ LOBPCG para SVDS en SciPy
- ↑ GitHub BLOPEX
- ↑ Knyazev, AV; Argentati, ME; Lashuk, I.; Ovtchinnikov, EE (2007). "Block Locally Optimal Precondition Eigenvalue Xolvers (BLOPEX) in Hypre and PETSc". SIAM Journal on Scientific Computing . 29 (5): 2224. arXiv : 0705.2626 . Bibcode : 2007SJSC...29.2224K . doi : 10.1137/060661624 . S2CID 266 .
- ↑ Interfaz PHAML BLOPEX con LOBPCG
- ↑ Función de álgebra lineal de Octave lobpcg
- ↑ Java LOBPCG en Google Code
- ↑ Anasazi Trilinos LOBPCG en GitHub
- ↑ SLEPc nativo LOBPCG
- ↑ Interfaz SLEPc BLOPEX para LOBPCG
- ↑ Julia LOBPCG en GitHub
- ↑ Anzt, Hartwig; Tomov, Stanimir; Dongarra, Jack (2015). "Aceleración del método LOBPCG en GPU mediante un producto matriz-vector disperso por bloques" . Actas del Simposio sobre Computación de Alto Rendimiento (HPC '15). Sociedad Internacional de Simulación por Computadora, San Diego, CA, EE. UU . HPC '15: 75–82 . ISBN 9781510801011.
- ↑ PyTorch LOBPCG en GitHub
- ↑ Rust LOBPCG en GitHub
- ↑ Rabbi, Fazlay; Daley, Christopher S.; Aktulga, Hasan M.; Wright, Nicholas J. (2019). Evaluación de modelos de programación de GPU basados en directivas en un solucionador de valores propios por bloques con consideración de matrices dispersas grandes (PDF) . Séptimo taller sobre programación de aceleradores mediante directivas, SC19: Conferencia internacional sobre computación de alto rendimiento, redes, almacenamiento y análisis .
- ↑ CuPy: Una biblioteca de matrices compatible con NumPy acelerada por CUDA LOBPCG en GitHub
- ↑ Fusión inicial de Google JAX LOBPCG en GitHub
- ↑ NVIDIA AMGX LOBPCG en GitHub
- ↑ Rakhuba, Maxim; Novikov, Alexander; Osedelets, Ivan (2019). "Solucionador de valores propios riemanniano de bajo rango para hamiltonianos de alta dimensión" . Journal of Computational Physics . 396 : 718–737 . arXiv : 1811.11049 . Bibcode : 2019JCoPh.396..718R . doi : 10.1016/j.jcp.2019.07.003 . S2CID 119679555 .
- ↑ McQueen, James; et al. (2016). "Megaman: Aprendizaje escalable de variedades en Python" . Journal of Machine Learning Research . 17 (148): 1– 5. Bibcode : 2016JMLR...17..148M .
- ↑ "Sklearn.cluster.SpectralClustering — documentación de scikit-learn 0.22.1" .
- ↑ "Sklearn.manifold.spectral_embedding — documentación de scikit-learn 0.22.1" .
- ↑ Naumov, Maxim (2016). "Particionamiento rápido de grafos espectrales en GPU" . Blog de desarrolladores de NVIDIA .
- ↑ "Particionamiento de SGraph con Sphynx" .
- ↑ Documentación de ABINIT: Algoritmo de optimización de la función de onda
- ↑ "Manual de desarrolladores de Octopus: LOBPCG" . Archivado del original el 29/07/2018 . Consultado el 29/07/2018 .
- ↑ Yamada, S.; Imamura, T.; Machida, M. (2005). 16.447 TFlops y diagonalización exacta de 159 mil millones de dimensiones para el modelo de Hubbard de fermiones atrapados en el simulador de la Tierra . Actas de la Conferencia ACM/IEEE sobre Supercomputación (SC'05) . pág. 44. doi : 10.1109/SC.2005.1 . ISBN 1-59593-061-2.
- ↑ Yamada, S.; Imamura, T.; Kano, T.; Machida, M. (2006). Finalistas del premio Gordon Bell I: Computación de alto rendimiento para enfoques numéricos exactos de problemas cuánticos de muchos cuerpos en el simulador terrestre . Actas de la conferencia ACM/IEEE sobre supercomputación (SC '06). pág. 47. doi : 10.1145/1188455.1188504 . ISBN 0769527000.
- ↑ Yamada, S.; Imamura, T.; Machida, M. (2018). Método LOBPCG de alto rendimiento para resolver valores propios múltiples del modelo de Hubbard: eficiencia del precondicionador de expansión de Neumann que evita la comunicación . Conferencia asiática sobre fronteras de la supercomputación. Yokota R., Wu W. (eds) Fronteras de la supercomputación. SCFA 2018. Lecture Notes in Computer Science, vol. 10776. Springer, Cham . pp. 243–256 . doi : 10.1007/978-3-319-69953-0_14 .
- ↑ Yamada, S.; Imamura, T.; Machida, M. (2022). Método LOBPCG paralelo de alto rendimiento para hamiltonianos grandes derivados del modelo de Hubbard en sistemas multi-GPU . SupercomputingAsia (SCA).
- ↑ Yang, C.; Meza, JC; Lee, B.; Wang, L.-W. (2009). "KSSOLV - una caja de herramientas de MATLAB para resolver las ecuaciones de Kohn-Sham". ACM Trans. Math. Softw . 36 (2): 1– 35. doi : 10.1145/1499096.1499099 . S2CID 624897 .
- ^ Fathurrahman, Fadjar; Agusta, Mohammad Kemal; Saputro, Adhitya Gandaryus; Dipojono, Hermawan Kresno (2020). "PWDFT.jl: un paquete de Julia para el cálculo de estructuras electrónicas utilizando la teoría funcional de la densidad y la base de ondas planas". Comunicaciones de Física Informática . 256 107372. Código Bib : 2020CoPhC.25607372F . doi : 10.1016/j.cpc.2020.107372 . S2CID 219517717 .
- ↑ Kit de herramientas de la teoría funcional de la densidad (DFTK). Teoría funcional de la densidad de ondas planas en Julia
- ↑ Rakhuba, Maxim; Oseledets, Ivan (2016). "Cálculo de espectros vibracionales de moléculas mediante descomposición en tren tensorial". J. Chem. Phys . 145 (12): 124101. arXiv : 1605.08422 . Bibcode : 2016JChPh.145l4101R . doi : 10.1063 /1.4962420 . PMID 27782616. S2CID 44797395 .
- ↑ Takano, Yu; Nakata, Kazuto; Yonezawa, Yasushige; Nakamura, Haruki (2016). "Desarrollo de un programa masivo de simulación de dinámica molecular multinivel, platypus (PLATform for dYnamic protein unified simulation), para la elucidación de funciones proteicas" . J. Comput. Chem . 37 (12): 1125–1132 . doi : 10.1002/jcc.24318 . PMC 4825406. PMID 26940542 .
- ↑ Shao, Meiyue; et al. (2018). "Aceleración de los cálculos de interacción de configuración nuclear mediante un solucionador de valores propios iterativo por bloques precondicionado". Computer Physics Communications . 222 (1): 1– 13. arXiv : 1609.01689 . Bibcode : 2018CoPhC.222....1S . doi : 10.1016/j.cpc.2017.09.004 . S2CID 13996642 .
- ↑ Kang, Sungwoo; et al. (2020). "ACE-Molecule: Un paquete de química cuántica de espacio real de código abierto" . The Journal of Chemical Physics . 152 (12) 124110. Bibcode : 2020JChPh.152l4110K . doi : 10.1063/5.0002959 . PMID 32241122. S2CID 214768088 .
- ↑ Baczewski, Andrew David; Brickson, Mitchell Ian; Campbell, Quinn; Jacobson, Noah Tobias; Maurer, Leon (2020-09-01). Un coprocesador analógico cuántico para la simulación de sistemas de electrones correlacionados (Informe). Estados Unidos: Laboratorio Nacional Sandia (SNL-NM). doi : 10.2172/1671166 . OSTI 1671166 .
- ↑ Un estudio sobre los métodos de solución de valores propios en LS-DYNA . XV Conferencia Internacional LS-DYNA, Detroit. 2018.
- ↑ "LS-DYNA 2024R1 (R15.0) Novedades recientes" (PDF) . 2024. pág. 15.
- ↑ Knyazev, A.; Malyshev, A. (2015). Filtros polinomiales espectrales acelerados basados en grafos . 2015 IEEE 25th International Workshop on Machine Learning for Signal Processing (MLSP), Boston, MA. pp. 1– 6. arXiv : 1509.02468 . doi : 10.1109/MLSP.2015.7324315 .
- ↑ Knyazev, Andrew V. (2003). Boley; Dhillon; Ghosh; Kogan (eds.). Solucionadores de valores propios precondicionados modernos para la segmentación de imágenes espectrales y la bisección de grafos . Agrupación de grandes conjuntos de datos; Tercera Conferencia Internacional IEEE sobre Minería de Datos (ICDM 2003) Melbourne, Florida: IEEE Computer Society. págs. 59–62 .
- ↑ Knyazev, Andrew V. (2006). Segmentación de imágenes espectrales multiescala. Preacondicionamiento multiescala para el cálculo de valores propios de laplacianos de grafos en la segmentación de imágenes . Taller de aprendizaje rápido de variedades, WM Williamburg, VA. doi : 10.13140/RG.2.2.35280.02565 .
- ↑ Knyazev, Andrew V. (2006). Particionamiento de grafos espectrales multiescala y segmentación de imágenes . Taller sobre algoritmos para conjuntos de datos masivos modernos, Universidad de Stanford y Yahoo! Research.
- ↑ "Agrupamiento espectral — documentación de scikit-learn" .
Enlaces externos
- LOBPCG en MATLAB
- LOBPCG en Octava
- LOBPCG en SciPy
- LOBPCG en Java en Google Code
- LOBPCG en Block Locally Optimal Precondition Eigenvalue Xolvers (BLOPEX) en GitHub y archivado en Google Code
- Álgebra lineal numérica
- Software de simulación científica