(+34) 91 361 10 02
comercial@sie.es
Dossier
flagEnglish
flagEspañol
Facebook
Twitter
LinkedIn
YouTube
Instagram
RSS
Sistema Informáticos EuropeosSistema Informáticos Europeos
  • Productos
    • Plataformas | Hardware
    • Software
  • Servicios
    • Redes
    • Almacenamiento
    • Seguridad
    • Virtualización
  • Proyectos
    • Desarrollos HPC
    • Proyectos I+D+i
  • Novedades
    • Noticias SIE
    • Casos de éxito
    • SIE Con la ciencia
    • Otras noticias
  • Conócenos
    • Nosotros
    • Contacto
  • Español
    • English

¿Cómo puedo programar en GPU?

10 noviembre, 2014HPCNo commentssie

Este documento, intenta profundizar en la cuesti€n del clculo cient‚fico en GPU  (recomendamos leer previamente “Porque migrar a GPU”).
Antes de dar este paso, deber‚amos haber analizado la imagen siguiente:

Proceso de la programación en GPU

Creo que este gráfico, es muy revelador antes de dar el paso hacia las GPUs. Me gusta mucho, porque los tiempos pueden estar referidos tanto al empleado para  calcular como para desarrollar la aplicaci€ón
1. Si mi có€digo es lineal y todaví‚a no he empezado por paralelizarlo, no deber‚a ni  tan siquiera plantearme una soluci€ón de GPU. Las GPUs ofrecen siempre ms cores que las CPUs, pero siempre con menos prestaciones por core (aunque al ser muchos, el rendimiento es espectacular) y menos memoria. Eso significa que todav‚ía tengo mucho campo en las CPUs y mucho rendimiento que sacarles y que además generació€n tras generació€n, siempre me darán mejores prestaciones, porque los n†úcleos cada vez son más y de mayor velocidad efectiva en Gflops.

Estamos en el caso del cuadrante superior izquierdo: si mi proceso no es todaví‚a paralelo o si lo es a peque‡a escala, mejor centrarme en optimizarlo. Además si tarda de horas a unos pocos d‚as, probablemente comprando un hardware ms rpido consiga menos tiempo de ejecució€n y me ahorre los costes humanos de migrar a otras plataformas.

2…. Si mi c€ódigo tarda en ejecutarse de unos d‚as a semanas, probablemente ya haya tratado de paralelizarlo, al menos en un nodo (Open MP) y de aprovechar el máximo n†mero de núcleos que tenga disponible por servidor. En este caso, tenemos dos opciones:

  • a) Fácilmente podremos paralelizarlo en Open MPI y correrlo en varios nodos. Bien trocearlo en distintos procesos separados y lanzarlo a nodos distintos o paralelizarlo entre varios nodos a travˆés de una red de baja latencia, la más extendida Infiniband. Ventaja: pocos cambios de programaci€ón. Inconveniente: más inversió€n en hardware y consumo de luz.

 

  • b) Analizar que 25% de mi aplicació€n consume el 90% del tiempo e intentar migrar esta parte del có€digo a GPU. Ventaja: ahorro en hardware, software (si usa herramientas de desarrollo de pago por nodo) y luz. Inconveniente: esfuerzo importante de migració€n.

 

3. Mitad inferior de la imagen. Si nuestro cálculo tarda de semanas a meses, realmente necesitamos un gran esfuerzo. La soluci€n viene de mano de tecnologí‚as como OpenACC o CUDA con herramientas como CAPS HMPP Workbench, es decir, de programaci€n mixta CPU-GPU, donde aprovechemos al máximo la potencia del sistema o de programaci€ón multi-GPU. En este escenario, el paso a GPU se hace imprescindible.

Bueno, imaginemos que ya hemos decidido migrar a GPU. Básicamente tenemos claro, que nuestro c€digo x86 no va a correr en ninguna GPU (al menos sin retoques), porque solo el procesador base corre directamente cálculos x86.

