MATLAB agrega compatibilidad con GPGPU - Calendae | Informática, Electrónica, CMS, Ciberseguridad

MATLAB agrega compatibilidad con GPGPU

Hola, ¿qué tal colega?. Te escribe Simón Sánchez y hoy te voy a hablar sobre MATLAB agrega compatibilidad con GPGPU

Los usuarios de MATLAB con gusto por la informática con GPU ahora tienen una razón perfecta para actualizar a la última versión. La versión R2010b agrega soporte GPGPU nativo que permite al usuario aprovechar los procesadores gráficos NVIDIA para ingeniería y computación científica. La nueva funcionalidad se proporciona dentro de Parallel Computing Toolbox y Distributed Computing Server.

MathWorks lanzó R2010b a principios de septiembre y está aprovechando la Conferencia de tecnología de GPU NVIDIA de esta semana en San José, California para demostrar el nuevo soporte informático de GPU. Sin embargo, los primeros usuarios ya han tenido la capacidad de controlar el software. Una versión beta del soporte GPGPU se presentó en SC09 en noviembre pasado, atrayendo a cientos de clientes que querían darle un giro a las nuevas funciones.

Según Silvina Grad-Freilich, gerente senior de Computación Paralela en MathWorks, esto fue entre cinco y seis veces más registros beta de lo que esperaban. También se sorprendieron un poco al ver que se registraba una variedad tan amplia de usuarios. «Esperábamos recibir solicitudes de personas en áreas muy definidas como finanzas o academia», dijo Grad-Freilich. «Curiosamente, los clientes de todas las industrias que vendemos se han inscrito en la versión beta».

El soporte inicial para GPU se limita a las herramientas de NVIDIA y solo para aquellos dispositivos compatibles con CUDA con una capacidad de procesamiento de 1.3 o superior. En la línea de productos Tesla, esto es equivalente a las GPU de las series 10 y 20 (Fermi). La razón para limitar el soporte a las últimas GPU CUDA tenía que ver con la falta de soporte de punto flotante de doble precisión y el cumplimiento de IEEE en las GPU CUDA anteriores a 1.3. El equipo de MATLAB consideró que ambos eran necesarios para hacer de la computación GPU una capacidad útil para su base de clientes de científicos, ingenieros y analistas cuantitativos.

El acceso a la GPU se puede lograr de dos maneras: mediante la invocación de los núcleos CUDA existentes y mediante el soporte de programación de alto nivel que se ha incorporado a MATLAB. Con el primer método, los usuarios que están por delante de la curva GPGPU podrán aprovechar el software CUDA ya desarrollado, lo que les permitirá llamar a los núcleos CUDA dentro de las aplicaciones MATLAB. Pero según Grad-Freilich, esperan que la mayoría de los usuarios de MATLAB quieran utilizar el nuevo soporte de alto nivel para obtener acceso a los procesadores gráficos.

Para la compatibilidad con GPU nativa de MATLAB, los cambios de código en las aplicaciones existentes deberían ser relativamente menores. Como mínimo, el desarrollador debe invocar una llamada (gpuArray) para transferir la matriz de datos a la GPU y otra llamada (recopilar) para transferirla de nuevo al host de la CPU. Los cálculos intermedios pueden utilizar funciones integradas de MATLAB existentes que se han sobrecargado para trabajar en matrices de GPU. También se puede acceder a las GPU con funciones personalizadas de MATLAB proporcionadas por el usuario, simplemente ingresando los parámetros de la matriz de GPU en la invocación de la función. En la versión inicial, MathWorks sobrecargó más de 100 de las funciones matemáticas más utilizadas para la informática con GPU. Aquí hay un fragmento simple de código de procesamiento de GPU:

>> A = someArray (1000, 1000);
>> G = gpuArray (A); % Transferir los datos a la memoria de la GPU

>> F = fft (G); % de procesamiento en la GPU
>> x = Gb; % de procesamiento en la GPU

>> z = recolectar (x); % Restablecer el host MATLAB

El nuevo soporte también incluye la capacidad de implementar una aplicación en un clúster de GPU o en una estación de trabajo con múltiples GPU, utilizando el paralelo for loop de MATLAB (parfor). En este escenario, los cálculos en el bucle en paralelo se realizan en varias GPU en la configuración del usuario. Debido a la abstracción de la paralelización de MATLAB, el código fuente es portátil a diferentes tipos de configuraciones multi-GPU: estaciones de trabajo, clústeres y cuadrículas.

Al ofrecer esta sencilla interfaz, MATLAB puede ocultar al usuario todos los detalles valientes de la GPU relacionados con la inicialización del hardware, la transferencia de datos y la gestión de la memoria. Y dado que el usuario medio de MATLAB es un especialista en dominios en lugar de un programador profesional de C / C ++, esto les permite permanecer en su zona de confort de software. Por otro lado, muchas aplicaciones de MATLAB están destinadas únicamente a la creación de prototipos. Cuando entran en producción, pueden terminar como programas C / C ++ desarrollados profesionalmente con la idea de mejorar el rendimiento.

Uno de los buenos resultados de la aceleración de GPU es que parte del código MATLAB se puede compilar lo suficientemente rápido para la implementación de producción. Los aumentos de velocidad para algunos algoritmos están a la par con otras aplicaciones aceleradas por GPGPU. En las pruebas de MathWorks, pudieron demostrar una velocidad de cálculo 50 veces más rápida en una GPU que en la implementación de la CPU. En este caso, el programa era una aplicación de espectrograma que usaba funciones FFT y se ejecutaba en un clúster de GPU de 16 nodos.

Sin embargo, cuando se tuvo en cuenta el tiempo de transferencia de datos de CPU a GPU, la velocidad medida fue solo cinco veces. Esto todavía representa una aceleración respetable, pero ilustró la degradación del rendimiento de las transferencias de datos de ida y vuelta a través del enlace PCIe (así como, en este caso, la red GigE del clúster). Quizás la métrica más destacada es la cantidad de FFT que pueden manejar los diferentes procesadores. Las CPU solo pueden procesar un puñado de funciones FFT a la vez, mientras que las GPU pueden manejar millones de ellas, lo que le da a la implementación de la GPU una escalabilidad mucho mayor.

Aunque GPGPU es una función nueva para MATLAB, ya se incluyen muchas funciones para los usuarios que tienen acceso al nuevo hardware de NVIDIA. La intención es incrementar esta funcionalidad en futuras versiones. Para obtener una vista más detallada y lo que está disponible hoy, consulte el Página web de soporte de MATLAB GPU.

Deberías compartir en en tu Twitter y Facebook para que tus colegas lo flipen

??? ? ? ???

Comparte