Historia e implementaciones de la Computación de propósito general en unidades de procesamiento de gráficos. Vamos a continuar el discurso empezado en nuestro anterior post titulado Qué es la Computación GPU, definición, concepto.En principio, cualquier función booleana arbitraria, incluidas las de suma, multiplicación y otras funciones matemáticas, se puede construir a partir de un conjunto funcionalmente completo de operadores lógicos. En 1987, el juego de la vida de Conway se convirtió en uno de los primeros ejemplos de computación de propósito general que utiliza un procesador de flujo temprano llamado blitter para invocar una secuencia especial de operaciones lógicas en vectores de bits.
La computación de propósito general en las GPU se hizo más práctica y popular después de aproximadamente 2001, con la llegada de los sombreadores programables y el soporte de punto flotante en los procesadores gráficos. En particular, los problemas que involucran matrices y/o vectores, especialmente los vectores de dos, tres o cuatro dimensiones, fueron fáciles de traducir a una GPU, que actúa con velocidad y soporte nativos en esos tipos.
Los experimentos de la comunidad de computación científica con el nuevo hardware comenzaron con una rutina de multiplicación de matrices (2001); Uno de los primeros programas científicos comunes que se ejecutaron más rápido en las GPU que las CPU fue una implementación de factorización LU (2005).
Estos primeros esfuerzos para usar GPU como procesadores de propósito general requirieron reformular los problemas computacionales en términos de primitivas de gráficos, como lo soportan las dos API principales para procesadores de gráficos, OpenGL y DirectX. Esta engorrosa traducción se obvió con la llegada de los lenguajes de programación de propósito general y las API como Sh / RapidMind, Brook y Accelerator.
Estos fueron seguidos por el CUDA de Nvidia, que permitió a los programadores ignorar los conceptos gráficos subyacentes a favor de los conceptos más comunes de computación de alto rendimiento. Las ofertas más nuevas e independientes del proveedor de hardware incluyen DirectCompute de Microsoft y OpenCL de Apple / Khronos Group. Esto significa que las tuberías modernas de GPGPU pueden aprovechar la velocidad de una GPU sin requerir la conversión completa y explícita de los datos a una forma gráfica.
Implementaciones
Cualquier idioma que permita que el código que se ejecuta en la CPU para sondear un sombreador de GPU para valores de retorno, puede crear un marco GPGPU.
A partir de 2016, OpenCL es el lenguaje de computación de GPU de uso general dominante y es un estándar abierto definido por el Grupo Khronos. OpenCL proporciona una plataforma GPGPU multiplataforma que, además, admite el cómputo paralelo de datos en las CPU. OpenCL es activamente compatible con las plataformas Intel, AMD, Nvidia y ARM. El Grupo Khronos está actualmente involucrado en el desarrollo de SYCL, que tiene sus implementaciones con ComputeCPP y SYCL STL, la primera desarrollada por Codeplay, y actualmente solo es compatible con los sistemas operativos Linux. La segunda, organizada por Khronos Group en GitHub, y se puede compilar para cualquier sistema operativo moderno.
El marco propietario dominante es Nvidia CUDA. Nvidia lanzó CUDA en 2006, un kit de desarrollo de software (SDK) y una interfaz de programación de aplicaciones (API) que permite usar el lenguaje de programación C para codificar algoritmos para su ejecución en la serie GeForce 8 y las GPU posteriores.
Los estándares de programación para computación paralela incluyen OpenCL (proveedor independiente), OpenACC y OpenHMPP. Mark Harris, el fundador de GPGPU.org, acuñó el término GPGPU.
El Xcelerit SDK, creado por Xcelerit, está diseñado para acelerar grandes bases de códigos C ++ o C # existentes en las GPU con un esfuerzo mínimo. Proporciona un modelo de programación simplificado, automatiza la paralelización, gestiona los dispositivos y la memoria, y compila los binarios de CUDA. Además, las CPU de varios núcleos y otros aceleradores pueden dirigirse desde el mismo código fuente.
OpenVIDIA fue desarrollado en la Universidad de Toronto entre 2003-2005, en colaboración con Nvidia.
Altimesh Hybridizer creado por Altimesh compila Common Intermediate Language to CUDA binaries. Soporta genéricos y funciones virtuales. La depuración y el perfilado se integran en Visual Studio y Nsight. Está disponible como una extensión de Visual Studio en Visual Studio Marketplace.
Microsoft presentó la API de computación GPU DirectCompute, lanzada con la API de DirectX 11.
Alea GPU creada por QuantAlea introduce capacidades de computación nativas de GPU para el lenguaje Microsoft. NET F # y C #. Alea GPU también proporciona un modelo de programación GPU simplificado basado en GPU paralelo-para y agregado agregado usando delegados y administración de memoria automática.
MATLAB admite la aceleración GPGPU utilizando Parallel Computing Toolbox y MATLAB Distributed Computing Server, y paquetes de terceros como Jacket.
El procesamiento GPGPU también se usa para simular la física newtoniana por parte de los motores de física, y las implementaciones comerciales incluyen Havok Physics, FX y PhysX, que normalmente se usan para juegos de computadora y video.
Close to Metal, que ahora se llama Stream, es la tecnología AMD GPGPU ‘s para las GPU basadas en ATI Radeon.
El paralelismo masivo acelerado de C ++ ( C ++ AMP ) es una biblioteca que acelera la ejecución del código C ++ mediante la explotación del hardware paralelo de datos en las GPU.
Ordenadores móviles
Debido a la tendencia de aumentar el poder de las GPU móviles, la programación de propósito general se hizo disponible también en los dispositivos móviles que ejecutan los principales sistemas operativos móviles.
Google Android 4.2 habilitó la ejecución de código RenderScript en la GPU del dispositivo móvil. Apple introdujo una API de Metal patentada para aplicaciones iOS, capaz de ejecutar código arbitrario a través de los sombreadores de cálculo de GPU de Apple.
Leer también: Las GPU en un data center, que hacen allí ; qué es el Big Data Analytics y porqué lo necesito para mi negocio
Consultor y escritor sobre Marketing online, Social media y temas Geek en general. Comprometido con HostDime en los portales de habla hispana.
More from Tecnología
Lo digital está alterando las Industrias tradicionales
Lo digital está alterando las industrias tradicionales. Ya sea en el país o en el extranjero, la transformación digital ha …
¿Cuál es la función de apache Tomcat?
Vamos a responder a la pregunta: ¿cuál es la función de Apache Tomcat? Se trata de un Servidor de aplicaciones …
¿Qué es un Servidor Dedicado?
Se puede llegar a decir que un Servidor Dedicado es la contraparte del Hosting Compartido. Mientras que un servidor compartido …