Antes de entrar en materia, diréˆ que en SIE siempre que pensamos en cálculo cient‚ífico, estamos hablando de sistema operativo Linux, aunque existen algunas aplicaciones tambiˆn disponibles en Windows, es el entorno de más rendimiento y más estable. Si acudimos a las GPUs por este motivo, parece l€ógico usar el sistema más ó€ptimo.

Empecemos, antes de entrar en las tecnologí‚as a hablar de las herramientas que hay para desarrollo sobre GPU. Empezaremos hablando desde las más dif‚ciles a las más fáciles:

  • OpenCL (ser‚a similar al estándar OpenGL de grficos 3D), es decir, vale para cualquiera de las 3 tecnologí‚as que mencionaremos, pero es el más duro de usar: trabajar en C/C++, lo más pró€ximo al c€ódigo máquina y con pocas ayudas a la programació€n, además de que exige tirar más l‚neas de có€digo. Ventajas: podemos desarrollar para cualquiera de las plataformas y probablemente con la mejor optimizació€n de c€digo posible. Ciertamente existen librerí‚as como OpenCV (visió€n artificial) u otras que pueden hacernos la vida más fácil.

 

  • CUDA: Son las siglas de Compute Unified Device Architecture (Arquitectura Unificada de Dispositivos de Cálculo) y se puede usar con se puede usar Python, Fortran y Java en vez de C/C++. Es un estándar de facto. Que entendemos por este concepto? Un estndar (porque está muy extendido en el mercado), pero que es propiedad de una compañ퇂a (no es un estndar IEEE ni Open Source). Esto no quiere decir que la compañ퇂a no lo comparta con la comunidad ni con otros desarrolladores. Otro ejemplo t‚pico de estándar de facto es el formato pdf, propiedad de Adobe.Fue desarrollado por NVDIA en el 2007. Desde la versi€ón 1.0 a la 5.5 actual (la 6.0 ya est reci€n lanzada), se ha mantenido la compatibilidad, con lo que cualquier software desarrollado anteriormente sigue funcionando. Cada vez ha ido incorporando mejores SDK (kit de desarrollo) y en la actualidad es la que dispone de más librerí‚as, aplicaciones de cálculo cient‚ífico en muchos campos (actualmente más de 70) y ayudas al desarrollo de todo tipo (actualmente más de 4.000 “papers” cient‚ificos hacen referencia a CUDA)

 

  • “Parallel Studio” y “Cluster Studio”: Herramientas que integran el compilador Fortran/C++ de la compañ퇂a Intel con librerí‚as y kit de desarrollo. Básicamente son los ú†nicos que ofrecen una migració€n de CPU a “GPU” (son más propiamente dichos coprocesadores), sin necesidad de reescritura del có€digo. El motivo es que los coprocesadores (que vienen con conexi€ón PCI-Express) al igual que el resto de soluciones, sin embargo siguen siendo compatibles x86.

 

FUTURO: OpenACC

Impulsado por compa‡‚ñías como Caps, Cray Coorporation, Nvdia o Porland Group, surge un estándar de c€ódigo libre, que incluye una serie de directivas comunes, que permitir trabajar en cualquiera de las plataformas y lo que es más importante, cara al futuro, hacer programació€n mixta CPU-GPU, que se supone ser el nuevo paradigma en el mundo HPCC (high performance Computing Calculus). La ú†nica pega es su reciente lanzamiento, dado que es una plataforma todaví‚a poco madura.

Estructura plataforma openacc

 

Una vez asumido esto, tenemos tres posibilidades o tecnologí‚as que se nos ofrecen (las enumero de las menos implantadas para cálculo a las más implantadas):

ATI (AMD)

Absorbida esta compa‡‚a por el segundo fabricante de procesadores de PC, fabrica placas que quizၠen prestaciones son las más superiores. Que inconvenientes plantea? Bueno, la gran pega es que ATI no ha hecho un gran esfuerzo en sacar tools de desarrollo y eso se traduce en que es necesario programar en OpenCL y resulta complicado. La serie destinada a cálculo es las ATI Radeon HD.

Es cierto, que dado que AMD ha lanzado las APU (hibridos entre CPU y GPU) integrables directamente en placa, permite programació€n hí‚brida y cuando las herramientas sean lo suficientemente potentes para ello, puede que sea una opció€n importante a considerar. Adems de momento solo existen sistemas monoprocesador, lo que limita el nú†mero de cores y la memoria.

