A recessão global no final da Lei de Moore - página 7

 
Vladimir:

GPU = unidade de processamento gráfico (produzida principalmente pela Nvidia)

CPU = unidade central de processamento (fabricada pela Intel ou AMD)

Ambos são processadores. Você não entendeu? Chame a GPU de uma placa ou o que você quiser, mas é um processador com 3000 núcleos se você tiver o modelo mais recente. Se você tem um computador é uma GPU, leia em sua documentação qual modelo você tem e quantos núcleos ele tem.

CPU e GPU são CPUs diferentes, ou seja, CPU.
 
Vladimir:

Sem melancolia, mas com medo do futuro, tanto o meu como o dos outros.

Por que o medo? Qual é o problema?

Não haverá computadores novos, e daí? Tudo será como era antes e não veremos outro Windows sem mais transparência, mas com uma interface brilhante que consome todos os recursos recém-adicionados.

 
Vladimir:

GPU = unidade de processamento gráfico (produzida principalmente pela Nvidia)

CPU = unidade central de processamento (feita pela Intel ou AMD)

Ambos são processadores. Você não entendeu? Chame a GPU de uma placa ou o que você quiser, mas é um processador com 3000 núcleos se você tiver o modelo mais recente. Se você tem um computador é uma GPU, leia em sua documentação qual modelo você tem e quantos núcleos ele tem.

Falando sobre a CPU. O cartão pode ser isto, pode ser um cartão simples, e a CPU ainda estará lá. Onde estão as CPUs com 3000 núcleos?
 
Dmitry Fedoseev:
A conversa é sobre a CPU. Uma placa pode ser isto, uma simples placa pode ser aquilo, e ainda haverá uma CPU. Onde estão as CPUs com 3000 núcleos?
Estou curioso sobre isso também.
 
Dmitry Fedoseev:
A conversa é sobre a CPU. Um cartão pode ser isto, um simples cartão pode ser aquilo, e ainda haverá uma CPU. Onde estão as CPUs com 3000 núcleos?
Não entendo o objetivo do argumento. Você argumentou que as CPUs têm evoluído para ter mais núcleos. Eu concordo e dei um exemplo de uma GPU com 3000 núcleos. E você quer saber por que não há CPU com o mesmo número de núcleos, estou certo? E o que você não gosta em GPUs? A CPU pode ser a mesma ou diferente. Se você precisar de muitos núcleos, então compre a GPU correspondente e programe nela. Mas se você não precisa de muitos núcleos, então não vale a pena discutir sobre isso. Meu ponto de vista é que o desenvolvimento de processadores no caminho do multicore foi iniciado em 2004-2005. Portanto, é improvável que seja uma novidade depois que a lei de Moore tiver terminado. Se você não precisa de núcleos agora, também não precisará deles depois de 2020.
 
Vladimir:
Não entendo o objetivo do argumento. Você argumentou que os processadores evoluíram ao aumentar o número de núcleos. Eu concordo e dei um exemplo de GPU com 3000 núcleos. E você quer saber por que não há CPU com o mesmo número de núcleos, estou certo? E o que você não gosta em GPUs? A CPU pode ser a mesma ou diferente. Se você precisar de muitos núcleos, então compre a GPU correspondente e programe nela. Mas se você não precisa de muitos núcleos, então não vale a pena discutir sobre isso. Meu ponto de vista é que o desenvolvimento de processadores no caminho do multicore foi iniciado em 2004-2005. Portanto, é pouco provável que seja uma novidade depois que a lei de Moore tiver terminado. Se você não precisa de núcleos agora, também não precisará deles depois de 2020.
Lembra-me a anedota sobre o corte de suas amígdalas... ...com um autogen... através de um zp.
 
Dmitry Fedoseev:
Lembra-me a anedota sobre o corte de amígdalas... com um autógeno... através de um zp.

