Progreso de la biblioteca doméstica de computación matemática de alto rendimiento PerfMPL

Autor: Wang Junhui

prefacio

La biblioteca de computación matemática es una biblioteca de software básica que habilita procesadores en el campo de la computación numérica y es la piedra angular de la computación de ingeniería, la computación científica y la computación de IA. La mayoría de los problemas de física e ingeniería se pueden transformar en ecuaciones lineales para resolver problemas, y una biblioteca de cálculo matemático eficiente es la piedra angular de la potencia informática del hardware.

Tome BLAS (Subprogramas de álgebra lineal básica, el estándar de la biblioteca de funciones de operación de álgebra lineal básica) como ejemplo. BLAS fue publicado por primera vez por el Departamento de Energía de los Estados Unidos en 1979. Anteriormente, cada aplicación requería una implementación manual de algoritmos de álgebra lineal, que a su vez requerían diferentes operaciones y estructuras de datos.

Para resolver este problema, el Departamento de Energía de EE. UU. creó el estándar BLAS, que permite a los usuarios reutilizar el mismo código en diferentes plataformas y arquitecturas informáticas definiendo una interfaz común para operaciones comunes (como multiplicación de vectores, multiplicación de matrices, suma de vectores, etc. .). El estándar BLAS original contenía 40 funciones del lenguaje Fortran para realizar operaciones comunes de álgebra lineal.

El estándar también se ha actualizado y ampliado con el tiempo, agregando más funciones y características. BLAS se ha convertido en un estándar ampliamente utilizado que puede proporcionar operaciones de álgebra lineal eficientes y también es la base de muchas bibliotecas de alto rendimiento, como OpenBLAS, MKL, etc.

Con el desarrollo de la tecnología informática y su aplicación cada vez más amplia, la biblioteca de computación matemática también ha seguido evolucionando. El número de funciones de uso común ha llegado a 10.000, y las versiones son diversas. También se ha convertido en un medio clave para que los gigantes internacionales controlen La ecología del software.

Cronología de desarrollo de la biblioteca de computación matemática Intel MKL

Estado del arte de las bibliotecas de computación matemática de alto rendimiento

La biblioteca de cálculo matemático incluye principalmente biblioteca de álgebra lineal, procesamiento de señales, biblioteca de matemáticas vectoriales, biblioteca de funciones matemáticas básicas (Libm), PDE y varios solucionadores. Consulte el "Apéndice 1" para conocer el alcance general.

