El gradiente conjugado preacondicionado de bloque localmente óptimo ( LOBPCG ) es un método sin matriz para encontrar los valores propios más grandes (o más pequeños) y los vectores propios correspondientes de un problema de valores propios generalizados simétricos
para un par dado de matrices complejas simétricas hermitianas o reales , donde la matriztambién se asume positivo-definido .
Fondo
Kantorovich en 1948 propuso calcular el valor propio más pequeño de una matriz simétrica por el descenso más empinado usando una direcciónde un gradiente escalado de un cociente de Rayleigh en un producto escalar , con el tamaño del paso calculado minimizando el cociente de Rayleigh en el intervalo lineal de los vectores y , es decir, de una manera localmente óptima. Samokish [1] propuso aplicar un preacondicionador. al vector residual para generar la dirección preacondicionada y asintótico derivado, como se aproxima al vector propio , límites de la tasa de convergencia. D'yakonov sugirió [2] un preacondicionamiento espectralmente equivalente y límites de velocidad de convergencia no asintóticos derivados. Bloquear localmente óptima de múltiples pasos descenso más rápido de problemas de valores propios se describe en. [3] minimización local del cociente de Rayleigh en el subespacio generado por la aproximación actual, la aproximación residual y el anterior actual, así como su versión de bloque, apareció en . [4] La versión preacondicionada se analizó en [5] y. [6]
Características principales [7]
- Sin matriz , es decir, no requiere almacenar la matriz de coeficientes de forma explícita, pero puede acceder a la matriz evaluando productos matriz-vector.
- Libre de factorización , es decir, no requiere ninguna descomposición matricial incluso para un problema de valores propios generalizados .
- Los costos por iteración y el uso de memoria son competitivos con los del método de Lanczos , calculando un solo par propio extremo de una matriz simétrica.
- La convergencia lineal está teóricamente garantizada y prácticamente se observa.
- Acelerada convergencia debido a directo preacondicionamiento , en contraste con el método de Lanczos , incluyendo variable y no simétrica, así como definido fijo y positivo preacondicionamiento .
- Permite la incorporación trivial de descomposición de dominios eficiente y técnicas de redes múltiples a través del preacondicionamiento.
- Warm comienza y calcula una aproximación al autovector en cada iteración.
- Más estable numéricamente en comparación con el método Lanczos y puede operar en aritmética informática de baja precisión.
- Fácil de implementar, con muchas versiones ya aparecidas.
- El bloqueo permite utilizar operaciones matriz-matriz altamente eficientes, por ejemplo, BLAS 3.
- El tamaño del bloque se puede ajustar para equilibrar la velocidad de convergencia frente a los costos informáticos de las ortogonalizaciones y el método Rayleigh-Ritz en cada iteración.
Algoritmo
Versión de un solo vector
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
que resulta en encontrar 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 positivamente proporcional al vector
llamado residuo de vector propio . Si un preacondicionador está disponible, se aplica al residual y da el vector
llamado residuo preacondicionado. Sin preacondicionamiento, establecemos y entonces . Un método iterativo
o, en resumen,
se conoce como ascenso (o descenso) más empinado preacondicionado , donde el escalarse llama el tamaño del paso. El tamaño de paso óptimo se puede determinar maximizando el cociente de Rayleigh, es decir,
(o en caso de minimizar), en cuyo caso el método se denomina localmente óptimo.
Recurrencia de tres términos
Para acelerar drásticamente la convergencia del ascenso (o descenso) más empinado preacondicionado localmente óptimo, se puede agregar un vector adicional a la relación de recurrencia de dos términos para convertirla en tres términos:
(usar en caso de minimizar). 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, ver, por ejemplo, la extrapolación de Richardson , no da como resultado una aceleración significativa [8] pero aumenta los costos de cálculo, por lo que generalmente no se recomienda.
Mejoras de estabilidad numérica
A medida que las iteraciones convergen, los vectores y se vuelven casi linealmente dependientes , lo que resulta en una pérdida de precisión y hace que el método Rayleigh-Ritz sea numéricamente inestable en presencia de errores de redondeo. La pérdida de precisión se puede evitar sustituyendo el vector con un vector , que puede estar más lejos de , en la base del subespacio tridimensional , manteniendo inalterado el subespacio y evitando la ortogonalización o cualquier otra operación extra. [8] Además, la ortogonalización de la base del subespacio tridimensional puede ser necesaria para problemas de valores propios mal condicionados para mejorar la estabilidad y la precisión alcanzable.
Análogos del subespacio de Krylov
Ésta 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 trivial y la aproximación resultante con será diferente al obtenido por el algoritmo de Lanczos , aunque ambas aproximaciones pertenecerán al mismo subespacio de Krylov .
Escenarios de uso práctico
La extrema simplicidad y 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 a través de particiones de gráficos en ASIC o FPGA integrados hasta el modelado de fenómenos físicos de registro complejidad informática en supercomputadoras TOP500 de exaescala .
Versión de bloque
Resumen
Los pares propios posteriores se pueden calcular 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 aditivamente la precisión de los vectores propios calculados posteriormente, aumentando así el error con cada nuevo cálculo. Iterar varios autovectores aproximados juntos en un bloque de una manera localmente óptima en la versión de bloque del LOBPCG. [8] permite el cálculo rápido, preciso y robusto de autovectores, incluidos los correspondientes a casi múltiples autovalores donde el LOBPCG de un solo vector sufre de una lenta convergencia. El tamaño del bloque se puede ajustar para equilibrar la estabilidad numérica frente a la velocidad de convergencia frente a los costos informáticos de las ortogonalizaciones y el método Rayleigh-Ritz en cada iteración.
Diseño del núcleo
El enfoque de bloque en LOBPCG reemplaza a los vectores simples y con vectores de bloque, es decir, matrices y , donde, por ejemplo, cada columna de se aproxima a uno de los vectores propios. Todas las columnas se iteran simultáneamente y la siguiente matriz de vectores propios aproximadosestá determinada por el método de Rayleigh-Ritz en el subespacio abarcado por todas las columnas de matrices y . Cada columna de se calcula simplemente como el residual preacondicionado para cada columna de La matriz se determina de tal manera que los subespacios abarcados por las columnas de y de son lo mismo.
Estabilidad numérica frente a eficiencia
El resultado del método de Rayleigh-Ritz está determinado por el subespacio abarcado por todas las columnas de matrices y , donde una base del subespacio puede ser teóricamente arbitraria. Sin embargo, en la aritmética informática inexacta, el método Rayleigh-Ritz se vuelve numéricamente inestable si algunos de los vectores básicos dependen aproximadamente de forma lineal. Las inestabilidades numéricas ocurren típicamente, por ejemplo, si algunos de los autovectores en el bloque iterativo ya alcanzan una precisión alcanzable para una precisión de computadora dada y son especialmente prominentes en baja precisión, por ejemplo, precisión simple .
El arte de implementar múltiples y diferentes LOBPCG es asegurar la estabilidad numérica del método Rayleigh-Ritz a costos de computación mínimos eligiendo una buena base del subespacio. El enfoque posiblemente más estable de hacer que los vectores base sean ortogonales, por ejemplo, mediante el proceso de Gram-Schmidt , también es el más costoso desde el punto de vista computacional. Por ejemplo, las implementaciones de LOBPCG, [9] [10] utilizan una descomposición de Cholesky inestable pero eficiente de la matriz normal , que se realiza solo 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 el rango, donde el porcentaje de tiempo de cálculo invertido en ortogonalizaciones y el método Rayleigh-Ritz comienza a dominar.
Bloqueo de autovectores previamente convergentes
Los métodos de bloque para problemas de valores propios que iteran subespacios comúnmente tienen algunos de los vectores propios iterativos convergiendo más rápido que otros, lo que motiva el bloqueo de los vectores propios ya convergentes, es decir, eliminándolos del ciclo iterativo, para eliminar cálculos innecesarios y mejorar la estabilidad numérica. Una simple eliminación de un vector propio probablemente puede resultar en la formación de su duplicado en vectores que aún se repiten. El hecho de que los vectores propios de los problemas de valores propios simétricos sean ortogonales por pares sugiere mantener todos los vectores iterativos ortogonales a los vectores bloqueados.
El bloqueo se puede implementar de manera diferente manteniendo la precisión numérica y la estabilidad mientras se minimizan los costos de cálculo. Por ejemplo, las implementaciones de LOBPCG, [9] [10] siguen, [8] [11] separando el bloqueo rígido, es decir, una deflación por restricción, donde los vectores propios bloqueados sirven como entrada de código y no cambian, desde el bloqueo suave, donde el 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, pueden ser modificados por el método Rayleigh-Ritz.
Teoría y práctica de la convergencia
LOBPCG por construcción está garantizado [8] para minimizar el cociente de Rayleigh no más lento que el descenso de gradiente más pronunciado del bloque , que tiene una teoría de convergencia integral. Cada vector propio es un punto estacionario del cociente de Rayleigh , donde el gradiente desaparece. Por lo tanto, el descenso del gradiente puede ralentizarse en la vecindad 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 disminuya por debajo del valor propio correspondiente y comience a converger linealmente al siguiente valor propio a continuación. Se ha determinado el peor valor de la tasa de convergencia lineal lineal [8] y depende de la brecha relativa entre el valor propio y el resto del espectro de la matriz y la calidad del preacondicionador , si está presente.
Para una matriz general, evidentemente no hay forma de predecir los autovectores y así generar las aproximaciones iniciales que siempre funcionan 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 desacelerándose a medida que pasan los autopares intermedios. Además, en teoría, no se puede garantizar la convergencia necesariamente al par propio más pequeño, aunque la probabilidad de error es cero. Una función gaussiana aleatoria de buena calidad con la media cero suele ser la predeterminada en LOBPCG para generar las aproximaciones iniciales. Para corregir las aproximaciones iniciales, se puede seleccionar una semilla fija para el generador de números aleatorios .
En contraste con el método de Lanczos , LOBPCG rara vez exhibe convergencia superlineal asintótica en la práctica.
Análisis de componentes principales parciales (PCA) y descomposición de valores singulares (SVD)
LOBPCG se puede adoptar trivialmente para calcular varios valores singulares mayores 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 moda sin matriz . El cálculo principal es la evaluación de una función del producto D T (DX) de la matriz de covarianza D T D y el vector de bloque X que se aproxima iterativamente a los vectores singulares deseados. PCA necesita los valores propios más grandes de la matriz de covarianza, mientras que LOBPCG normalmente se implementa para calcular los más pequeños. Una solución simple es negar la función, sustituyendo -D T (DX) por D T (DX) y así invirtiendo el orden de los valores propios, ya que a LOBPCG no le importa si la matriz del problema de valores propios es definida positiva o no. . [9]
LOBPCG para PCA y SVD está implementado en SciPy desde la revisión 1.4.0 [12]
Implementaciones generales de software
El inventor de LOBPCG, Andrew Knyazev , publicó una implementación de referencia llamada Block Locally Optimal Preconditioned Eigenvalue Xolvers (BLOPEX) [13] [14] con interfaces para PETSc , hypre y el método de niveles múltiples adaptativos jerárquicos paralelos (PHAML). [15] Otras implementaciones están disponibles en, por ejemplo, GNU Octave , [16] MATLAB (incluso para matrices distribuidas o en mosaico), [9] Java , [17] Anasazi ( Trilinos ), [18] SLEPc , [19] [20 ] SciPy , [10] Julia , [21] MAGMA, [22] Pytorch , [23] Rust , [24] OpenMP y OpenACC , [25] CuPy (una biblioteca de matrices compatible con NumPy acelerada por CUDA ), [26] y NVIDIA AMGX. [27] LOBPCG está implementado, [28] pero no incluido, en TensorFlow .
Aplicaciones
Ciencias de los materiales
LOBPCG está implementado en ABINIT [29] (incluida la versión CUDA ) y Octopus . [30] Ha sido utilizado para matrices multimillonarias por los finalistas del Premio Gordon Bell , en la supercomputadora Earth Simulator en Japón. [31] [32] modelo 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 el ordenador K . [33] Existen versiones de MATLAB [34] y Julia [35] [36] [37] de LOBPCG para las ecuaciones de Kohn-Sham y la teoría funcional de densidad (DFT) que utilizan la base de onda simple. Las implementaciones recientes incluyen TTPY, [38] Platypus ‐ QM, [39] MFDn, [40] ACE-Molecule, [41] LACONIC. [42]
Mecánica y fluidos
LOBPCG de BLOPEX se utiliza para la configuración del preacondicionador en la biblioteca de resolución de descomposición por restricciones de dominio de equilibrio multinivel (BDDC) BDDCML, que se incorpora en OpenFTL ( Biblioteca de plantillas de elementos finitos abiertos ) y en el simulador Flow123d de flujo de agua subterránea, transporte de solutos y calor en medios porosos fracturados . LOBPCG se ha implementado [43] en LS-DYNA .
Ecuaciones de Maxwell
LOBPCG es uno de los solucionadores de valores propios centrales en PYFEMax y el software de elementos finitos multifísica de alto rendimiento Netgen / NGSolve. LOBPCG de hypre se incorpora en la biblioteca de C ++ escalable y liviana 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 co-diseño para discretizaciones eficientes a exaescala (CEED) en el Proyecto de Computación Exascale .
Denoising
El filtro de paso bajo aproximado basado en LOBPCG iterativo se puede utilizar para eliminar el ruido ; véase, [44] por ejemplo, para acelerar la eliminación de ruido de la variación total .
Segmentación de imagen
La segmentación de imágenes a través de la agrupación 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. LOBPCG con preacondicionamiento de redes múltiples se aplicó por primera vez a la segmentación de imágenes en [45] mediante la partición de gráficos espectrales utilizando el gráfico Laplaciano para el filtro bilateral . Scikit-learn usa LOBPCG de SciPy con preacondicionamiento algebraico de redes múltiples para resolver el problema de valores propios. [46]
Procesamiento de datos
Los paquetes de software scikit-learn y Megaman [47] utilizan LOBPCG para escalar la agrupación espectral [48] y el aprendizaje múltiple [49] a través de mapas propios laplacianos a grandes conjuntos de datos. NVIDIA ha implementado [50] LOBPCG en su biblioteca nvGRAPH introducida en CUDA 8.
Referencias
- ^ Samokish, BA (1958). "El método de descenso más empinado para un problema de valor propio con operadores semilimitados". Izvestiya Vuzov, Math. (5): 105-114.
- ^ D'yakonov, EG (1996). Optimización en la resolución de problemas elípticos . CRC-Press. pag. 592. ISBN 978-0-8493-2872-5.
- ^ Cullum, Jane K .; Willoughby, Ralph A. (2002). Algoritmos de Lanczos para grandes cálculos simétricos de valores propios. 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étricos 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 preacondicionado 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ática Numérica. 96 . págs. 143-154. doi : 10.1007 / 978-3-0348-6332-2_11 . ISBN 978-3-0348-6334-6.
- ^ Knyazev, Andrew V. (1998). "Eigensolvers preacondicionados - ¿un oxímoron?". Transacciones electrónicas sobre análisis numérico . 7 : 104-123.
- ^ Knyazev, Andrew (2017). "Implementaciones recientes, aplicaciones y extensiones del método de gradiente conjugado preacondicionado de bloques localmente óptimos (LOBPCG)". arXiv : 1708.08354 [ cs.NA ].
- ^ a b c d e f g Knyazev, Andrew V. (2001). "Hacia el Eigensolver preacondicionado óptimo: método de gradiente conjugado preacondicionado en bloque localmente óptimo" . Revista SIAM de Computación Científica . 23 (2): 517–541. doi : 10.1137 / S1064827500366124 . S2CID 7077751 .
- ^ a b c d Función de intercambio de archivos MATLAB LOBPCG
- ^ a b c SciPy función de álgebra lineal dispersa lobpcg
- ^ Knyazev, A. (2004). Bloqueo rígido y suave 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 .
- ^ LOBPCG para SVDS en SciPy
- ^ GitHub BLOPEX
- ^ Knyazev, AV; Argentati, ME; Lashuk, I .; Ovtchinnikov, EE (2007). "Bloquear Xolvers de valor propio preacondicionado localmente óptimos (BLOPEX) en Hypre y PETSc". Revista SIAM de Computación Científica . 29 (5): 2224. arXiv : 0705.2626 . Código bibliográfico : 2007arXiv0705.2626K . doi : 10.1137 / 060661624 . S2CID 266 .
- ^ Interfaz PHAML BLOPEX a LOBPCG
- ^ Función de álgebra lineal de octava lobpcg
- ^ Java LOBPCG en Google Code
- ^ Anasazi Trilinos LOBPCG en GitHub
- ^ LOBPCG nativo de SLEPc
- ^ Interfaz SLEPc BLOPEX a LOBPCG
- ^ Julia LOBPCG en GitHub
- ^ Anzt, Hartwig; Tomov, Stanimir; Dongarra, Jack (2015). "Acelerando el método LOBPCG en GPU usando un producto de vector de matriz dispersa bloqueado" . Actas del Simposio sobre Computación de Alto Rendimiento (HPC '15). Society for Computer Simulation International, San Diego, CA, EE . UU . HPC '15: 75–82. ISBN 9781510801011.
- ^ Pytorch LOBPCG en GitHub
- ^ Rust LOBPCG en GitHub
- ^ Rabino, 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 Eigensolver de bloques con consideración de matrices dispersas grandes (PDF) . Séptimo Taller sobre Programación de Aceleradores usando Directivas, SC19: La Conferencia Internacional de Computación, Redes, Almacenamiento y Análisis de Alto Rendimiento .
- ^ CuPy: unabiblioteca de matrices compatible con NumPy acelerada por CUDA LOBPCG en GitHub
- ^ NVIDIA AMGX LOBPCG en GitHub
- ^ Rakhuba, Maxim; Novikov, Alexander; Osedelets, Ivan (2019). "Eigensolver riemanniano de bajo rango para hamiltonianos de alta dimensión" . Revista de Física Computacional . 396 : 718–737. arXiv : 1811.11049 . Código bibliográfico : 2019JCoPh.396..718R . doi : 10.1016 / j.jcp.2019.07.003 . S2CID 119679555 .
- ^ ABINIT Docs: ALGoritmo de optimización de función de onda
- ^ Manual para desarrolladores de Octopus: LOBPCG
- ^ Yamada, S .; Imamura, T .; Machida, M. (2005). 16.447 TFlops y diagonal exacta de 159 mil millones de dimensiones para el modelo de Fermion-Hubbard atrapado en el simulador de la Tierra . Proc. Conferencia ACM / IEEE sobre Supercomputación (SC'05) . pag. 44. doi : 10.1109 / SC.2005.1 . ISBN 1-59593-061-2.
- ^ Yamada, S .; Imamura, T .; Kano, T .; Machida, M. (2006). Finalistas de Gordon Bell I: Computación de alto rendimiento para enfoques numéricos exactos de problemas cuánticos de muchos cuerpos en el simulador de la Tierra . Proc. Conferencia ACM / IEEE sobre Supercomputación (SC '06). pag. 47. doi : 10.1145 / 1188455.1188504 . ISBN 0769527000.
- ^ Yamada, S .; Imamura, T .; Machida, M. (2018). Método LOBPCG de alto rendimiento para resolver múltiples valores propios del modelo Hubbard: Eficiencia de la comunicación evitando el preacondicionador de expansión de Neumann . Conferencia asiática sobre fronteras de la supercomputación. Yokota R., Wu W. (eds) Supercomputing Frontiers. SCFA 2018. Lecture Notes in Computer Science, vol 10776. Springer, Cham . págs. 243-256. doi : 10.1007 / 978-3-319-69953-0_14 .
- ^ 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. Matemáticas. 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 la estructura electrónica utilizando la teoría funcional de la densidad y la base de onda plana". Comunicaciones de Física Informática . 256 : 107372. Código Bibliográfico : 2020CoPhC.25607372F . doi : 10.1016 / j.cpc.2020.107372 .
- ^ Teoría funcional de densidad de onda plana (PWDFT) en Julia
- ^ Conjunto de herramientas de función de densidad (DFTK). Teoría funcional de densidad de onda plana en Julia
- ^ Rakhuba, Maxim; Oseledets, Ivan (2016). "Cálculo de espectros vibracionales de moléculas mediante descomposición de trenes tensores". J. Chem. Phys . 145 (12): 124101. arXiv : 1605.08422 . Código Bibliográfico : 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, ornitorrinco (PLATform for dYnamic protein unified simulation), para 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 cálculos de interacción de configuración nuclear a través de un Eigensolver iterativo de bloque preacondicionado". Comunicaciones de Física Informática . 222 (1): 1–13. arXiv : 1609.01689 . Código bibliográfico : 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". La Revista de Física Química . 152 (12): 124110. Código Bibliográfico : 2020JChPh.152l4110K . doi : 10.1063 / 5.0002959 . PMID 32241122 .
- ^ Baczewski, Andrew David; Brickson, Mitchell Ian; Campbell, Quinn; Jacobson, Noah Tobias; Maurer, León (1 de septiembre de 2020). Un coprocesador analógico cuántico para la simulación de sistemas electrónicos correlacionados (informe). Estados Unidos: Sandia National Lab. (SNL-NM). doi : 10.2172 / 1671166 . OSTI 1671166 .
- ^ Un estudio de los métodos de solución Eigen en LS-DYNA® . 15ª Conferencia Internacional LS-DYNA, Detroit. 2018.
- ^ Knyazev, A .; Malyshev, A. (2015). Filtros polinomiales espectrales basados en gráficos acelerados . 2015 IEEE 25th International Workshop on Machine Learning for Signal Processing (MLSP), Boston, MA. págs. 1–6. arXiv : 1509.02468 . doi : 10.1109 / MLSP.2015.7324315 .
- ^ Knyazev, Andrew V. (2003). Boley; Dhillon; Ghosh; Kogan (eds.). Eigensolvers modernos preacondicionados para segmentación de imágenes espectrales y bisección de gráficos . 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. CiteSeerX 10.1.1.566.3518 .
- ^ "2.3. Agrupación - documentación de scikit-learn 0.24.2" .
- ^ McQueen, James; et al. (2016). "Megaman: aprendizaje múltiple escalable en Python" . Revista de investigación sobre aprendizaje automático . 17 (148): 1–5. Código bibliográfico : 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 gráficos espectrales en GPU" . Blog para desarrolladores de NVIDIA .
enlaces externos
- LOBPCG en MATLAB
- LOBPCG en octava
- LOBPCG en SciPy
- LOBPCG en Java en Google Code
- LOBPCG en Block Locally Optimal Precondicionado Eigenvalue Xolvers (BLOPEX) en GitHub y archivado en Google Code