英特尔AES - NI指令程序生成器与ECC2K - 130在NVIDIA GPU上的优化
1. 英特尔AES - NI指令程序生成器概述
代码生成器专注于特定子集的问题,对于优化占用大量处理时间且最佳优化方案不明显的小段代码非常理想。像AES - GEN这样的代码生成器,在很多领域都有成功应用,比如Spiral可生成线性变换代码,FFTW能生成离散傅里叶变换代码。
AES - GEN用于生成使用英特尔AES指令的代码。它读取带注释的源代码,通过迭代方法尝试找到在目标硬件上执行速度快的源代码变体。其优点在于能为程序员提供一个有用的实验工具,可对算法进行小的探索性更改,方便不同调度并快速评估,这具有极高的价值。
AES - GEN的一些成果如下:
- 代码性能与规模 :凭借良好的模调度器,AES - GEN能生成执行速度更快的代码,且代码规模不会大幅增加。
- 算法变体实现 :实现了AES CTR、CBC和GCM模式的多种算法变体。其中,AES计数器的标准实现与手工调优的汇编代码性能几乎相同;在Westmere架构上,AES CTR和AES CBC的每轮周期实现速度比英特尔公布的任何代码都快。
- 代码生成灵活性 :使用AES - GEN可以轻松生成处理任意数量输入流的CBC代码,只需在高级C代码中进行更改并重新运行生成器即可。
- 依赖减少策略 :针对循环依赖算法,通过利用异或操作的特性提出了依赖减少策略,取得了良好效果。若在汇编中进行这些更改和测试,将是一项耗时的任务。
-
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



