Quais algoritmos de hash são paralelizáveis? Otimizando o hash de arquivos grandes utilizando CPUs com vários núcleos

Estou interessado em otimizar o hash de alguns arquivos grandes (otimizar a hora do relógio de parede). A E / S já foi otimizada o suficiente e o dispositivo de E / S (SSD local) possui apenas 25% da capacidade, enquanto um dos núcleos da CPU está completamente esgotado.

Eu tenho mais núcleos disponíveis e, no futuro, provavelmente terá ainda mais núcleos. Até agora, só consegui explorar mais núcleos se precisar de vários hashes do mesmo arquivo, digamos um MD5 AND um SHA256 ao mesmo tempo. Posso usar o mesmo fluxo de E / S para alimentar dois ou mais algoritmos de hash e faço os algoritmos mais rápidos de graça (até a hora do relógio da parede). Como eu entendo a maioria dos algoritmos de hash, cada novo bit altera todo o resultado, e é inerentemente desafiador / impossível de fazer em paralelo.

Algum dos algoritmos de hash convencionais é paralelamente agradável?
Existe algum hash fora do mainstream que seja paralelizável (e que tenha pelo menos uma amostra de implementação disponível)?

Como as futuras CPUs tenderão a ter mais núcleos e um nivelamento na velocidade do clock, existe alguma maneira de melhorar o desempenho do hash de arquivo? (que não seja overclocking resfriado a nitrogênio líquido?) ou é inerentemente não-paralelizável?

questionAnswers(3)

yourAnswerToTheQuestion