Recesión mundial por el fin de la Ley de Moore - página 7

 
Vladimir:

GPU = unidad de procesamiento gráfico (producida principalmente por Nvidia)

CPU = unidad central de procesamiento (fabricada por Intel o AMD)

Ambos son procesadores. ¿No lo entiendes? Llama a la GPU tarjeta o lo que quieras pero es un procesador con 3000 núcleos si tienes el último modelo. Si tienes un ordenador es una GPU, lee en su documentación qué modelo tienes y cuántos núcleos tiene.

La CPU y la GPU son diferentes, me refiero a la CPU.
 
Vladimir:

No hay melancolía, sino miedo por el futuro, tanto el mío como el de los demás...

¿Por qué el miedo? ¿Cuál es el problema?

No habrá nuevos ordenadores, ¿y qué? Todo volverá a ser como antes y no veremos otro Windows ya no transparente, sino con una interfaz brillante que se come todos los recursos recién añadidos.

 
Vladimir:

GPU = unidad de procesamiento gráfico (producida principalmente por Nvidia)

CPU = unidad central de procesamiento (fabricada por Intel o AMD)

Ambos son procesadores. ¿No lo entiendes? Llama a la GPU tarjeta o lo que quieras pero es un procesador con 3000 núcleos si tienes el último modelo. Si tienes un ordenador es una GPU, lee en su documentación qué modelo tienes y cuántos núcleos tiene.

Hablando de la CPU. La tarjeta puede ser esto, puede ser una simple tarjeta, y la CPU seguirá estando ahí. ¿Dónde están las CPUs con 3000 núcleos?
 
Dmitry Fedoseev:
La charla es sobre la CPU. Una tarjeta puede ser esto, una simple tarjeta puede ser aquello, y seguirá habiendo una CPU. ¿Dónde están las CPUs con 3000 núcleos?
Yo también tengo curiosidad por eso.
 
Dmitry Fedoseev:
La charla es sobre la CPU. Una tarjeta puede ser esto, una simple tarjeta puede ser aquello, y seguirá habiendo una CPU. ¿Dónde están las CPU con 3000 núcleos?
No entiendo el sentido del argumento. Has argumentado que las CPUs han evolucionado para tener más núcleos. Estoy de acuerdo y puse un ejemplo de una GPU con 3000 núcleos. Y quieres saber por qué no hay ninguna CPU con el mismo número de núcleos, ¿tengo razón? ¿Y qué es lo que no te gusta de las GPU? La CPU puede ser la misma o diferente. Si necesitas muchos núcleos, compra la GPU correspondiente y programa en ella. Pero si no necesitas muchos núcleos, no tiene sentido discutirlo. Mi punto de vista es que el desarrollo de los procesadores en el camino del multinúcleo se inició en 2004-2005. Así que es poco probable que sea una novedad una vez que la ley de Moore haya terminado. Si no necesita núcleos ahora, tampoco los necesitará después de 2020.
 
Vladimir:
No entiendo el sentido del argumento. Has argumentado que los procesadores han evolucionado aumentando el número de núcleos. Estoy de acuerdo y puse un ejemplo de GPU con 3000 núcleos. Y quieres saber por qué no hay ninguna CPU con el mismo número de núcleos, ¿tengo razón? ¿Y qué es lo que no te gusta de las GPU? La CPU puede ser la misma o diferente. Si necesitas muchos núcleos, compra la GPU correspondiente y programa en ella. Pero si no necesitas muchos núcleos, no tiene sentido discutirlo. Mi punto de vista es que el desarrollo de los procesadores en el camino del multinúcleo se inició en 2004-2005. Así que es poco probable que sea una novedad una vez que la ley de Moore haya terminado. Si no necesita núcleos ahora, tampoco los necesitará después de 2020.
Me recuerda a la anécdota de cortarse las amígdalas... ...con un autógeno... a través de un zp.
 
Dmitry Fedoseev:
Me recuerda a la anécdota de cortar las amígdalas... con un autogenoma... a través de un zp.

