英特尔处理器允许更快地计算SHA512,因为他们进行了SIMD优化。我想利用Ruby的优势。然而,SHA512的实现并不使用SIMD https://github.com/ruby/ruby/blob/trunk/ext/digest/sha2/sha2.c,对吗?
有没有任何方法可以统一使用SIMD优化来计算SHA512?
发布于 2016-05-19 07:44:20
英特尔于2012年11月发布了一篇关于SIMD加速SHA512的论文。
他们说他们的AVX版本在沙桥i7 2600上有8.59个周期/字节。他们没有发布他们的AVX2 / rorx (BMI2)版本的结果,因为Haswell还没有发布。我没有跟踪到源代码的链接,大概是C的内部代码。
要在ruby的源代码中实现它,您需要处理这样的情况:ruby运行在不支持快速版本使用的指令集扩展的CPU上,然后返回到纯C或SSE2 2版本。
您最好的选择可能是让ruby使用OpenSSL、或类似的库来获得SHA-512和许多其他函数的手工调优版本。密码库已经为许多不同的平台提供了手工调优的asm版本。
与Skylake (和戈德蒙特)一起,英特尔推出了加速SHA-1和SHA-256的新指令。不幸的是,我没有看到任何关于能够使用这些指示的SHA-512。
https://stackoverflow.com/questions/37307936
复制相似问题