O documento descreve a evolução da arquitetura e programação de GPUs (Graphics Processing Units) para uso em computação paralela. Detalha como as GPUs foram projetadas originalmente para gerar gráficos e como passaram a ser usadas para propósitos gerais à medida que fabricantes adicionaram recursos como memória cache, predição de desvios e capacidade de escrita em qualquer parte da memória. Também apresenta os detalhes da arquitetura de uma GPU moderna com multiprocessadores e otimizações para melhorar o desempenho de acess