É mais fácil escrever um programa para núcleos de CPU paralelos do que para GPU? O problema é o mesmo: o programador tem que rachar a cabeça e decidir quais peças de um programa podem ser paralelas, escrever um código de paralelismo especial e assim por diante. A maioria dos programadores não sofre e escreve programas de núcleo único sem torções. Qual é o problema aqui: falta de núcleos ou programas que utilizam multi-core? Acho que é o último. Mesmo se eu lhe der uma CPU com 3000 núcleos, você ainda escreverá programas de um só núcleo, já que não há diferença na dificuldade de escrever programas para 3000 núcleos e para 4 núcleos. O que é necessário é um novo compilador que possa detectar automaticamente pedaços de código que possam ser paralelos. Mas novamente o progresso na criação de tal compilador não depende do hardware mas da vontade dos programadores de escrever tal compilador. Ao longo desta linha, estou afirmando que a possibilidade de criar novos equipamentos após 2020 está diminuindo devido aos avanços na tecnologia de semicondutores e à redução do tamanho e do consumo de energia dos transistores. Novos materiais e transístores ainda estão no horizonte. A Intel tentou criar a geração Knight Hill de processadores com tecnologia de 10nm em 2016 e adiou essa geração para o final de 2017. A Samsung também tem problemas com sua tecnologia de 10nm para seus processadores de aplicativos. Já no tamanho de 10nm, os transistores dão apenas uma pequena redução no tamanho e na potência em comparação com 14nm. A dissipação de calor torna-se um grande problema. É necessário um salto de tecnologia. Um dos indicadores da tecnologia é o preço por transistor. Portanto, esse preço estava caindo antes de 28nm, e depois disso começou a subir exponencialmente. Muitas empresas pararam a 28nm por causa do preço. Assim, o progresso para a tecnologia de 10nm e para as 7nm e as últimas 5nm será acompanhado não apenas por questões de calor, mas também por um preço elevado.

 
Agora não há problema de paralelismo, mas somente quando se usa uma CPU. Em C# é feito em 3 segundos. Ao contrário, a questão é que não há necessidade em um grande número de núcleos. Um programa normal e médio não é um grande problema para se fazer paralelismo. Se fizermos muitos núcleos, o único benefício será que muitos programas diferentes poderão ser executados, mas isso não é realmente necessário.
 
Vladimir:

É mais fácil escrever um programa para núcleos de CPU paralelos do que para GPU?

É realmente difícil escrever programas eficientes em GPUs.

De fato, ainda há toda uma área inexplorada em termos de interação entre dispositivos e entre dispositivos e humanos.

Há a área das nuvens, enfiando tudo e todos nelas, a descentralização

Há a área de assistentes inteligentes e dispositivos em geral.

Há a área da realidade aumentada e virtual.

Em suma, exatamente por causa da lei de Moore não haverá recessão, haverá uma busca de novas formas de desenvolvimento. Haverá uma recessão por outro motivo

 
Vladimir:

É mais fácil escrever um programa para núcleos de CPU paralelos do que para GPU? O problema é o mesmo: o programador tem que rachar a cabeça e decidir quais peças de um programa podem ser paralelas, escrever um código de paralelismo especial e assim por diante. A maioria dos programadores não sofre e escreve programas de núcleo único sem torções. Qual é o problema aqui: falta de núcleos ou programas que utilizam multi-core? Acho que é o último. Mesmo se eu lhe der uma CPU com 3000 núcleos, você ainda escreverá programas de um só núcleo, já que não há diferença na dificuldade de escrever programas para 3000 núcleos e para 4 núcleos. O que é necessário é um novo compilador que possa detectar automaticamente pedaços de código que possam ser paralelos. Mas novamente o progresso na criação de tal compilador não depende do hardware, mas do desejo dos programadores de escrever este compilador.

R não tem os problemas descritos.

1. Muito provavelmente, não há necessidade de escrever programas para algoritmos computacionalmente complexos. Tudo é escrito e se um algoritmo computacionalmente complexo (por exemplo, otimização ou boosting) admitir o paralelismo, isto já está implementado. E você não precisa procurá-lo em algum lugar. Um desenvolvedor parte do conteúdo do problema e adequa a ferramenta a este conteúdo, e tudo é implementado na ferramenta ao máximo. A ferramenta possui um sistema de ajuda muito poderoso destinado a tornar a ferramenta menos trabalhosa.

2. Se for necessário para você, por exemplo, executar seções paralelas de um laço, há ferramentas paralelas disponíveis. Ao descrever a sintaxe de tais construções e as condições de uso, você não precisa desperdiçar seu tempo.

3. O programa pode carregar não apenas o núcleo do computador dado, mas também os computadores vizinhos. Isto é sem nuvens, por assim dizer, a partir dos computadores disponíveis.

Os problemas que você descreveu se devem ao fato de que você está indo do ferro, através de linguagens algorítmicas universais e não alcança o problema. Se você for pelo contrário - desde o problema até a escolha da ferramenta, talvez não tenha que discutir o hardware de forma alguma.

É por isso que repito a conclusão que tirei acima: todos estes gigahertz têm muito pouca relação com a eficiência de execução do programa. Assim como não notamos o aumento de gigahertz nos últimos 15 anos, não vamos notar que esses mesmos gigahertz pararam de crescer.