Tecnologias de Machine Learning, Deep Learning e Big Data roubaram a cena e muito da evolução destas tecnologias se deve à capacidade de processamento veloz. A velocidade pode ser incrementada realizando um aumento razoável de frequência do processador, porém há um limite físico para isso. Também é possível alterar a arquitetura do hardware para paralelizar o trabalho, porém também existem limites de engenharia. Estas abordagens se aproximam muito da força bruta, e tentem a ser facilmente subjugadas pelo paralelismo de software. Em especial, o paralelismo de algoritmos e estruturas de dados consegue, na maioria das vezes, promover reduções de complexidade computacional significativas, tornando essa abordagem mais do que desejável. No livro Pensando em Paralelo, Marcos Negreiros, Ricardo Nobre, Flávio Mello, e Felipe Muller tratam os tradicionais algoritmos e estruturas de dados e os reescrevem, produzindo não somente pseudo-códigos, mas implementações robustas de paralelismo.
Este livro aborda problemas relacionados com a Programação Paralela de forma aprofundada e com viés prático. O estudo deste paradigma de programação é uma necessidade, não só do mercado, mas também da academia. Deve-se a isto à crescente demanda por computação de alto desempenho pelos setores que buscam na computação paralela a resolução de problemas até então considerados insolúveis, isto é, àqueles setores que buscam através do paralelismo uma solução para a redução de complexidade de problemas dos mais diversos tipos envolvendo grande volume de dados e/ou formas combinatórias de resolução. Mesmo para os problemas não combinatoriais, existe uma demanda cada vez maior de capacidade de processamento que é reprimida pelo paradigma sequencial dos processadores convencionais.
Sob esta ótica, o livro aborda os problemas tradicionais relacionados com algoritmos e estruturas de dados apresentando soluções paralelizáveis que reduzem significativamente a ordem de grandeza de suas complexidades computacionais. De modo didático, utiliza a sequência cronológica tradicional na qual são estudados os algoritmos nas universidades e escolas, permitindo ao leitor uma visão clara e bem contextualizada das técnicas de paralelismo para problemas simples e complexos.
O livro aborda o paralelismo conceitualmente, inclui a forma de pensar em paralelo do ponto de vista da complexidade computacional e da máquina de Turing. Analisa alguns dos problema clássicos da computação e da computação geométrica, aborda os problemas combinatórios mais importantes e o problema do caixeiro viajante em separado. Por fim, considera uma perspectiva atual e futura do Paralelismo no Brasil, considerando os aspectos de implantação de estruturas computacionais paralelas no mundo e no país, a abordagem das dificuldades do paralelismo a serem vencidas para se atingir o HexaFlop na década de 2020 e os encaminhamentos necessários para se desenvolver o aprendizado nas Universidades brasileiras com o foco neste paradigma.