Я заинтересован в оптимизации хэширования некоторых больших файлов (оптимизация времени настенных часов). Уровень ввода-вывода уже достаточно оптимизирован, и устройство ввода-вывода (локальный SSD) используется только около 25% емкости, а один из ядер процессора полностью отключен.
У меня есть больше ядер, и в будущем, вероятно, будет еще больше ядер. До сих пор я мог использовать больше ядер, если мне понадобилось несколько хэшей одного и того же файла, скажем, MD5 и SHA256 в одно и то же время. Я могу использовать один и тот же поток ввода-вывода для подачи двух или более алгоритмов хэширования, и я получаю более быстрые алгоритмы, сделанные бесплатно (до настенных часов). Поскольку я понимаю большинство алгоритмов хэширования, каждый новый бит изменяет весь результат, и по своей сути это сложно или невозможно сделать параллельно.
Разрешены ли какие-либо из алгоритмов хеш-мейнстрима? Существуют ли какие-либо обычные хеши, которые являются параллелизуемыми (и которые имеют хотя бы выборочную реализацию)?
Как будущие процессоры будут ориентироваться на большее количество ядер и выравнивание в тактовой частоте, есть ли способ улучшить производительность хэширования файлов? (кроме разгонного охлаждения с жидким азотом?) или он по своей сути непараллелизуем?