También existen diversas versiones de software, existen software de cálculo matemático que se enfocan en el campo, y también existen software de cálculo matemático que sirven a cierto tipo de procesadores, otras diferencias también se reflejan en los siguientes aspectos:

  1. Una versión de los procesadores de servicio de la biblioteca matemática subyacente. La biblioteca de computación matemática MKL de Intel solo es compatible con x86, el código fuente no es de código abierto y es compatible con los procesadores Intel primero. Al mismo tiempo, en el ecosistema x86, la biblioteca MKL también es la más utilizada, principalmente debido a su desarrollo temprano y el alto rendimiento de los procesadores Intel en computación de alto rendimiento.La participación de mercado en el campo es muy alta. La biblioteca de computación matemática KML de Huawei es compatible con el procesador Kunpeng ARM de Huawei y no es de código abierto. De acuerdo con el "Acuerdo de licencia de BoostKit de Suite de habilitación de aplicaciones de Kunpeng", es solo para firmar el acuerdo o autorizar el uso del paquete de software en el hardware de Kunpeng. PerfMPL de Pengfeng Technology ya es compatible con una variedad de conjuntos de instrucciones principales, como RISC-V, x86, ARM, RISC-V y otros conjuntos de instrucciones, y proporciona versiones optimizadas específicas para el campo, y la versión comercial no es de código abierto. También hay bibliotecas de computación matemática paralela de GPU como CUDA (cuBLAS, cuFFT, etc.), que se utilizan para la programación de tarjetas GPU de NVIDIA. Es dudoso que otras empresas puedan usar bibliotecas de computación CUDA sobre la autorización legal.
  2. Software de computación matemática al servicio del campo. Por ejemplo, el proyecto de código abierto de renombre mundial OpenBLAS proporciona capacidades informáticas BLAS, FFTW implementa Fast Fourier Transform (FFT), LAPACK (Linear Algebra Package) proporciona algoritmos avanzados de álgebra lineal, como descomposición de matrices, cálculos de valores propios y vectores propios, etc.; VSIPL se utiliza principalmente para bibliotecas de procesamiento de imágenes, señales y vectores; PETSc proporciona funciones más abundantes, como solución no lineal, optimización, simulación de eventos discretos y procesamiento de señales. De hecho, hay muchos otros programas que pueden llamarse bibliotecas de computación matemática o middleware de computación.
  3. Otras diferencias a tener en cuenta:
    1. Existen diferencias entre el código abierto y el código cerrado en varios software de biblioteca de computación matemática. La biblioteca de cálculo matemático desarrollada de forma independiente por la empresa procesadora suele ser de código cerrado. Incluso si está disponible, siempre está sujeta a cambios y restricciones en el acuerdo de licencia del propietario de los derechos de autor. Algunos protocolos de biblioteca de código abierto no son comercialmente amigables (por ejemplo, FFTW es un acuerdo GPL, su uso hará que todos los códigos del producto se infecten y se verá obligado a abrir el código).
    2. Cuestiones de rendimiento computacional y precisión de cálculo, estos dos puntos son de especial preocupación en el campo de la computación de alto rendimiento. Por lo tanto, se debe tener cuidado al utilizar software de código abierto como parte de un servicio comercial.
    3. Los lenguajes de programación admitidos varían. Además de admitir C y C++, OpenBLAS también admite lenguajes de programación como Fortran, Python, R, Julia, MATLAB y Java.
    4. Los sistemas operativos compatibles varían. Intel MKL admite Windows, Linux y macOS; OpenBLAS admite Linux, macOS, Windows, BSD, Android/iOS; Huawei KML admite principalmente sistemas operativos relacionados con Linux.

Los países desarrollados consideran la biblioteca de computación matemática paralelizada como el foco de desarrollo a largo plazo de su software básico. Por ejemplo: En 1993, impulsado por la necesidad de computación paralela en sistemas informáticos de alto rendimiento, se lanzó oficialmente el proyecto PETSc (Portable, Extensible Toolkit for Scientific Computation), iniciado y desarrollado por el grupo de Matemáticas e Informática del Instituto de Computational Sciences, el propósito es proporcionar un conjunto de bibliotecas de software matemático paralelo para resolver de manera eficiente problemas de computación científica a gran escala.

Ahora, PETSc se usa ampliamente en corrientes de Foucault, simulación de yacimientos, optoelectrónica, electromagnética, sismología, simulación de corazón, simulación de colisión, astronomía, aprendizaje automático y otros campos de investigación.

La I + D y el desarrollo de bibliotecas de computación matemática juegan un papel muy positivo e importante en el diseño de chips, el desarrollo de algoritmos y los escenarios de aplicación para un país.

Diagrama esquemático de la integración de software y hardware.

Aplicación de Biblioteca de Cómputo Matemático de Alto Rendimiento

Las bibliotecas de computación matemática de alto rendimiento juegan un papel importante en los campos de la computación de ingeniería como EDA, CAE y la ingeniería microelectrónica. Las bibliotecas de computación matemática que admiten la computación paralela y la computación heterogénea también son el foco de investigación en los últimos años, como:

  1. Los algoritmos se aceleran utilizando el conjunto de instrucciones aceleradas de la CPU.
  2. Aceleración de algoritmo paralelo de GPU
  3. Cómputo paralelo de clúster a gran escala

Durante mucho tiempo, con el fin de controlar el desarrollo del campo de alta tecnología de mi país, los países extranjeros han restringido la provisión de software informático de alto rendimiento a los usuarios chinos. Las bibliotecas de computación matemática de alto rendimiento promueven el progreso de la investigación científica, pero también restringen la eficiencia de las aplicaciones de ingeniería. A continuación, se utilizan varios campos típicos para presentar la importancia de las bibliotecas de computación matemática de alto rendimiento para las aplicaciones.