tarjeta ati firepro con procesador AMD

 

INTEL PHI

Anteriormente denominada MIC (multicore), que evito a posta denominarla Xeon Phi, para no incurrir en equí‚vocos con los procesadores
Intel Xeon de placa madre, cuya potencia por core es muy superior a los 60 cores que ofrece la Phi. Lo atractivo de esta tecnologí‚a es que no es necesario reescribir la aplicació€n. Al ser compatible x86, seg†n Intel con las herramientas Parallel Studio y Cluster Studio, se pueden migrar las aplicaciones de forma automática. Los problemas son tres:

  1. Estas herramientas son de pago y bastante costosas, incluso para el entorno universitario
  2. Si se migran las aplicaciones con las herramientas y depuradores por defecto, solo se consigue del orden de dos veces la velocidad que obtiene el procesador de la placa base. Esto no compensa.
  3. Si realmente queremos obtener entre 5 y 10 veces como ofrece Intel, debemos reprogramar como en los otros escenarios y por tanto estamos en la misma problemática.

intel xeon phi coprocessor

NVIDIA TESLA Y GTX

Empezaremos aclarando que NVDIA es una casa comercial y que CUDA es su estándar de facto en mercado, pero propietario. Actualmente es la tecnologí‚a más madura, ya que va por la versió€n CUDA 6 y desde la versi€ón CUDA 1, aunque ha ido mejorando, ha mantenido la compatibilidad.

tarjeta grafica nvidia tesla

La ventaja principal que tiene son tres:

  1. Existen más de 70 aplicaciones en mercado que usan el estándar de CUDA, entre ellas incluso algunas espa‡olas como Octopus, ACMD y River Flow 2D. De las ms importantes y que mejor rendimiento dan cabe destacar Amber, NAMD y Cromacs. De las herramientas migradas más conocidas Mathlab y Matematica (no en todas sus funciones pero si en las ms importantes), lenguajes como Pyton, librer‚as como OpenCV, etc.
    Puede descargar la lista completa en gpu-accelerated-applications-for-hpc
  2. El rendimiento est muy bien optimizado tanto usando la gama más cara y enfocada a clculo cientí‚fico como es Tesla, como la gama más econ€ómica que es GEFORCE GTX (usada clásicamente para juegos) en tarjetas que en muchos casos dan casi mejor resultado como la Titan Black.tarjeta grafica nvidia gforce gtx
  3. Las herramientas y librerí‚as ofrecidas por CUDA, son totalmente gratuitas para cualquier tipo de desarrollo.

Por tanto, y por resumir, si su aplicació€n esta migrada a CUDA o la herramienta que usa para desarrollar lo estén, es una opci€ón perfecta y podrၠobtener con los ú†ltimos modelos una mejora de rendimiento de entre 5 y 50 veces, seg†ún sea su aplicaci€ón.

Para terminar, queremos sacar una conclusi€n de todo este informe. Si su grupo de investigació€n no es muy numeroso, mejor quéˆdese en el entorno de CPUs de momento. Seguirán unos cuantos a‡os dando cada vez más rendimiento y por tanto podrá seguir aprovechando las mejoras, pero piense que tarde o temprano irán incorporando GPUs en el chip y tendrá que irse acostumbrando a este entorno de programaci€ón, por tanto aproveche para ello.

Si su aplicaci€ón ya migrada para GPU, aprovˆechese. Algunas aplicaciones consiguen reducir el tiempo de cálculo de 28 d‚as a unas pocas horas. Con una sola máquina podrၠhacer lo que un clú†ster entero y con un clú†ster de GPUs lo que hace unos a‡ños hací‚a un centro de supercomputaci€n.

Si ya dispone de herramientas para programar en GPU y que son de alto nivel (fáciles de usar para el ser humano), aproveche esta nueva tecnologí‚a, con herramientas como Mathlab by Mathworks (más de 200 funciones migradas) o Mathematica Wolfram es relativamente sencillo.

