Wenas :)
2016-09-06 18:49 GMT+03:00 Juan Erbes
http://www.electronicosonline.com/2016/09/02/desfasaran-gpus-a-cpus/
Bueno, como todos sabemos ... en IT (y en la vida real) hay muy pocas cosas absolutas. En realidad una GPU es un procesador vectorial (con una muy elevada capacidad de paralelizacion): si tu aplicacion es capaz de utilizar esas caracteristicas, conseguiras mucho mejor rendimiento. Si tu aplicacion no es capaz de utilizar esas caracteristicas ... no te valen para nada. Por ejemplo, el comando ps, vi, ... no veran mejoras ;) Aplicaciones multimedia, CAD/CAM/CAE y otras si ven mejoras sustanciales ... mejor dicho, ciertas funciones/modulos de dichas aplicaciones veran mejoras. Hay mas cosas a tener en cuenta, por ejemplo: * cantidad de memoria RAM de la GPU: NVIDIA llega a 16 GB y AMD a 32 GB (IIRC). Si tus datos estan por encima de eso ... tendras que pasar por el bus PCIe para acceder a los datos en disco (o RAM del servidor), lo cual incrementa la latencia y reduce el tiempo de calculo. * lenguaje de programacion: hoy por hoy, CUDA da mucho mejor rendimiento que OpenCL :( * si usas MPI: el paso de mensajes entre GPUs se puede hacer, pero ocurre lo mismo: pasa por el bus PCIe, que es un cuello de botella. NVIDIA ha sacado un bus propietario que, por ahora, solo lo usa Power 9 (IIRC) * si necesitas o no Doble Precision (DP): el precio de la tarjeta varia ;) * si tu aplicacion se puede paralelizar/distribuir entre varias GPUs sin MPI: son procesos concurrentes que no "hablan" entre si y cada uno se puede ejecutar en una GPU diferente. Pones mas GPUs en tu equipo y mejoras aun mas el rendimiento. * la cantidad de codigo paralelizable que tienes: puede que sea muy poco y tu mejora de rendimiento es muy baja * tiempo y conocimiento para portar/migrar tu aplicacion a GPUs: relacionado con el caso anterior. Si el codigo que se beneficia es poco, no tienes ni idea, no tienes tiempo, ... posiblemente no te valga la pena migrar a GPUs * no solo tienes que saber paralelizar tu aplicacion, tienes que saber programar para tener elevada concurrencia: mientras la GPU esta calculando lo que sea, la CPU deberia ir pidiendo datos a disco o por red y meterlos en memoria/cola de ejecucion (prefetching) o gestionando las comunicaciones con otros nodos, ... Ademas, existen otros aceleradores como las Phi de Intel y las FPGAs, cada una tiene un dominio/mercado en el que da mejores rendimientos que las GPUs. Ojo con el post porque esta basado en publicaciones de NVIDIA. Si leemos documentos de Intel u otros fabricantes de aceleradores ... veremos otros numeros/resultados ;) Tambien hay que tener en cuenta que AMD e Intel estan integrando la GPU (o acelerador) en el propio socket, mientras que NVIDIA (para x86) es un producto que va conectado por PCIe. Esto tiene sus ventajas e inconvenientes: * ir en PCIe te da la libertad de poder poner el acelerador que te de la gana, quitarlo a voluntad y poner uno mas moderno, mas potencia de claculo, mas escalabilidad, ... pero tiene mayores latencias y menor ancho de banda * ir en el mismo socket: implica vendor lock-in, quedarte desfasado y no poder actualizar, usas la RAM del servidor, menor potencia de calculo, menor escalabilidad, ... pero tienes menor latencia y mayor ancho de banda Si puedes tener la GPU que viene en el socket y otra en PCIe ... tienen que ser del mismo fabricante. IOW: si tienes un AMD con GPU integrada y pones una NVIDIA por PCIe ... el driver de NVIDIA se empieza a quejar y te dice que desactives la otra GPU (lo he sufrido). Para "combatir" esto, hay un consorcio entre los que estan AMD, fabricantes de FPGAs, ARM y otros que han creado un bus para poder intercomunicar las aceleradoras entre si y con la CPU. Es similar al nvlink de NVIDIA, pero abierto :) Como siempre he dicho: haz tu los benchmarks con tus datos. Los whitepapers y demas estan bien para hacerte una idea, pero no son la verdad absoluta. BTW, el titulo del informe: “No hay necesidad de una supercomputadora” me parece absurdo. Las supercomputadoras de hoy en dia usan GPUs asi que no se ha sustituido nada, se han integrado. MHO, Rafa -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org