[Software CFD] Biblioteca de álgebra lineal: se utiliza para resolver ecuaciones, como resolver ecuaciones matriciales y resolver valores propios y vectores propios. Biblioteca de optimización: se utiliza para optimizar la eficiencia y la precisión de los cálculos de simulación CFD. Biblioteca de integración numérica: para la integración numérica de funciones matemáticas, como métodos de diferencias finitas. Biblioteca de generación de números aleatorios: se utiliza para generar números aleatorios, lo cual es necesario en muchas aplicaciones de CFD. Biblioteca de soluciones de ecuaciones diferenciales parciales (PDE): se utiliza para resolver algunas PDE no lineales, como la ecuación de Navier-Stokes y la ecuación de transferencia de calor, etc.

[Software CAE] Modelado y simulación: la biblioteca de cálculo matemático puede proporcionar varios algoritmos de simulación y métodos numéricos, como el método de elementos finitos, el método de diferencias finitas, etc., para modelar y simular fenómenos físicos en los campos de maquinaria, electricidad, mecánica, termodinámica, etc. Diseño óptimo: la biblioteca de cálculo matemático proporciona varios algoritmos de optimización, como el algoritmo genético, el algoritmo de recocido simulado, etc., que se utilizan para diseñar y optimizar el modelo de simulación CAE para obtener un mejor rendimiento y eficiencia. Análisis de datos: la biblioteca de cálculo matemático proporciona una variedad de funciones matemáticas y algoritmos estadísticos para analizar y manipular datos simulados para obtener información y conocimientos útiles. Aprendizaje automático: la biblioteca de computación matemática también proporciona algoritmos y herramientas para el aprendizaje automático y la extracción de datos.Estas técnicas se pueden utilizar para optimizar los modelos de simulación CAE e identificar patrones y anomalías en los datos simulados, lo que ayuda a los ingenieros a comprender mejor y mejorar los diseños.

[Ingeniería microelectrónica] La litografía computacional es un proceso que produce patrones de alta resolución a través del control de la computadora. Se usa una máquina de litografía para irradiar la salida de una rejilla de interferencia externa (como un láser de diodo) sobre silicio a través de elementos ópticos como lentes. la superficie de la oblea, luego tienen lugar reacciones químicas y físicas para crear los microcircuitos del chip microelectrónico. Las bibliotecas de cálculo matemático juegan un papel importante.

  1. Construcción de modelos: la litografía computacional implica conocimientos en múltiples campos, como la óptica, la física y la química, y requiere el uso de modelos matemáticos para resolver problemas numéricamente. La biblioteca de cálculo matemático puede proporcionar varios algoritmos de cálculo numérico y técnicas de cálculo rápido, como el método de diferencias finitas, el método de elementos finitos, etc., para establecer modelos de cálculo fiables.
  2. Cálculo de simulación: la biblioteca de cálculo matemático puede manejar una gran cantidad de datos y tareas de cálculo complejas, y puede simular y calcular todo el proceso de litografía en poco tiempo, para predecir y optimizar cada enlace del proceso de litografía.
  3. Diseño óptimo: los problemas involucrados en la litografía computacional son muy complejos y es necesario optimizar el diseño para mejorar la eficiencia de fabricación y la calidad del chip. La biblioteca de cálculo matemático puede proporcionar varios algoritmos de optimización, como el algoritmo genético, el algoritmo de enjambre de partículas, etc., para mejorar la eficiencia y la calidad del chip de la fabricación de litografía.

[Campo EDA] En la simulación de circuitos, Sparse LU Factorize (factorización de LU dispersa) representa el 70 % del tiempo de simulación, y la optimización de los cálculos de matriz a pequeña escala puede mejorar la eficiencia computacional.

[Campo AI] Tomando el razonamiento DNN de reconocimiento de voz como ejemplo, el proceso de razonamiento llama a GEMM contabilizando más del 80%. A través de la optimización de la parte GEMM de OpenBLAS, se utilizan SIMD y concurrencia multinúcleo, y el rendimiento informático aumenta en más del 26 %.

