matlab gpu gpgpu jacket

¿Acelera el código de MATLAB usando GPU?



gpgpu jacket (2)

MATLAB es compatible con la GPU basada en CUDA. Tienes que acceder desde "Parallel Computing Toolbox". Espero que estos 2 enlaces también ayuden:

Características de la caja de herramientas de computación paralela

Características principales

  • Bucles for paralelos (parfor) para ejecutar algoritmos de tareas paralelas en procesadores múltiples
  • Soporte para GPU NVIDIA con CUDA habilitado
  • Uso completo de procesadores multinúcleo en el escritorio a través de trabajadores que se ejecutan localmente
  • Grupo de equipos y soporte de red (con MATLAB Distributed Computing Server)
  • Ejecución interactiva y por lotes de aplicaciones paralelas
  • Conjuntos distribuidos y construcción de datos múltiples de programa único (spmd) para el manejo de grandes conjuntos de datos y algoritmos de datos paralelos

Compatibilidad con MATLAB GPU Computing para NVIDIA CUDA-Enabled GPU

El uso de MATLAB para computación GPU le permite acelerar sus aplicaciones con GPU más fácilmente que con C o Fortran. Con el lenguaje MATLAB familiar usted puede aprovechar la tecnología informática CUDA GPU sin tener que aprender las complejidades de las arquitecturas GPU o las bibliotecas de computación GPU de bajo nivel.

Puede usar GPU con MATLAB a través de Parallel Computing Toolbox , que es compatible con:

  • GPU NVIDIA habilitadas para CUDA con capacidad de cálculo 2.0 o superior. Para las versiones 14a y anteriores, la capacidad de cómputo 1.3 es suficiente.
  • Uso de GPU directamente de MATLAB
  • Múltiples GPU en el escritorio y clústeres de computadoras que utilizan los trabajadores de MATLAB en Parallel Computing Toolbox y MATLAB Distributed Computing Server

AccelerEyes anunció en diciembre de 2012 que trabaja con Mathworks en el código GPU y ha suspendido su producto Jacket para MATLAB:

http://blog.accelereyes.com/blog/2012/12/12/exciting-updates-from-accelereyes/

Lamentablemente, ya no venden licencias de Jacket.

Por lo que yo entiendo, la solución Jacket GPU Array basada en ArrayFire fue mucho más rápida que la solución gpuArray provista por MATLAB.

Empecé a trabajar con gpuArray, pero veo que muchas funciones se implementan mal. Por ejemplo, un simple

myArray(:) = 0

es muy lento. He escrito algunos CUDA-Kernels personalizados, pero la funcionalidad estándar de MATLAB mal implementada agrega una gran cantidad de gastos generales, incluso si se trabaja con gpuArrays de forma consistente en todo el código. Resolví algunos problemas al reemplazar el código de MATLAB con código CUDA escrito a mano, pero no quiero volver a implementar la funcionalidad estándar de MATLAB.

Otra característica que me falta son las matrices de GPU dispersas.

Entonces mis preguntas son:

¿Cómo se aceleran las implementaciones de GPU predeterminadas mal implementadas proporcionadas por MATLAB? En particular, ¿cómo puedo acelerar las operaciones de matrices dispersas en MATLAB usando la GPU?


Tuve el placer de asistir a una charla de John, el fundador de AccelerEyes. No obtuvieron la aceleración porque simplemente eliminaron el código mal escrito y lo reemplazaron con un código que guardaba algunos bits aquí y allá. Su aceleración se debió principalmente a la explotación de la disponibilidad de la memoria caché y la realización de muchas operaciones en memoria (GPU). Matlab se basó en la transferencia de datos entre la GPU y la CPU, si no recuerdo mal, y por lo tanto la aceleración era una locura.