Estrategias básicas para algoritmos paralelos en procesamiento paralelo
Los algoritmos utilizados en la tecnología de procesamiento paralelo siguen principalmente tres estrategias:
1. Método de dividir y conquistar: es decir, descomponer múltiples tareas en múltiples procesadores o múltiples computadoras y luego resolverlas de acuerdo con una determinada topología.
2. Método de reordenamiento: utilizando grados de palabras de instrucción estáticas o dinámicas respectivamente.
3. Combinación de paralelismo explícito/implícito: explícito significa que los lenguajes paralelos se compilan para formar programas paralelos, e implícito significa que los lenguajes seriales se compilan para formar programas paralelos. La clave para la combinación de paralelismo explícito/implícito radica en la compilación paralela. Y la compilación paralela implica el paralelismo de declaraciones, segmentos de programa, procesos y programas en todos los niveles.
2. Definición de descripción del paralelismo
Hay tres opciones principales al utilizar el lenguaje informático para describir el paralelismo:
1. Plan de expansión del idioma: es decir, utilizar funciones de biblioteca en varios idiomas para expandir las funciones de paralelismo.
2. Método guiado por compilación: también llamado compilación inteligente, es la encarnación de la estrategia paralela implícita. Utiliza principalmente el sistema de compilación paralela para realizar la representación del programa, el análisis del flujo de control, el análisis de correlación, el análisis de optimización y la división de paralelización. el análisis de correlación se obtiene mediante el análisis de optimización y el plan de gestión de la base de conocimientos, y la reconstrucción del programa se obtiene mediante división paralela, formando así un programa paralelo.
3. Nuevo método de estructura del lenguaje: esta es la encarnación de una estrategia paralela explícita. Eso es para establecer un nuevo sistema de lenguaje paralelo, y este lenguaje paralelo puede formar directamente programas paralelos mediante la compilación.
3. Software paralelo
El software paralelo se puede dividir en dos categorías: software de sistema paralelo y software de aplicación paralelo. El software de sistema paralelo se refiere principalmente a sistemas de compilación paralelos y sistemas operativos paralelos. El software de aplicación paralela se refiere principalmente a sistemas de compilación paralelos y sistemas operativos paralelos. Se refiere a varias herramientas de software y paquetes de aplicaciones. El paralelismo de programas involucrados en el software se refiere principalmente a la correlación de programas y la interconexión de redes.
1. Dependencias del programa: las dependencias del programa se dividen principalmente en tres categorías: relacionadas con datos, relacionadas con el control y relacionadas con recursos.
La correlación de datos describe la relación ordenada entre declaraciones, que incluye principalmente correlación de flujo, anticorrelación, correlación de salida, correlación de E/S y correlación de búsqueda de conocimiento, etc. Esta relación se puede pasar antes de ejecutar el programa. El procedimiento de análisis ha finalizado. La correlación de datos es una relación de orden parcial y no todos los miembros de un par de declaraciones en el programa están relacionados. Al analizar la correlación de datos del programa, algunas instrucciones no correlacionadas del programa se pueden ejecutar en paralelo para mejorar la velocidad de ejecución del programa.
La dependencia del control se refiere a la situación en la que el orden de ejecución de las declaraciones no se puede determinar antes de ejecutarlas. Generalmente es causado por instrucciones de transferencia, y la relevancia de la declaración solo se puede juzgar cuando el programa ejecuta una determinada declaración. Las dependencias de control a menudo detienen el paralelismo que se está desarrollando. Para desarrollar más paralelismo, se deben utilizar técnicas de compilación para superar las dependencias de control.
Relacionado con recursos no tiene nada que ver con el trabajo realizado por el sistema, pero está relacionado con conflictos que ocurren cuando eventos paralelos utilizan recursos compartidos como componentes enteros, componentes de punto flotante, registros y áreas de almacenamiento. . El paralelismo del software está determinado principalmente por la correlación de control y la correlación de datos del programa. En el desarrollo paralelo, el programa a menudo se divide en muchos segmentos de programa: partículas. El tamaño de las partículas también se llama granularidad, es una medida de la cantidad de cálculos involucrados en un proceso de software y generalmente se describe como fino, medio o grueso. Cuanto más fina sea la granularidad de la división, menor será el retraso de comunicación entre los subsistemas y mayor será el paralelismo, pero mayor será la sobrecarga del sistema. Por lo tanto, debemos elegir la granularidad adecuada al optimizar la combinación de programas y colocar el retraso de comunicación en el segmento del programa tanto como sea posible. También podemos mejorar el paralelismo del programa mediante la adaptación y optimización de la compilación de software y hardware.
2. Interconexión de red: una red que puede utilizar topologías estáticas o dinámicas para interconectar subsistemas informáticos o para construir multiprocesadores o computadoras. Las redes estáticas están conectadas directamente de un punto a otro. Este método de conexión no cambiará durante la ejecución del programa. A menudo se utiliza para lograr conexiones fijas entre subsistemas de sistemas centralizados o entre múltiples nodos informáticos de sistemas distribuidos. Las redes dinámicas se implementan mediante canales de conmutación, que cambian dinámicamente la estructura para adaptarse a los requisitos de comunicación en el programa de usuario. Las redes dinámicas incluyen buses, conmutadores de barra transversal y redes multinivel, que a menudo se utilizan en multiprocesadores de memoria compartida. La entrega de mensajes en la red se logra principalmente mediante la búsqueda de rutas. Los métodos de enrutamiento comunes incluyen el enrutamiento de almacenamiento y reenvío y el enrutamiento erosionado por insectos.
En una red de almacenamiento y reenvío, los paquetes de longitud fija se utilizan como unidad básica de flujo de información. Cada nodo tiene un búfer de paquetes. Los paquetes pasan desde el nodo de origen al nodo de destino a través de una serie de nodos intermedios. La latencia de una red de almacenamiento y reenvío es proporcional a la distancia (número de segmentos) entre el origen y el destino. En los nuevos sistemas informáticos, el enrutamiento erosionado por insectos se utiliza para dividir aún más el paquete en algunos segmentos de longitud fija, y hay un búfer de segmento en el buscador de ruta de hardware conectado al nodo. Los mensajes se transmiten desde el nodo de origen al de destino a través de una serie de buscadores de ruta. Todas las partes del mismo paquete se transmiten secuencialmente en forma de canalización. Se pueden transmitir diferentes paquetes alternativamente, pero partes de diferentes paquetes no pueden cruzarse para evitar que se envíen al destino equivocado. La latencia del enrutamiento de los insectos es casi independiente de la distancia entre el origen y el destino. El problema de punto muerto generado en la búsqueda de rutas se puede resolver mediante canales virtuales. Un canal virtual es un enlace lógico entre dos nodos. Consiste en el búfer de corte del nodo de origen, el canal físico entre los nodos y el búfer de corte del nodo receptor. El canal físico es compartido por todos los canales virtuales en forma de tiempo compartido. Aunque los canales virtuales pueden evitar interbloqueos, pueden reducir el ancho de banda efectivo del canal disponible para cada solicitud. Por lo tanto, al determinar la cantidad de canales virtuales, se debe considerar un equilibrio entre el rendimiento de la red y el retraso de la comunicación.
4. Tecnología de hardware En términos de tecnología de hardware, el paralelismo se logra principalmente desde tres aspectos: procesador, memoria y canalización.
1. Procesadores: las principales familias de procesadores incluyen procesadores CISC, RISC, superescalares, VL1W, superpipeline, vectoriales y simbólicos.
Los procesadores tradicionales pertenecen a la estructura de Computación de Sistemas de Instrucción Compleja (CISC). El sistema de instrucciones es grande, el formato de instrucción es variable y la cantidad de registros de uso general es pequeña. Básicamente utiliza un caché de datos e instrucciones unificado, con una frecuencia de reloj baja y un CPI alto. La mayoría usa ROM para implementar el control de microcódigo. El formato de instrucción del procesador de Computación del sistema de instrucción reducido (RISC) actual de la CPU es simple y estandarizado, orientado al archivo de registro, utilizando tecnología de ventana de registro superpuesta, con caché multinivel, múltiples estructuras de canalización, enfatizando la tecnología de optimización de compilación y una frecuencia de reloj rápida. , IPC bajo y la mayoría usa hardware cableado para controlar la CPU.
Tanto los procesadores escalares CISC como RISC pueden utilizar estructuras superescalares o vectoriales para mejorar el rendimiento. Los procesadores escalares emiten solo una instrucción por ciclo y requieren que el ciclo complete solo una instrucción de la canalización. En un procesador superescalar, se utiliza una canalización de múltiples instrucciones, y se emiten múltiples instrucciones y se generan múltiples resultados en cada ciclo. Debido a que se espera mucho paralelismo a nivel de instrucción en el programa, los procesadores superescalares dependen más de la optimización de los compiladores para explotar el paralelismo.
La arquitectura VL1W resulta de la combinación de dos conceptos comúnmente adoptados, microcodificación horizontal y procesamiento superescalar. Una palabra de instrucción típica de máquina VL1W muy larga tiene una longitud de cientos de bits. En el procesador VL1W, varios componentes funcionales funcionan simultáneamente. Todos los componentes funcionales disfrutan del uso de un archivo de registro grande común. Varias operaciones realizadas por componentes funcionales al mismo tiempo se sincronizan mediante instrucciones VL1W. Las instrucciones VL1W son más fáciles de decodificar que las instrucciones superescalares, pero siempre se requieren diferentes conjuntos de instrucciones al desarrollar diferentes cantidades de paralelismo. VL1W desarrolla principalmente paralelismo entre operaciones escalares. Su éxito depende en gran medida de la eficiencia de la compresión del código. Su estructura es completamente incompatible con cualquier procesador tradicional de propósito general. Incluso es poco probable que diferentes implementaciones de la misma estructura sean compatibles binariamente entre sí. La principal ventaja de VL1W es que su estructura de hardware y su sistema de instrucciones son simples, lo que puede desempeñar un buen papel en aplicaciones científicas, pero puede no ser muy útil en aplicaciones generales.
Un procesador vectorial ejecuta instrucciones vectoriales en una matriz, y cada instrucción contiene una secuencia de operaciones repetidas. Es un coprocesador especialmente diseñado para completar operaciones vectoriales y generalmente se usa en supercomputadoras multicanal. Un procesador vectorial puede aprovechar el paralelismo obtenido mediante el desenrollado a nivel de bucle y puede conectarse a cualquier procesador escalar. Una canalización vectorial dedicada puede eliminar parte de la sobrecarga de software en el control de bucle, y su efecto está estrechamente relacionado con el rendimiento del compilador de optimización al vectorizar código secuencial. Teóricamente una máquina vectorial puede tener el mismo rendimiento que un procesador superescalar, por lo que se puede decir que el paralelismo de una máquina vectorial es el mismo que el de una máquina superescalar.
Los procesadores de símbolos se desarrollan para aplicaciones de IA y se han utilizado en muchos campos de aplicación, como la demostración de teoremas, el reconocimiento de patrones, los sistemas expertos, la ingeniería del conocimiento, la recuperación de textos, la ciencia y la inteligencia artificial.
En estas aplicaciones, las expresiones de datos y conocimientos, las operaciones primitivas, las características algorítmicas, la memoria, las E/S y las comunicaciones, y las características estructurales especializadas son distintas de la computación numérica. Los procesadores simbólicos también se denominan procesadores de lenguaje de programación lógica, procesador de lenguaje de procesamiento de tablas o simbólicos. transformador. El procesamiento simbólico no se ocupa de datos numéricos, sino de problemas como programas lógicos, tablas de símbolos, objetos, guiones, pizarras, sistemas de producción, redes semánticas, marcos y redes neuronales artificiales. Estas operaciones requieren conjuntos de instrucciones especializados y generalmente no utilizan operaciones de punto flotante.
2. Memoria: Los dispositivos de almacenamiento se pueden dividir en cinco niveles de menor a mayor según la capacidad y el tiempo de acceso: registros, cachés, memoria principal, dispositivos de disco y unidades de cinta. En comparación con los dispositivos de almacenamiento de nivel superior, los dispositivos de almacenamiento de nivel inferior tienen velocidades de acceso más rápidas, capacidades más pequeñas, mayor costo por byte, ancho de banda más amplio y unidades de transmisión más pequeñas.
La información almacenada en la jerarquía de la memoria satisface tres propiedades importantes: contención, coherencia y localidad. La llamada inclusividad significa que se pueden encontrar copias de una palabra de información en todas las capas superiores a ella, y si una información se pierde en una capa superior, esta información también se perderá en todas las capas inferiores. La transferencia de información entre la CPU y la memoria caché se realiza mediante palabras. Los bloques se utilizan como unidad básica de transferencia de datos entre la memoria caché y la memoria principal. La información se transfiere entre la memoria principal y el disco en páginas. y la unidad de cinta se maneja a nivel de archivo. La llamada coherencia requiere que el mismo elemento de información sea coherente con copias posteriores en el nivel de memoria. Es decir, si se modifica una palabra en la caché, las copias de esa palabra en todas las capas superiores también deben modificarse inmediatamente o al final. Para minimizar el tiempo de acceso efectivo a la jerarquía de la memoria, la información de uso frecuente suele colocarse en niveles inferiores. Generalmente existen dos estrategias para mantener la coherencia de la jerarquía de la memoria. Una es la estrategia de escritura directa, es decir, si la misma modificación se realiza inmediatamente en todas las memorias de alto nivel. las capas inferiores Después de modificar la información, la modificación correspondiente no se realiza en la memoria de alto nivel inmediatamente, sino que se realiza la misma modificación en todas las memorias de alto nivel hasta que la información sea reemplazada o desaparezca de la capa inferior. Incluso es posible combinar las ventajas de las estrategias de escritura directa y reescritura para formar un protocolo de escritura única para mantener la coherencia de la memoria.
La jerarquía de memoria se desarrolla basándose en el comportamiento de un programa: la localidad de acceso. Hay principalmente localidad temporal, localidad espacial y localidad secuencial. Localidad temporal significa que es probable que se vuelva a acceder a un elemento al que se accedió recientemente en un futuro próximo. Tiende a provocar un acceso concentrado a zonas recientemente utilizadas. La localidad espacial representa una tendencia de que los elementos a los que accede un proceso tengan direcciones cercanas entre sí. Localidad secuencial significa que en un programa típico, las instrucciones generalmente se ejecutan secuencialmente a menos que sean instrucciones de transferencia.
La memoria compartida se utiliza generalmente en sistemas multiprocesador. La organización de la memoria compartida generalmente utiliza tres métodos: entrelazado de bajo orden, entrelazado de alto orden y entrelazado alto-bajo. El entrelazado de bits bajos también se denomina acceso concurrente. Coloca direcciones adyacentes en módulos de memoria adyacentes. Es menos probable que cause conflictos durante el acceso y tiene mejor paralelismo, pero poca confiabilidad, tolerancia a fallas y escalabilidad. El entrelazado de bits altos también se denomina acceso simultáneo. Asigna direcciones adyacentes al mismo módulo de memoria. Tiene una gran confiabilidad, tolerancia a fallas y escalabilidad, pero es propenso a conflictos durante el acceso, tiene un ancho de banda estrecho y un paralelismo deficiente. El acceso de entrelazado alto-bajo, también conocido como acceso C-s, combina las ventajas de los métodos de entrelazado de bits altos y de bits bajos. No solo resuelve el problema de conflicto, sino que también mejora efectivamente la tolerancia a fallas y el paralelismo. procesamiento de la estructura de la máquina.
3. Tubería: la tecnología de tubería incluye principalmente dos tipos: tecnología de tubería de instrucción y tecnología de tubería de operación.
El objetivo principal de la tecnología de canalización de instrucciones es mejorar la eficiencia operativa y la tasa de rendimiento de la computadora. Esto se logra principalmente configurando el búfer de instrucciones de captación previa, configurando componentes multifunción, realizando orientación de datos interna y adoptando estrategias de programación de instrucciones adecuadas. Hay dos estrategias principales de programación de instrucciones: estática y dinámica. El léxico estático se basa en software y lo completa principalmente el compilador. El léxico dinámico se basa en hardware y se realiza principalmente a través de tecnología de hardware.
Hay dos tipos principales de canalizaciones informáticas: canalizaciones de función única y canalizaciones multifunción. Entre ellos, las canalizaciones multifuncionales se pueden dividir en canalizaciones estáticas y canalizaciones dinámicas.
La tecnología de canalización estática solo se utiliza para lograr ciertas funciones, mientras que las canalizaciones dinámicas se pueden recombinar en diferentes momentos para lograr diferentes funciones. Además de agilizar las conexiones, también permite conexiones de avance y retroalimentación, por lo que también se denomina canalización no lineal. Estas conexiones de retroalimentación y retroalimentación hacen que sea muy difícil secuenciar eventos sucesivos en el proceso. Debido a estas conexiones, la tubería no necesariamente sale de la última etapa. Dependiendo de los patrones de flujo de datos, las personas pueden usar la misma canalización para obtener los valores de diferentes funciones.
Una breve introducción al desarrollo de las computadoras paralelas
El desarrollo de las computadoras modernas a partir de la década de 1940 se puede dividir en dos eras de desarrollo obvias: la era de la computación en serie y la era de la computación paralela. . Cada era de la informática comienza con el desarrollo de la arquitectura, continúa con el desarrollo del software del sistema (especialmente compiladores y sistemas operativos), software de aplicación y finalmente culmina con el desarrollo de entornos de resolución de problemas. La razón principal para crear y utilizar computadoras paralelas es que son una de las mejores formas de resolver el cuello de botella de velocidad de un solo procesador.
Una computadora paralela está compuesta por un grupo de unidades de procesamiento que se comunican y colaboran entre sí para completar una tarea informática a gran escala a una velocidad más rápida. Por tanto, los dos componentes más importantes de una computadora paralela son los nodos informáticos y los mecanismos de comunicación y colaboración entre nodos. El desarrollo de la arquitectura informática paralela también se refleja principalmente en la mejora del rendimiento de los nodos informáticos y la mejora de la tecnología de comunicación entre nodos.
A principios de la década de 1960, con la llegada de los transistores y la memoria de núcleo magnético, las unidades de procesamiento se hicieron cada vez más pequeñas, y la memoria se hizo más pequeña y más barata. El desarrollo de estas tecnologías condujo a la aparición de ordenadores paralelos. Los ordenadores paralelos durante este período eran en su mayoría sistemas multiprocesadores de pequeña escala con almacenamiento compartido, los llamados mainframe. IBM360 es un representante típico de este período.
A finales de la década de 1960, el mismo procesador comenzó a estar equipado con múltiples unidades funcionales con la misma función y también apareció la tecnología de tuberías. En comparación con simplemente aumentar la frecuencia del reloj, la aplicación de estas funciones paralelas dentro del procesador mejora enormemente el rendimiento de los sistemas informáticos paralelos. En ese momento, la Universidad de Illinois y Burroughs Company comenzaron a implementar el proyecto IlliacIV para desarrollar un sistema host SIMD de 64 CPU, que involucró muchas investigaciones sobre tecnología de hardware, arquitectura, dispositivos de E/S, sistemas operativos, lenguajes de programación y aplicaciones. temas. Sin embargo, cuando finalmente apareció un sistema mucho más pequeño de 16 CPU en 1975, todo el mundo de la informática había cambiado drásticamente.
El primero es la innovación del concepto de sistema de almacenamiento, proponiendo las ideas de almacenamiento virtual y caché. El sistema IBM360/85 y el 360/91 son dos modelos de la misma serie. El 360/91 tiene una frecuencia principal más alta que el 360/85, la memoria seleccionada también es más rápida y, sin embargo, utiliza un canal de instrucciones programado dinámicamente; El rendimiento general de 360/85 es mayor que el de 360/91. La única razón es que el primero utiliza tecnología de almacenamiento en caché, mientras que el segundo no.
En segundo lugar, la memoria semiconductora comenzó a sustituir a la memoria de núcleo magnético. Inicialmente, la memoria semiconductora solo se usaba como caché en algunas máquinas, pero la CDC7600 fue la primera en adoptar por completo esta memoria semiconductora más pequeña, más rápida y directamente direccionable que desde entonces ha desaparecido del escenario de la historia. Al mismo tiempo, también aparecieron los circuitos integrados, que rápidamente se utilizaron en las computadoras. Estos dos avances revolucionarios en la tecnología de componentes han eclipsado en gran medida las diversas mejoras propuestas por los diseñadores de IlliacIV en términos de hardware subyacente y arquitectura paralela.
Después de la llegada de CRAY-1 en 1976, las computadoras vectoriales controlaron firmemente todo el mercado de computadoras de alto rendimiento durante 15 años. CRAY-1 diseñó cuidadosamente los circuitos lógicos utilizados, adoptó un conjunto de instrucciones reducido que ahora llamamos RISC e introdujo registros vectoriales para completar operaciones vectoriales. El uso de esta serie de nuevos medios técnicos ha permitido que la frecuencia principal de CRAY-1 alcance los 80MHz.
A medida que la longitud de la palabra de la máquina aumenta de 4 bits, 8 bits, 16 bits a 32 bits, el rendimiento de los microprocesadores también aumenta significativamente.
Fue precisamente al ver el potencial de los microprocesadores que la Universidad Carnegie Mellon comenzó a desarrollar con éxito un procesador 16 PDP11/40 basado en el entonces popular miniordenador DECPDP11 a través de un interruptor de barra transversal y 16* Se forma el sistema multiprocesador de almacenamiento compartido C.mmp. conectando los módulos de memoria compartida.
Desde la década de 1980, la tecnología de los microprocesadores ha ido avanzando a gran velocidad. Más tarde, apareció un protocolo de bus que era muy adecuado para el método SMP, y la Universidad de California en Berkeley amplió el protocolo de bus y propuso una solución al problema de coherencia de la caché. Desde entonces, el camino hacia los multiprocesadores de almacenamiento exclusivos iniciado por C.mmp se ha vuelto cada vez más amplio; esta arquitectura básicamente ha dominado los mercados de servidores y estaciones de trabajo de escritorio;
Al mismo tiempo, también comenzaron a surgir ordenadores paralelos basados en mecanismos de paso de mensajes. A mediados de la década de 1980, Caltech conectó con éxito 64 procesadores i8086/i8087 a través de una estructura de interconexión de hipercubo. Desde entonces, han ido apareciendo sucesivamente ordenadores paralelos basados en el mecanismo de paso de mensajes, como la serie Intel iPSC, la serie INMOS Transputer, Intel Paragon y Vulcan, el predecesor del IBM SP.
Desde finales de los 80 hasta principios de los 90, las computadoras paralelas a gran escala basadas en memoria compartida lograron un nuevo desarrollo. IBM conectó una gran cantidad de los primeros microprocesadores RISC a través de una red de interconexión de mariposa. La gente comenzó a considerar cómo lograr un cierto grado de escalabilidad (Escalabilidad) en el sistema y al mismo tiempo lograr la coherencia de la memoria caché compartida. A principios de la década de 1990, la Universidad de Stanford propuso el plan DASH, que logra la coherencia de la caché en la memoria compartida distribuida manteniendo una estructura de directorios que contiene la información de ubicación de cada bloque de caché. Posteriormente, IEEE propuso un estándar para protocolos de coherencia de caché basado en esto.
Desde la década de 1990, varias arquitecturas importantes han comenzado a converger. CM-5, que pertenece al tipo de datos paralelos, además de utilizar una gran cantidad de microprocesadores comerciales, también permite que los programas a nivel de usuario transmitan algunos mensajes simples; CRAY T3D es una computadora paralela de almacenamiento compartido con estructura NUMA, pero también. proporciona un mecanismo de sincronización global, un mecanismo de cola de mensajes y adopta algunas tecnologías para reducir los retrasos en la entrega de mensajes.
Con el desarrollo de microprocesadores comerciales y equipos de red, así como el lanzamiento de estándares de programación paralela como MPI/PVM, han surgido computadoras paralelas con arquitectura de clúster. El sistema de clúster de la serie IBM SP2 es un representante típico. En estos sistemas, cada nodo utiliza computadoras comerciales estándar y están conectados a través de redes de alta velocidad.
Hoy en día, cada vez más sistemas informáticos paralelos utilizan microprocesadores comerciales y estructuras de redes de interconexión comerciales. Este sistema informático paralelo de almacenamiento distribuido se denomina clúster. Casi todos los fabricantes de computadoras de alto rendimiento en China producen computadoras de alto rendimiento con una relación de precio y rendimiento extremadamente alta. Las computadoras paralelas han entrado en una nueva era y la aplicación de la computación paralela ha alcanzado una amplitud y profundidad sin precedentes.
Con el desarrollo de los chips de microprocesamiento, los ordenadores paralelos han entrado en una nueva era. En la actualidad, el rendimiento de las computadoras paralelas ha superado los 20 PFLOPS y se está desarrollando hacia la exaescala. Nuestro país ha estado a la vanguardia mundial en el desarrollo de computadoras paralelas. El Shenteng 6800 producido por Lenovo en 2003 ocupó el puesto 14 en el ranking TOP500 del mundo en noviembre de 2003, y el Sugon 4000A producido por Sugon en 2004 ocupó el décimo lugar en el ranking TOP500 del mundo en junio de 2004. Es la primera vez que mi país lanza públicamente un alto Las computadoras de alto rendimiento han entrado entre los diez primeros en el TOP500 del mundo. Esto indica que mi país ha alcanzado el nivel avanzado internacional en el desarrollo y producción de sistemas informáticos paralelos y ha sentado una base material para mejorar el nivel de investigación científica de mi país. En la última clasificación de las 500 mejores supercomputadoras del mundo publicada por la Conferencia Internacional de Supercomputadoras en 2013, el sistema de supercomputadora Tianhe-2 desarrollado por la Universidad de Tecnología de Defensa tiene una velocidad de computación máxima de 5,49 petaflops por segundo y una velocidad de computación sostenida de 339 petaflops. El excelente rendimiento en operaciones de punto flotante de precisión encabeza la lista.
A juzgar por el top 10 del TOP500, Estados Unidos sigue siendo el mayor propietario de supercomputadoras. Según los datos estadísticos del TOP500 del mundo, Estados Unidos representa casi la mitad de la potencia informática del mundo y posee más del 50% de todas las computadoras del TOP500.