Intel mostró su procesador de 48 núcleos apodado el "single-chip cloud computer", que consume aproximadamente el mismo poder que los procesadores de escritorio disponibles en la actualidad. El chip de 48 núcleos puede funcionar con tan sólo 25 vatios, o al 125 vatios cuando funciona a máximo rendimiento - igual que el consumo de energía de dos bombillas domésticas, dice Intel.
#9:
#5 Con amenazas. Hace algún tiempo, tuve un televisor de aquellos de tubo que me "regalaron" mis padres para que el comedor de mi piso de alquiler tuviese algo más que suelo y una alfombra. El caso es que el televisor en sí funcionaba cuando quería y había momentos en los que, con el límite de la paciencia sobrepasado, me arrastraba por la alfombra en dirección a la pantalla y, justo cuando mi mano se encontraba bien alzada, dispuesto a propinarle un buen "golpe mágico", la jodía se arreglaba.
En conclusión, los aparatos electrónicos son sensibles a las amenazas.
#3:
"el consumo de energía de dos bombillas domésticas"
#15:
#5 Con concurrencia: secciones críticas, semáforos, mutex, paso de mensajes, memoria compartida... Y algoritmos que sean paralelos!
Ejemplo:#14 #13 Lo que quieres sacar es la raíz cuadrada de c? Pues repartiendo 10000 entre el número de procesos, cada uno calcule se cacho, y luego se lo pasen a proceso director.
Simplemente mirad:ctrl+alt+supr->rendimiento->totales: Procesos y subprocesos. El procesamiento paralelo lleva muuuucho entre nosotros!
#21:
#19 Eso no te funciona porque cada iteración necesita el resultado de la anterior. Te ha puesto un claro ejemplo de algoritmo que no puede correr en paralelo y has caido en la trampa
48 núcleos y todavía trabajando con algoritmos secuenciales que solo corren como un proceso = 1 núcleo. ¿Cómo hacer un algoritmo que saque provecho a 2, 3.... 48 núcleos?
#7 el multiproceso simétrico tiene sus limitaciones y no pocas, siempre será mejor un procesador mononucleo 48 veces más rápido que otro con 48 nucleos.
#5 Con concurrencia: secciones críticas, semáforos, mutex, paso de mensajes, memoria compartida... Y algoritmos que sean paralelos!
Ejemplo:#14 #13 Lo que quieres sacar es la raíz cuadrada de c? Pues repartiendo 10000 entre el número de procesos, cada uno calcule se cacho, y luego se lo pasen a proceso director.
Simplemente mirad:ctrl+alt+supr->rendimiento->totales: Procesos y subprocesos. El procesamiento paralelo lleva muuuucho entre nosotros!
podrás compartir memoria, podrás dividir una tarea en hilos si puedes, (en este caso es imposible), pero nunca una operación que depende de un resultado anterior puede ejecutarse paralelamente a algo anterior, es una obviedad como una casa.
que haya una API que haga cosas por ti y que para en ciertos casos te pueda valer no quiere decir que vaya a hacer milagros.
mejor lo pruebas y lo compruebas, mide el tiempo a ver si de verdad estás acelerando algo
No hombre, que no sobra, ni caí en la trampa.
Está pensao para correr en dos núcleos, sincronizarlo, y cada núcleo escribe sobre n mientras el otro prepara la siguiente operación, pero me faltaba el private c en
#19 Eso no te funciona porque cada iteración necesita el resultado de la anterior. Te ha puesto un claro ejemplo de algoritmo que no puede correr en paralelo y has caido en la trampa
Y aprovecho para responderte #22 Sí, hay cosas que no puedes hacer (aunque a veces un desarrollo matemático del problema puede dar lugar a una vía sí paralelizable. Un ejemplo típico son los algoritmos de sorting, con la versión paralela del QuickSort), pero no se trata de que no interese hacerlos ma rápidos, sino de que se está volviendo inviable. Y con todo, puesto que en un ordenador se ejecutan múltiples tareas, el poder asignar aunque solo sea un núcleo en exclusiva a una tarea (con su cache de memoria dedicada) ya es una enorme ventaja y aumenta el rendimiento de esa tarea concreta.
En resumen, la objeción es válida, pero la situación de la tecnología marca el camino de multiprocesadores y multicores, y a eso hay que adaptarse si queremos seguir aumentando la potencia de cálculo
Exacto, el que ha puesto #13 es un claro ejemplo de dependencia de datos, pero por cada punto de un programa en que se da dependencia de datos, hay otros 75000 en que no se da y se puede usar la paralelización.
y sí, como dice #23, el desarrollo matemático de algoritmos da resultados sorprendentes... el problema es que muchas veces a los informáticos se nos escapa tres pueblos el tema y necesitamos de matemáticos para ello.
#13 Si el programador hace todo eso en lugar de n=1 es pa matarlo, eh?
Ya fuera de bromas, sí hay 48 cosas paralelizables a nada que te pongas. Mi campo son los gráficos así que el ejemplo más sencillo: raytracing. Y para rasterizar, lo mismo (un polígono por procesador, por ejemplo, aunque esto es más complicado). Pero venga, dejemos los gráficos a la GPU de momento (Larrabe, en un futuro?). Motor físico. De nuevo podemos tener a cada procesador calculando cosas (eg: detección de colisiones, posiciones para nuevos elementos) de nuevo, con mucho cuidado, claro. Y bueno, hay más casos.
Evidentemente con 48 núcleos no vas a acelerar el Word (¿hace falta?) pero sí otro tipo de programas.
Eso sí, no lo veo muy útil. No le veo sentido como procesador de propósito general, vamos. Joer, ¡que muchos tenemos 4 núcleos y tener los 4 funcionando a la vez es todo un evento!
aun no entiendo pq hay tanta gente que dice "se reparten el trabajo entre los cores, ya se encarga el SO de hacerlo" y se quedan tan anchos".
Otra pega que les veo es que no todos los hilos pueden necesitar la misma carga de CPU, no todas las cpus tienen la misma disponibilidad puesto que ya pueden estar corriento otros hilos, lo cual hace mucho mas engorroso y al final ineficiente el como programar.
#26 A ver, es que yo parto de la base de que los desarrollos se hacen para aplicaciones con requerimientos de computación elevados. Si a los fabricantes les tira investigar modos de mejorar el rendimiento es por aquellos procesos que a día de hoy precisan dicho aumento (predicción meteorológica, calculos en áreas de ingenieria y física, incluso se retroalimenta, pues el proceso de enrutamiento en el diseño de procesadores buscando el camíno óptimo para mejorar la velocidad consume una barbaridad). Al final parte e ello acaba por llegar al escritorio tras tres o cuatro años, pero creo que es de ilusos pensar que nadie desarrolle dichas tecnologías para los usuarios normales. Si partimos de esa premisa equivocada, claro que no aporta demasiado. Ahora, poder predecir el tiempo que va a hacer en una región dentro de tres días en menos de esos tres días, sí es importante
#32 Igual soy iluso, pero yo no estoy tan seguro de que todo el departamento de R&D de Intel esté dedicado a la computación científica. Con todos los procesadores de propósito general que venden no sé yo qué les dará más dinero, y eso es lo que interesa investigar y mejorar, aquello que más vendes (a menos que busques diversificar, claro).
En cualquier caso, como dije "no le veo sentido como procesador de propósito general", obviamente para computación científica sí.
#33 "es dificilmente optimizable por que hay una dependencia del valor del bucle anterior"
esto es en el fondo lo que quería decir, como ya dije, el ejemplo era muy chorra, agradezco el apunte, pero como ya ha dicho #26, lo suyo es poner n=1, no tiene ningún sentido práctico.
#13 Veo lo que dices, este algorismo asi, es dificilmente optimizable por que hay una dependencia del valor del bucle anterior. Lo que se hace en estos casos es utilizar la tecnica de la reducción de potencia, que consiste en modificar el bucle por una instrucción de menos coste equivalente. Esta cambio o bien la hace el optimizador del compilador o bien manualmente el programador.
En esta caso podemos ver que aplicar 2 veces la raiz quadrada a un número es equivalente a aplicar directamente una raiz quarta. Aplicar 3 veces la raiz quadrada es equivalente a aplicar una raiz octava, es decir aplicar n veces la raiz és lo mismo que una raiz de 2 elevado a N.
#5 Con amenazas. Hace algún tiempo, tuve un televisor de aquellos de tubo que me "regalaron" mis padres para que el comedor de mi piso de alquiler tuviese algo más que suelo y una alfombra. El caso es que el televisor en sí funcionaba cuando quería y había momentos en los que, con el límite de la paciencia sobrepasado, me arrastraba por la alfombra en dirección a la pantalla y, justo cuando mi mano se encontraba bien alzada, dispuesto a propinarle un buen "golpe mágico", la jodía se arreglaba.
En conclusión, los aparatos electrónicos son sensibles a las amenazas.
#5 Además de lo que afirmas, que es cierto, yo añadiría el acceso a la memoria. Da igual cuantos procesadores tengas que esto no va a correr más rápido de lo que es capaz de leer los datos de la memoria.
#5 Y como reduces el tamaño de los transistores para que puedan ser 48 veces mas rápidos si el tamaño de puerta ya ronda la decena de átomos? El multiproceso es complejo, y puede que dos núcleos no den el doble de rendimiento que uno el doble de rápido, pero es la vía que nos queda hasta que los dispositivos optoelectrónicos u otros mas esotéricos puedan llegar al mercado de consumo. Y me temo que incluso después de eso será necesario.
PD: OpenMP y MPI me sorprendieron (no tengo una formación muy profunda en programeción), en especial trabajando juntos. Es alucinante la potencia de cálculo que puedes conseguir con un conjunto de máquinas heterogéneo, incluso aunque algunas de ellas sean casi reliquias.
Estamos hablando de un procesador de 48 nucleos, donde cada nucleo es multihilo. Sacar rendimiento a eso es una autentica odisea. De hecho, es un problema tan grande que esta empezando a ser el tema estrella en las conferencias/congresos de arquitectura de computadores. El futuro pasa, inevitablemente, por hacer lo mismo pero en menos espacio. 8 nucleos donde antes cabian 4, 16 donde antes cabian 8. En unos años llegaremos a tener procesadores con cientos de nucleos multihilo, y crear aplicaciones que saquen rendimiento de eso va a ser muy muy complicado.
Y por no hablar de cuando combinemos en un mismo equipo varios de estos procesadores.... ¿Como le sacamos rendimiento a eso? Ahi no vale ni OpenMP ni arquitecturas de memoria compartida. Ahi vale programacion paralela pura y dura. Pasa por definir (o redefinir) un nuevo paradigma de programacion en el que se ha de conseguir paralelizar todo a unos niveles brutales. Por eso me hace gracia ver como algunos arreglan todos esto con un: "Usando threads y forks", o "Usando OpenMP". A ver como programan una aplicacion para correr en 15 procesadores de 150 nucleos multihilo, en el que cada uno de los procesadores mantenga una carga de trabajo del 100% hasta el fin de la ejecucion del programa.
¿Desde hace cuanto que no funciona un único proceso en un SO de escritorio? Puede que haya un proceso principal para el usuario, pero el ordenador está haciendo tareas de fondo todo el rato.
#41 Dudo mucho (y los profesores de computación cuántica que he tenido también) que los ordenadores cuánticos se conviertan en ordenadores de propósito general. Más que nada porque no tienen ninguna ventaja en multitud de ocasiones.
No obstante, si finalmente lo hacen... no sé si sudarán o se suicidarán (hablo en tercera persona porque lo que es seguro es que a mi no me toca fijo )
Comentarios
"el consumo de energía de dos bombillas domésticas"
Y si son bombillas salvajes?
#3 Pues lanzas una pokéball.
48 núcleos y todavía trabajando con algoritmos secuenciales que solo corren como un proceso = 1 núcleo. ¿Cómo hacer un algoritmo que saque provecho a 2, 3.... 48 núcleos?
#5 Eso se consigue con el Multiproceso Simétrico.
http://es.wikipedia.org/wiki/Multiprocesamiento_sim%C3%A9trico
#7 el multiproceso simétrico tiene sus limitaciones y no pocas, siempre será mejor un procesador mononucleo 48 veces más rápido que otro con 48 nucleos.
float n;
int c;
n=100.0;
c=0;
while(c
#5 Con concurrencia: secciones críticas, semáforos, mutex, paso de mensajes, memoria compartida... Y algoritmos que sean paralelos!
![:lol: lol](https://cdn.mnmstatic.net/v_149/img/menemojis/36/lol.gif)
Ejemplo:#14
#13 Lo que quieres sacar es la raíz cuadrada de c? Pues repartiendo 10000 entre el número de procesos, cada uno calcule se cacho, y luego se lo pasen a proceso director.
Simplemente mirad:ctrl+alt+supr->rendimiento->totales: Procesos y subprocesos. El procesamiento paralelo lleva muuuucho entre nosotros!
#15 , #19
podrás compartir memoria, podrás dividir una tarea en hilos si puedes, (en este caso es imposible), pero nunca una operación que depende de un resultado anterior puede ejecutarse paralelamente a algo anterior, es una obviedad como una casa.
que haya una API que haga cosas por ti y que para en ciertos casos te pueda valer no quiere decir que vaya a hacer milagros.
mejor lo pruebas y lo compruebas, mide el tiempo a ver si de verdad estás acelerando algo
pd: el c++; te sobra
#22,#21
No hombre, que no sobra, ni caí en la trampa.
Está pensao para correr en dos núcleos, sincronizarlo, y cada núcleo escribe sobre n mientras el otro prepara la siguiente operación, pero me faltaba el private c en
#pragma omp parallel for private c
Mañana os explico por qué la tierra es plana.
#39 "mientras el otro prepara la siguiente operación"
#40, repetiré el comentario #39: menuda cagada puse en el comentario #19.
#13, como bien dice #14 , usando openmp:
float n;
int c;
n=100.0;
c=0;
#pragma omp parallel for
for(c=0;c
#19 Eso no te funciona porque cada iteración necesita el resultado de la anterior. Te ha puesto un claro ejemplo de algoritmo que no puede correr en paralelo y has caido en la trampa
Mi comentario en #20 iba para #13
Y aprovecho para responderte #22 Sí, hay cosas que no puedes hacer (aunque a veces un desarrollo matemático del problema puede dar lugar a una vía sí paralelizable. Un ejemplo típico son los algoritmos de sorting, con la versión paralela del QuickSort), pero no se trata de que no interese hacerlos ma rápidos, sino de que se está volviendo inviable. Y con todo, puesto que en un ordenador se ejecutan múltiples tareas, el poder asignar aunque solo sea un núcleo en exclusiva a una tarea (con su cache de memoria dedicada) ya es una enorme ventaja y aumenta el rendimiento de esa tarea concreta.
En resumen, la objeción es válida, pero la situación de la tecnología marca el camino de multiprocesadores y multicores, y a eso hay que adaptarse si queremos seguir aumentando la potencia de cálculo
Exacto, el que ha puesto #13 es un claro ejemplo de dependencia de datos, pero por cada punto de un programa en que se da dependencia de datos, hay otros 75000 en que no se da y se puede usar la paralelización.
y sí, como dice #23, el desarrollo matemático de algoritmos da resultados sorprendentes... el problema es que muchas veces a los informáticos se nos escapa tres pueblos el tema y necesitamos de matemáticos para ello.
#13 Si el programador hace todo eso en lugar de n=1 es pa matarlo, eh?
Ya fuera de bromas, sí hay 48 cosas paralelizables a nada que te pongas. Mi campo son los gráficos así que el ejemplo más sencillo: raytracing. Y para rasterizar, lo mismo (un polígono por procesador, por ejemplo, aunque esto es más complicado). Pero venga, dejemos los gráficos a la GPU de momento (Larrabe, en un futuro?). Motor físico. De nuevo podemos tener a cada procesador calculando cosas (eg: detección de colisiones, posiciones para nuevos elementos) de nuevo, con mucho cuidado, claro. Y bueno, hay más casos.
Evidentemente con 48 núcleos no vas a acelerar el Word (¿hace falta?) pero sí otro tipo de programas.
Eso sí, no lo veo muy útil. No le veo sentido como procesador de propósito general, vamos. Joer, ¡que muchos tenemos 4 núcleos y tener los 4 funcionando a la vez es todo un evento!
#26 exacto
aun no entiendo pq hay tanta gente que dice "se reparten el trabajo entre los cores, ya se encarga el SO de hacerlo" y se quedan tan anchos".
Otra pega que les veo es que no todos los hilos pueden necesitar la misma carga de CPU, no todas las cpus tienen la misma disponibilidad puesto que ya pueden estar corriento otros hilos, lo cual hace mucho mas engorroso y al final ineficiente el como programar.
#26 A ver, es que yo parto de la base de que los desarrollos se hacen para aplicaciones con requerimientos de computación elevados. Si a los fabricantes les tira investigar modos de mejorar el rendimiento es por aquellos procesos que a día de hoy precisan dicho aumento (predicción meteorológica, calculos en áreas de ingenieria y física, incluso se retroalimenta, pues el proceso de enrutamiento en el diseño de procesadores buscando el camíno óptimo para mejorar la velocidad consume una barbaridad). Al final parte e ello acaba por llegar al escritorio tras tres o cuatro años, pero creo que es de ilusos pensar que nadie desarrolle dichas tecnologías para los usuarios normales. Si partimos de esa premisa equivocada, claro que no aporta demasiado. Ahora, poder predecir el tiempo que va a hacer en una región dentro de tres días en menos de esos tres días, sí es importante
#32 Igual soy iluso, pero yo no estoy tan seguro de que todo el departamento de R&D de Intel esté dedicado a la computación científica. Con todos los procesadores de propósito general que venden no sé yo qué les dará más dinero, y eso es lo que interesa investigar y mejorar, aquello que más vendes (a menos que busques diversificar, claro).
En cualquier caso, como dije "no le veo sentido como procesador de propósito general", obviamente para computación científica sí.
#33 Insisto en que n=1 es mejor
#33 "es dificilmente optimizable por que hay una dependencia del valor del bucle anterior"
esto es en el fondo lo que quería decir, como ya dije, el ejemplo era muy chorra, agradezco el apunte, pero como ya ha dicho #26, lo suyo es poner n=1, no tiene ningún sentido práctico.
#13 Veo lo que dices, este algorismo asi, es dificilmente optimizable por que hay una dependencia del valor del bucle anterior. Lo que se hace en estos casos es utilizar la tecnica de la reducción de potencia, que consiste en modificar el bucle por una instrucción de menos coste equivalente. Esta cambio o bien la hace el optimizador del compilador o bien manualmente el programador.
En esta caso podemos ver que aplicar 2 veces la raiz quadrada a un número es equivalente a aplicar directamente una raiz quarta. Aplicar 3 veces la raiz quadrada es equivalente a aplicar una raiz octava, es decir aplicar n veces la raiz és lo mismo que una raiz de 2 elevado a N.
El algoritmo quedaría asi:
float n;
n=100.0;
n=pow(n,1/(exp(2,10000));
#5 ¿Con forks y threads por ejemplo?
#5 con "threats" #8 y con tenedores también
#5 Con amenazas. Hace algún tiempo, tuve un televisor de aquellos de tubo que me "regalaron" mis padres para que el comedor de mi piso de alquiler tuviese algo más que suelo y una alfombra. El caso es que el televisor en sí funcionaba cuando quería y había momentos en los que, con el límite de la paciencia sobrepasado, me arrastraba por la alfombra en dirección a la pantalla y, justo cuando mi mano se encontraba bien alzada, dispuesto a propinarle un buen "golpe mágico", la jodía se arreglaba.
En conclusión, los aparatos electrónicos son sensibles a las amenazas.
#5 Además de lo que afirmas, que es cierto, yo añadiría el acceso a la memoria. Da igual cuantos procesadores tengas que esto no va a correr más rápido de lo que es capaz de leer los datos de la memoria.
#5 programando en MPI u OpenMP, por ejemplo
pero claro... para eso hay que pensar antes.
#5 Y como reduces el tamaño de los transistores para que puedan ser 48 veces mas rápidos si el tamaño de puerta ya ronda la decena de átomos? El multiproceso es complejo, y puede que dos núcleos no den el doble de rendimiento que uno el doble de rápido, pero es la vía que nos queda hasta que los dispositivos optoelectrónicos u otros mas esotéricos puedan llegar al mercado de consumo. Y me temo que incluso después de eso será necesario.
PD: OpenMP y MPI me sorprendieron (no tengo una formación muy profunda en programeción), en especial trabajando juntos. Es alucinante la potencia de cálculo que puedes conseguir con un conjunto de máquinas heterogéneo, incluso aunque algunas de ellas sean casi reliquias.
Estamos hablando de un procesador de 48 nucleos, donde cada nucleo es multihilo. Sacar rendimiento a eso es una autentica odisea. De hecho, es un problema tan grande que esta empezando a ser el tema estrella en las conferencias/congresos de arquitectura de computadores. El futuro pasa, inevitablemente, por hacer lo mismo pero en menos espacio. 8 nucleos donde antes cabian 4, 16 donde antes cabian 8. En unos años llegaremos a tener procesadores con cientos de nucleos multihilo, y crear aplicaciones que saquen rendimiento de eso va a ser muy muy complicado.
Y por no hablar de cuando combinemos en un mismo equipo varios de estos procesadores.... ¿Como le sacamos rendimiento a eso? Ahi no vale ni OpenMP ni arquitecturas de memoria compartida. Ahi vale programacion paralela pura y dura. Pasa por definir (o redefinir) un nuevo paradigma de programacion en el que se ha de conseguir paralelizar todo a unos niveles brutales. Por eso me hace gracia ver como algunos arreglan todos esto con un: "Usando threads y forks", o "Usando OpenMP". A ver como programan una aplicacion para correr en 15 procesadores de 150 nucleos multihilo, en el que cada uno de los procesadores mantenga una carga de trabajo del 100% hasta el fin de la ejecucion del programa.
¿Consume el mismo "poder"?![:lol: lol](https://cdn.mnmstatic.net/v_149/img/menemojis/36/lol.gif)
Creo que querías decir "energía"
#4 No. Mala traducción online. Poder = Power = Potencia
Un poco más de información y un vídeo
http://www.intel.com/pressroom/archive/releases/20091202comp_sm.htm
HOYGAN KUANTOS PROSESADORES NESESITO PARA JUAR I AVLAR X EL MSM.ESCRIVAM ME A JOSEPODARKNES666@HOTMAIL.COM GRASIA DANTE BRASO
jodo, vaya avión
Bien, podre cargar 47 videos de pr0n con el mozilla a la vez mientras trabajo con la calculadora (cientifica)
Ya les hay de 100 http://www.xataka.com/otros/procesadores-de-100-nucleos-existir-existen
¿Desde hace cuanto que no funciona un único proceso en un SO de escritorio? Puede que haya un proceso principal para el usuario, pero el ordenador está haciendo tareas de fondo todo el rato.
Pero no son bombillas de bajo consumo
Info en español: http://www.eweekeurope.es/noticias/intel-muestra-su-primer-procesador-de-48-nucleos-1833
48 nucleos => 48 vídeos de pr0n simultáneos.
ole ole y ole ese desarroyo tecnológico guapo!
Como narices pasan de los 4 nucleos que hay ahora a los 48?????
Nos lo tenían escondido para Navidad?
Cual será el precio????
Cuando pasemos de bits a qubits y de lo digital a lo cuántico si que van a sudar los programadores...
#41 Dudo mucho (y los profesores de computación cuántica que he tenido también) que los ordenadores cuánticos se conviertan en ordenadores de propósito general. Más que nada porque no tienen ninguna ventaja en multitud de ocasiones.
)
No obstante, si finalmente lo hacen... no sé si sudarán o se suicidarán (hablo en tercera persona porque lo que es seguro es que a mi no me toca fijo
¡48 núcleos!. ¡Lo bien que nos van a poder controlar por Internet!...
total,el windows 7 se va a colgar igual...