Saltar al contenido principal
Library homepage
 
LibreTexts Español

2.5: Programación de sistemas multiprocesador

  • Page ID
    154347
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Introducción

    Esta sección introduce al alumno a la programación multiprocesador. En esto la carga de trabajo llamada tareas se puede repartir entre procesadores y así ser ejecutada mucho más rápido.

    Detalles de la actividad

    En informática, la programación multiprocesador es un problema de optimización NP-hard. La declaración del problema es: “Dado un conjunto J de trabajos donde el trabajo ji tiene longitud li y un número de procesadores m, ¿cuál es el tiempo mínimo posible requerido para programar todos los trabajos en J on m procesadores de tal manera que ninguno se superponga?”

    Las aplicaciones de este problema son numerosas, pero, como sugiere el nombre del problema, están más fuertemente asociadas con la programación de tareas computacionales en un entorno multiprocesador.

    Los planificadores multiprocesador tienen que programar tareas que pueden o no depender entre sí. Por ejemplo, tomemos el caso de leer las credenciales de usuario desde la consola, luego usarlas para autenticarse, luego si la autenticación es exitosa mostrar algunos datos en la consola. Claramente una tarea depende de otra. Este es un caso claro de donde existe algún tipo de ordenamiento entre las tareas. De hecho es claro que se puede modelar con orden parcial. Entonces, por definición, el conjunto de tareas constituyen una estructura reticular.

    El problema general de programación multiprocesador es una generalización de la versión de optimización del problema de partición numérica, que considera el caso de particionar un conjunto de números (trabajos) en dos conjuntos iguales (procesadores).

    Gráficos y GPU específicos para cada propósito

    La computación de propósito general en unidades de procesamiento de gráficos (GPGPU, raramente GPGP o GPU) es el uso de una unidad de procesamiento de gráficos (GPU), que normalmente maneja el cálculo solo para gráficos por computadora, para realizar cómputos en aplicaciones tradicionalmente manejadas por la unidad central de procesamiento (CPU). El uso de múltiples tarjetas gráficas en una computadora, o un gran número de chips gráficos, paraleliza aún más la naturaleza ya paralela del procesamiento de gráficos. Además, incluso un único framework GPU-CPU brinda ventajas que múltiples CPU por sí mismas no ofrecen debido a la especialización en cada chip.

    La tubería GPGPU es una especie de procesamiento paralelo entre una o más GPU y CPU que analiza los datos como si estuvieran en imagen u otra forma gráfica. Si bien las GPU generalmente operan a frecuencias más bajas, generalmente tienen muchas veces más núcleos para compensarlo (hasta cientos por lo menos) y pueden, por lo tanto, operar en imágenes y datos gráficos de manera efectiva mucho más rápido, docenas o incluso cientos de veces más rápido que una CPU tradicional, migrando datos a forma gráfica y luego usar la GPU para “mirarla” y analizarla puede resultar en una aceleración profunda. La tubería GPGPU es una especie de procesamiento paralelo entre una o más GPU y CPU que analiza los datos como si estuvieran en imagen u otra forma gráfica. Si bien las GPU generalmente operan a frecuencias más bajas, generalmente tienen muchas veces más núcleos para compensarlo (hasta cientos por lo menos) y pueden, por lo tanto, operar en imágenes y datos gráficos de manera efectiva mucho más rápido, docenas o incluso cientos de veces más rápido que una CPU tradicional, migrando datos a forma gráfica y luego usar la GPU para “mirarla” y analizarla puede resultar en una aceleración profunda.

    Lógica reconfigurable y procesadores específicos de propósito

    La computación reconfigurable es una arquitectura de computadora que combina parte de la flexibilidad del software con el alto rendimiento del hardware al procesar con telas de computación de alta velocidad muy flexibles como matrices de puertas programables en campo (FPGA). La diferencia principal cuando se compara con el uso de microprocesadores ordinarios es la capacidad de realizar cambios sustanciales en la ruta de datos en sí, además del flujo de control. Por otro lado, la principal diferencia con el hardware personalizado, es decir, los circuitos integrados específicos de la aplicación (ASIC) es la posibilidad de adaptar el hardware durante el tiempo de ejecución “cargando” un nuevo circuito en la estructura reconfigurable.

    El concepto de computación reconfigurable existe desde la década de 1960, cuando el artículo de Gerald Estrin propuso el concepto de una computadora hecha de un procesador estándar y una matriz de hardware “reconfigurable”. El procesador principal controlaría el comportamiento del hardware reconfigurable. Este último se adaptaría entonces para realizar una tarea específica, como el procesamiento de imágenes o la coincidencia de patrones, tan rápido como una pieza de hardware dedicada. Una vez realizada la tarea, el hardware podría ser ajustado para hacer alguna otra tarea. Esto resultó en una estructura de computadora híbrida que combinaba la flexibilidad del software con la velocidad del hardware. Las arquitecturas reconfigurables pueden aportar capacidades únicas a las tareas computacionales. Ofrecen el rendimiento y la eficiencia energética del hardware con la flexibilidad del software.

    Conclusión

    Esta sección introdujo al alumno a la programación multiprocesador aplicada en la arquitectura de la computadora mediante la partición de los trabajos a realizar.

    Evaluación

    1. Describir brevemente la programación multiprocesador

    La programación multiprocesador es un problema de optimización NP-hard. La declaración del problema es: “Dado un conjunto J de trabajos donde el trabajo ji tiene longitud li y un número de procesadores m, ¿cuál es el tiempo mínimo posible requerido para programar todos los trabajos en J on m procesadores de tal manera que ninguno se superponga?” Las aplicaciones de este problema son numerosas, pero, como sugiere el nombre del problema, están más fuertemente asociadas con la programación de tareas computacionales en un entorno multiprocesador.

    Los planificadores multiprocesador tienen que programar tareas que pueden o no depender entre sí. Por ejemplo, tomemos el caso de leer las credenciales de usuario desde la consola, luego usarlas para autenticarse, luego si la autenticación es exitosa mostrar algunos datos en la consola. Claramente una tarea depende de otra. Este es un caso claro de donde existe algún tipo de ordenamiento entre las tareas. De hecho es claro que se puede modelar con orden parcial. Entonces, por definición, el conjunto de tareas constituyen una estructura reticular.

    El problema general de programación multiprocesador es una generalización de la versión de optimización del problema de partición numérica, que considera el caso de particionar un conjunto de números (trabajos) en dos conjuntos iguales (procesadores)


    This page titled 2.5: Programación de sistemas multiprocesador is shared under a CC BY-SA license and was authored, remixed, and/or curated by Harrison Njoroge (African Virtual University) .