Biblioteca de computación matemática doméstica de alto rendimiento PerfMPL

Zhang Xianyi (Ph.D., Academia de Ciencias de China) inició el proyecto de código abierto OpenBLAS en 2011. OpenBLAS es una biblioteca BLAS optimizada ( http://www.openblas.net ), que se usa ampliamente en computación científica, análisis de datos , algoritmos de aprendizaje profundo, inteligencia artificial y otros campos, está integrado por proyectos conocidos como Caffe, MXNet, Julia, Ubuntu, Debian, openSUSE, GNU Octave; OpenBLAS también se utiliza como uno de los software básicos de varios sistemas de procesador equipos de desarrollo

PerfMPL se basa en OpenBLAS. Después de años de desarrollo, ha cubierto gradualmente FFT (Fast Fourier Transform), SPARSE (Sparse Matrix Computing Library), MATH (Basic Math Library), VML (Vector Math Library), DNN (Deep Neural Networks deep red neuronal), PerfIPP (procesamiento de imágenes, etc.) y otras bibliotecas informáticas.

PerfMPL se basa en la acumulación de tecnología de biblioteca de funciones matemáticas unificadas con derechos de propiedad intelectual independientes de Pengfeng Technology. A través de optimización, mejora y adaptación específicas, ha desarrollado dos versiones de rama:

  1. PerfMPL para potencia informática general, principalmente para conjuntos de instrucciones de CPU. Concéntrese en admitir plataformas de procesador de uso general de alto rendimiento x86, ARM y RISC-V.
  2. PerfMPL para potencia informática dedicada, principalmente para GPU, NPU, ASIC, FPGA y varios DSA.

El código fuente de desarrollo propio también permite a Pengfeng Technology proporcionar servicios de computación acelerados y bibliotecas de computación matemática de dominio para campos específicos, y se enfoca en admitir CAE, EDA, procesamiento de señales, litografía computacional y otros campos domésticos.

El sistema teórico de computación acelerada por software de Pengfeng Technology es: guía de modelos, soporte de algoritmos, soporte de optimización, el rendimiento es el rey, específicamente para PerfMPL:

Las principales estrategias de optimización de PerfMPL son las siguientes

  • Técnicas de construcción de modelos de optimización basada en el rendimiento
  • Nuevo diseño de algoritmo paralelo para arquitectura compleja
  • Tecnología de generación automática de código ensamblador de alto rendimiento basada en plantillas
  • Tecnología de optimización del rendimiento adaptativo con conocimiento de la escena y la aplicación

conclusión

En general, la biblioteca matemática de alto rendimiento ha experimentado múltiples etapas de desarrollo y evolución, y con la mejora continua de la tecnología de hardware de computadora, la función y la eficiencia de la biblioteca matemática también mejoran constantemente. Desde la biblioteca inicial de funciones matemáticas básicas hasta la biblioteca de cálculos numéricos actual capaz de realizar cálculos científicos complejos, el desarrollo de bibliotecas matemáticas de alto rendimiento proporciona un sólido soporte para aplicaciones de ingeniería y computación científica.

En el futuro, podemos esperar el nacimiento de bibliotecas matemáticas más eficientes e inteligentes, que proporcionarán mejores herramientas y apoyo para resolver problemas más complejos. Además, el desarrollo de una biblioteca matemática de alto rendimiento también juega un papel importante en la política estratégica nacional independiente y controlable.

En el contexto actual de competencia cada vez más feroz en la innovación científica y tecnológica mundial, la investigación y el desarrollo independientes y el dominio de las bibliotecas matemáticas de alto rendimiento tienen una gran importancia estratégica para garantizar la seguridad de la información nacional, mejorar la capacidad de control independiente de las tecnologías clave y promover la economía. desarrollo. Creemos que con los esfuerzos conjuntos del gobierno y las empresas, el desarrollo de bibliotecas matemáticas de alto rendimiento alcanzará un nuevo nivel con el apoyo de estrategias nacionales independientes y controlables.

Anexo 1:

Supongo que te gusta

Origin www.oschina.net/news/241396
Recomendado
Clasificación