INFORMACION DEL PRODUCTO
MAS INFORMACION
  • Boletín de supercomputación CUDA/TeslaBoletín de supercomputación CUDA/Tesla
    En este boletín recibirás información periódica sobre la arquitectura de procesamiento paralelo de propósito general que incorporan las GPUs NVIDIA y la forma en que se utiliza para resolver numerosos problemas computacionales complejos en una mínima parte del tiempo que necesita una CPU. También te enterarás de las últimas novedades sobre la soluciones de alta computación Tesla de NVIDIA y cómo van ampliando su capacidad para abordar algunos de los retos más importantes de la sociedad actual.

  • Herramientas de desarrollo de software

    Programación de CUDA para la GPU

  • Soluciones verticales
  • NVIDIA CUDA
ENLACES RELEVANTES

GPU Computing

 

¿Qué es GPU Computing?

GPU computing, o cálculo en la GPU, es el uso de la GPU (unidad de procesamiento gráfico) para realizar operaciones de cálculo científico o técnico de propósito general.
El modelo empleado para esta tecnología se basa en combinar una CPU y una GPU en un sistema de cómputo heterogéneo. La parte secuencial de la aplicación se ejecuta en la CPU y las partes de mayor carga computacional se procesan en la GPU. Para el usuario, la aplicación simplemente se ejecuta más rápido porque utiliza la gran capacidad de la GPU para multiplicar el rendimiento.

Heterogeneous Computing

El desarrollador de la aplicación tiene que modificar ésta para asignar a la GPU los kernels más complejos desde el punto de vista computacional. El resto de la aplicación permanece en la CPU. Asignar una función a la GPU implica reescribir ésta para aprovechar el paralelismo del procesador gráfico y agregar palabras clave de “C” a fin de transferir los datos entre la GPU y el resto del sistema.

El GPU computing se implementa a través de una arquitectura de cálculo paralelo incluida en las GPUs NVIDIA que se denomina CUDA. Esta arquitectura consta de cientos de núcleos de procesamiento que operan de forma conjunta para manejar los datos de la aplicación a mayor velocidad.

La GPU Tesla Serie 10 se basa en una arquitectura CUDA de segunda generación con funciones optimizadas para aplicaciones científicas, lo que incluye soporte en hardware de la norma IEEE para operaciones en coma flotante de precisión doble, una caché local formada por memoria compartida distribuida por toda la GPU o acceso coalescente a la memoria, entre otras.

"Las GPUs han evolucionado hasta un punto en que muchas de las aplicaciones industriales actuales se ejecutan en ellas con niveles de rendimiento muy superiores a los que ofrecerían si se ejecutasen en sistemas multinúcleo. Las arquitecturas informáticas del futuro serán sistemas híbridos con GPUs compuestas por núcleos de procesamiento paralelo que trabajarán en colaboración con las CPUs multinúcleo".

Prof. Jack Dongarra
Director del Innovative Computing Laboratory
Universidad de Tennessee

Historia de la GPU como procesador de cálculo

Los chips de gráficos empezaron siendo canales de procesamiento de gráficos con funciones fijas. Con el paso de los años, estos chips se fueron haciendo más programables, lo que permitió a NVIDIA introducir la primera GPU o unidad de procesamiento gráfico del mercado. Entre los años 1999 y 2000, científicos e investigadores de disciplinas como el diagnóstico por imagen o el electromagnetismo empezaron a usar las GPUs para ejecutar aplicaciones de cálculo de propósito general y descubrieron que el enorme rendimiento de la GPU en operaciones de coma flotante producía un extraordinario aumento de la velocidad de ejecución en una gran variedad de aplicaciones científicas. Fue el nacimiento de un nuevo concepto denominado GPGPU o GPU de propósito general.

El problema era que este tipo de procesador tenía que programarse utilizando lenguajes de programación de gráficos como OpenGL y Cg. Los desarrolladores tenían que dar a sus aplicaciones científicas la apariencia de aplicaciones gráficas transformándolas en problemas que dibujasen triángulos y polígonos. Esto limitaba la posibilidad de aprovechar el tremendo rendimiento de las GPUs para usos científicos.

En NVIDIA se dieron cuenta de las ventajas que supondría poner todo este rendimiento al alcance de la comunidad científica y decidieron invertir en modificar la GPU a fin de hacerla totalmente programable para aplicaciones científicas y añadir soporte para lenguajes de alto nivel como C y C++. El resultado fue la arquitectura CUDA para la GPU.

Arquitectura paralela y modelo de programación de CUDA

La arquitectura paralela del hardware de CUDA va acompañada de un modelo de programación compuesto por un conjunto de abstracciones que permiten implementar el paralelismo en el procesamiento de tareas y procesos con diferentes niveles de granularidad. El programador puede expresar ese paralelismo mediante diferentes lenguajes de alto nivel como C, C++ y Fortran, o mediante APIs como OpenCL™ y DirectX™-11 Compute.

GPU-ComputingOvrw.png

El primer lenguaje para el que NVIDIA proporcionó soporte fue C. Existe un conjunto de herramientas de desarrollo de software en C para CUDA que permiten programar la GPU utilizando C con una cantidad mínima de palabras clave o extensiones. El soporte para Fortran, OpenCL y otros lenguajes se introducirá en breve.

El modelo de programación paralela de CUDA ayuda a los programadores a dividir el problema en múltiples subproblemas que pueden resolverse de forma independiente y concurrente. A estos subproblemas se les aplica un ulterior nivel de granularidad, de forma que cada uno de ellos puede resolverse de forma cooperativa mediante múltiples instrucciones ejecutadas también en paralelo.

En la actualidad, la arquitectura CUDA de la GPU y su correspondiente modelo de cálculo paralelo se utilizan en más de 100 aplicaciones y cerca de 1000 artículos de investigación. En la zona CUDA pueden verse muchos de estos documentos y aplicaciones.

OpenCL es una marca comercial de Apple Inc. utilizada mediante la licencia cedida a Khronos Group Inc.
DirectX es una marca registrada de Microsoft Corporation.