GPU上典型存储器难散列函数的优化
发布时间:2021-06-10 19:37
由于占用存储器容量大和访存频繁的特点,抗ASIC攻击的存储器难散列函数有可能成为下一代口令散列函数的基础。针对存储器难散列函数的口令恢复问题,基于GPU体系结构的特点提出了性能优化方法:一方面分析和比较了交织存储和顺序存储2种方法的存储器带宽利用率,另一方面使用多个线程完成一个散列函数实例计算,并通过warp混洗指令提升线程间数据交换的性能。基于4线程顺序存储方法,在GPU上优化实现了Scrypt和Argon2d 2种存储器难散列函数,其中Scrypt的性能达到了hashcat软件实现性能的2.03倍。与此同时,还分析了存储器难散列函数中存储器容量增加对性能的影响,指出可执行的线程数减少是影响GPU上存储器难散列函数性能的主要原因。
【文章来源】:计算机工程与科学. 2020,42(10)北大核心CSCD
【文章页数】:8 页
【部分图文】:
Scrypt结构
ROMix算法的数据依赖图
交织存储方式中,一个warp中的32个线程同时计算32个Scrypt散列函数实例,且每个线程按照32位无符号整数的方式并行访问存储器。ROMix算法的第1阶段,32个线程发出的存储器访问地址处于一个128字节的区段中,GPU的带宽利用率为100%。但是,在第2阶段中,32个线程可能访问不同的块,导致32个地址处于不同的区段中。在最坏的情况下,所需要读取的数据分布于32个不同的区段,此时存储器带宽的利用率仅为1/32。在顺序存储方式中,每个线程计算一个Scrypt实例且仅使用32位存储器访问时,存储器带宽利用率为1/32。为了避免这个问题,可以使用16字节的存储器访问。CUDA的程序设计指导[20]指出,如果warp中每个线程均访问16个字节存储器,则GPU产生4个存储器访问请求,且每个请求完成8个线程的存储器访问。如果这8个线程计算不同的实例,其地址将处于不同的区段,在Scrypt的2个阶段中存储器带宽的利用率均为1/8。
本文编号:3222997
【文章来源】:计算机工程与科学. 2020,42(10)北大核心CSCD
【文章页数】:8 页
【部分图文】:
Scrypt结构
ROMix算法的数据依赖图
交织存储方式中,一个warp中的32个线程同时计算32个Scrypt散列函数实例,且每个线程按照32位无符号整数的方式并行访问存储器。ROMix算法的第1阶段,32个线程发出的存储器访问地址处于一个128字节的区段中,GPU的带宽利用率为100%。但是,在第2阶段中,32个线程可能访问不同的块,导致32个地址处于不同的区段中。在最坏的情况下,所需要读取的数据分布于32个不同的区段,此时存储器带宽的利用率仅为1/32。在顺序存储方式中,每个线程计算一个Scrypt实例且仅使用32位存储器访问时,存储器带宽利用率为1/32。为了避免这个问题,可以使用16字节的存储器访问。CUDA的程序设计指导[20]指出,如果warp中每个线程均访问16个字节存储器,则GPU产生4个存储器访问请求,且每个请求完成8个线程的存储器访问。如果这8个线程计算不同的实例,其地址将处于不同的区段,在Scrypt的2个阶段中存储器带宽的利用率均为1/8。
本文编号:3222997
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/3222997.html