Nada é gratuito. GPGPUs são SIMD. As instruções SIMD nas GPGPUs tendem a ser mais amplas que as instruções SIMD nas CPUs. As GPGPUs tendem a ser multithread de granulação fina (e possuem muito mais contextos de hardware que CPUs). As GPGPUs são otimizadas para streaming . Eles tendem a dedicar uma porcentagem maior de área a unidades de ponto flutuante, uma porcentagem menor de área a armazenar em cache e uma porcentagem menor de área a desempenho inteiro.
Vamos fazer uma comparação. O núcleo da Intel i7-5960x possui 8 núcleos, cada um com SIMD de 4 larguras (precisão dupla), rodando a 3 GHz (3,5 GHz turbo), um cache L3 de 20M, consome 356mm ^ 2 e 140W e custa US $ 1000. Portanto, 8 * 4 * 3 * 4 = 384 GFlops de dupla precisão. (O 4x extra é porque você pode fazer duas adições de multiplicação por fusão por faixa vetorial por ciclo.) Ele pode executar 768 GFlops de precisão única. Isso equivale a 1,08 DP GFlops / mm ^ 2 e 2,75 DP GFlops / Watt. Há também cerca de 57,5 KB / mm ^ 2 de cache no chip.
A GeForce GTX Titan Black da NVidia possui 15 SMXs, cada um com SIMD de precisão dupla de 32 largos, rodando a 890MHz (980MHz turbo), 3,5M de cache L1 + L2, consome 561mm ^ 2, 250W e custa US $ 1000. Portanto, 15 * 32 * .89 * 4 = 1709 GFlops de dupla precisão. (O mesmo 4x de duas adições de multiplicação por faixa por vetor por ciclo.) Ele pode executar 5126 GFlops de precisão única. Isso equivale a 3,05 DP GFlops / mm ^ 2 e 6,8 DP GFlops / Watt. Portanto, 3x a densidade do ponto flutuante DP por unidade de área e 3x a eficiência de energia do ponto flutuante DP. E a troca? 6,4 KB / mm ^ 2 de cache no chip. Cerca de 9x menos denso que o CPU.
Portanto, a principal diferença é que a GPU escolheu um saldo de área que favorece fortemente o ponto flutuante (e especialmente o ponto flutuante de precisão única) sobre o cache. Mesmo ignorando o fato de que você precisa copiar coisas entre a CPU e a GPU para fazer E / S, o desempenho da GPU em comparação à CPU depende do programa que você está executando.
Se você tiver um programa de ponto flutuante paralelo a dados com muito pouca divergência de controle (todas as faixas vetoriais estão fazendo a mesma coisa ao mesmo tempo) e seu programa estiver em fluxo contínuo (não pode se beneficiar do armazenamento em cache), a GPU será sobre 3x mais eficiente por unidade de área ou por Watt. Mas se você tiver uma quantidade significativa de controle divergente, um trabalho que não seja paralelo a dados ou se beneficiar de grandes estruturas de dados com muitas leituras, a CPU provavelmente terá um desempenho melhor.