Para aportar datos concretos, investigadores que ya trabajan con aplicaciones en GPUs, nos dan datos concretos:

datos concretos aplicaciones gpu

  • Aplicaci€ón River Flow 2D Plus GPU(desarrollada por la Universidad de Zaragoza):Para un determinado cálculo sobre CPU que tarda 28 d‚as sobre GPU baja a 8 d‚ías
  • Pruebas realizadas por el Dr. Jordi Faraudo de la Universidad Autó€noma de Barcelona: Aplicació€n simulaci€ón NAMD con 20500 tomos: velocidad 2 GPU Titan black : 0.0281269 days/ns
  • Para otras aplicaciones como Amber pueden ver la comparativa en nuestro primer documento “Porque migrar de CPU a GPU

 

Piense que las GPUs no solo son un ahorro de tiempo, sino un ahorro de energ‚ía y espacio, que empieza a ser un elemento muy importante.

Tags: GPU, NVIDIA
Previous post SIE se convierte en un referente en temas de HPCC en biomedicina y genética Next post Ladon OS7 para estaciones de cálculo

Related Articles

PREDICCIONES PARA EL 2018: LA BARRERA DEL EXAFLOP.

9 noviembre, 2017Raúl Díaz

Ponencias Hpc Admintech 2017

16 febrero, 2017Raúl Díaz

Mantengasé informado de las últimas novedades de nuestros sistemas. GIGABYTE SYSTEM INTEGRATOR ESPAÑA

13 julio, 2015Raúl Díaz

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Search

Recent Posts

  • Ofertas suscriptores 2023
  • Rehabilitación de pacientes neurológicos y psiquiátricos
  • ChatGPT, lo último de OpenAI tiene loco a Internet
  • Gigabyte es ahora Giga Computing Technology
  • El Reto Metástasis | IRB Barcelona

Recent Comments

  • Julián Rodríguez Aragón en 5º año consecutivo, el HPC Admintech 2019
  • reparar un ordenador en SIE obtiene la cualificación INTEL PLATINUM PARTNER
  • Raúl Díaz en Rendimiento plataformas Gigabyte.
  • Jesús en Rendimiento plataformas Gigabyte.

Archives

  • enero 2023
  • diciembre 2022
  • noviembre 2022
  • septiembre 2022
  • agosto 2022
  • junio 2022
  • mayo 2022
  • abril 2022
  • febrero 2022
  • octubre 2021
  • junio 2021
  • mayo 2021
  • febrero 2021
  • diciembre 2020
  • agosto 2020
  • mayo 2020
  • marzo 2020
  • febrero 2020
  • octubre 2019
  • agosto 2019
  • julio 2019
  • junio 2019
  • diciembre 2018
  • junio 2018
  • mayo 2018
  • abril 2018
  • marzo 2018
  • enero 2018
  • noviembre 2017
  • agosto 2017
  • junio 2017
  • abril 2017
  • febrero 2017
  • enero 2017
  • diciembre 2016
  • noviembre 2016
  • octubre 2016
  • septiembre 2016
  • agosto 2016
  • julio 2016
  • junio 2016
  • mayo 2016
  • abril 2016
  • marzo 2016
  • febrero 2016
  • enero 2016
  • diciembre 2015
  • noviembre 2015
  • octubre 2015
  • julio 2015
  • junio 2015
  • mayo 2015
  • marzo 2015
  • enero 2015
  • noviembre 2014
  • octubre 2014
  • julio 2014
  • enero 2014
  • diciembre 2013
  • octubre 2013
  • junio 2013
  • mayo 2013
  • marzo 2013
  • diciembre 2012
  • julio 2012
  • marzo 2012
  • enero 2012
  • marzo 2011
  • marzo 2010
  • enero 2010
  • noviembre 2009
  • junio 2006
  • mayo 2005

Categories

  • Casos de éxito
  • Gigabyte
  • GPU
  • HPC
  • intel
  • Novedades SIE
  • Otras noticias
  • portada
  • Sin categoría
  • SSD
  • Nota legal
  • Responsabilidad Social Corporativa
© 2020 Sistemas Informáticos Europeos, todos los derechos reservados.