¿Es más fácil escribir un programa para los núcleos paralelos de la CPU que para la GPU? El problema es el mismo: el programador tiene que devanarse los sesos y decidir qué partes de un programa pueden paralelizarse, escribir un código especial de paralelización, etc. La mayoría de los programadores no sufren y escriben programas de un solo núcleo sin vueltas. ¿Cuál es el problema en este caso: la falta de núcleos o los programas que utilizan varios núcleos? Creo que es esto último. Incluso si te doy una CPU con 3000 núcleos seguirás escribiendo programas de un solo núcleo ya que no hay diferencia en la dificultad de escribir programas para 3000 núcleos y para 4 núcleos. Lo que se necesita es un nuevo compilador que pueda detectar automáticamente los trozos de código que pueden ser paralelos. Pero, de nuevo, el progreso en la creación de un compilador de este tipo no depende del hardware, sino de la voluntad de los programadores de escribir dicho compilador. A lo largo de este hilo estoy afirmando que la posibilidad de crear nuevo hardware después de 2020 está disminuyendo debido a los avances en la tecnología de semiconductores y la reducción del tamaño y el consumo de energía de los transistores. Los nuevos materiales y transistores siguen en el horizonte. Intel intentó crear la generación de procesadores Knight Hill con tecnología de 10nm en 2016 y pospuso esa generación hasta finales de 2017. También Samsung tiene problemas con su tecnología de 10nm para sus procesadores de aplicaciones. Ya con un tamaño de 10nm, los transistores sólo ofrecen una pequeña reducción de tamaño y potencia en comparación con los 14nm. La disipación del calor se convierte en un gran problema. Es necesario un salto tecnológico. Uno de los indicadores de la tecnología es el precio por transistor. Por tanto, ese precio estaba bajando antes de los 28nm, y después empezó a subir exponencialmente. Muchas empresas se detuvieron en los 28nm por el precio. Así pues, el avance hacia la tecnología de 10nm y, a continuación, hacia la de 7nm y la última de 5nm irá acompañado no sólo de problemas de calor, sino también de un precio elevado.

 
Ahora no hay ningún problema para el paralelismo, pero sólo cuando se utiliza una CPU. En C# se hace en 3 segundos. Más bien, la cuestión es que no es necesario un gran número de núcleos. Un programa normal y corriente no es un gran problema para paralelizar. Si hacemos muchos núcleos, el único beneficio será que se pueden ejecutar muchos programas diferentes, pero no es realmente necesario.
 
Vladimir:

¿Es más fácil escribir un programa para los núcleos paralelos de la CPU que para la GPU?

Es realmente difícil escribir programas eficientes en las GPU.

De hecho, todavía hay todo un campo sin explotar en lo que respecta a la interacción entre dispositivos y entre dispositivos y seres humanos.

Está el área de las nubes, el meter todo y a todos en ellas, la descentralización

Está el ámbito de los asistentes y dispositivos inteligentes en general.

Existe el ámbito de la realidad aumentada y virtual.

En resumen, exactamente por la ley de Moore no habrá recesión, habrá una búsqueda de nuevas formas de desarrollo. Habrá recesión por otra razón

 
Vladimir:

¿Es más fácil escribir un programa para los núcleos paralelos de la CPU que para la GPU? El problema es el mismo: el programador tiene que devanarse los sesos y decidir qué partes de un programa pueden paralelizarse, escribir un código especial de paralelización, etc. La mayoría de los programadores no sufren y escriben programas de un solo núcleo sin vueltas. ¿Cuál es el problema en este caso: la falta de núcleos o los programas que utilizan varios núcleos? Creo que es esto último. Incluso si te doy una CPU con 3000 núcleos seguirás escribiendo programas de un solo núcleo ya que no hay diferencia en la dificultad de escribir programas para 3000 núcleos y para 4 núcleos. Lo que se necesita es un nuevo compilador que pueda detectar automáticamente los trozos de código que pueden ser paralelos. Pero, de nuevo, el progreso en la creación de un compilador de este tipo no depende del hardware, sino del deseo de los programadores de escribir este compilador.

R no tiene los problemas descritos.

1. Lo más probable es que no sea necesario escribir programas para algoritmos computacionalmente complejos. Todo está escrito y si un algoritmo computacionalmente complejo (por ejemplo, la optimización o la potenciación) admite el paralelismo, éste ya está implementado. Y no tienes que buscarlo en algún sitio. Un desarrollador parte del contenido del problema y ajusta la herramienta a este contenido, y todo se implementa en la herramienta al máximo. La herramienta cuenta con un sistema de ayuda muy potente destinado a hacer que la herramienta sea menos laboriosa.

2. Si es necesario, por ejemplo, ejecutar secciones paralelas de un bucle, existen herramientas de paralelización. A la hora de describir la sintaxis de dichas construcciones y las condiciones de uso de las mismas no es necesario perder el tiempo.

3. El programa puede cargar no sólo el núcleo del ordenador dado, sino también los ordenadores vecinos. Esto es sin ninguna nube, por así decirlo, de los ordenadores disponibles.

Los problemas que has descrito se deben a que vas desde el hierro, pasando por los lenguajes algorítmicos universales y no llegas al problema. Si va por el contrario, desde el problema hasta la elección de la herramienta, es posible que no tenga que hablar del hardware en absoluto.

Por eso repito la conclusión que saqué antes: todos estos gigahercios tienen muy poca relación con la eficiencia de ejecución de los programas. Al igual que no hemos notado el aumento de los gigahercios en los últimos 15 años, no notaremos que estos mismos gigahercios han dejado de crecer.