来自都柏林三一学院的有趣论文:
AES Encryption Implementation and Analysis on Commodity Graphics Processing Units
他们的技术使用 openGL 让 GPU 进行 AES 所需的数字转换。
通过托管的 .NET 库公开此功能(执行流加密)有多难?
我将如何开始?提示?例子?
编辑:有人有使用 CUDA 或 Accelerator 的经验吗?
来自都柏林三一学院的有趣论文:
AES Encryption Implementation and Analysis on Commodity Graphics Processing Units
他们的技术使用 openGL 让 GPU 进行 AES 所需的数字转换。
通过托管的 .NET 库公开此功能(执行流加密)有多难?
我将如何开始?提示?例子?
编辑:有人有使用 CUDA 或 Accelerator 的经验吗?
你可以使用微软的加速器库。它使您可以通过 .NET 访问 GPU。
在研究了更多需要的工作之后,这是一件非常重要的事情(除非你喜欢重写 AES 算法)。然而这是可能的。
可能还有其他 C# API,但我遇到的一个是Bouncy Castle API。您需要做的是采用 Microsoft 的加速器 API,并在 AES 算法的源代码中执行数学运算的任何地方使用它。
我建议围绕 CUDA/(c++/cli) 实现创建一个托管包装器,或者使用 cuda.net 在 c# 中执行除内核本身之外的所有操作。真的没有办法用高级语言来做实际的内核实现,使用 CUDA 你需要使用 c,使用 opengl/directx 你需要使用着色器。要开始使用,请查看 cuda.net 或下载 CUDA SDK 和示例以了解 gpgpu 编程。
另一种选择是Brahma(该网站似乎已关闭 atm)。
网站报价:
什么是梵天?
Brahma 是为 .NET 3.5 框架(在 C# 3.0 中)编写的开源库,用于提供对各种处理器上的并行流计算的高级访问。请注意,此时 Brahma 有一个 GPU 供应商(其重点是 GPGPU),它可以适应在任何类型的处理器上运行。
我可以用梵天做什么?
Brahma 2.0 使用 C# 3.0 的新 LINQ 语法来指定数据的流式转换。使用 Brahma,您可以将在 GPU 上运行的语句和在 CPU 上运行的语句混合在一个方法中!完全不需要胶水代码,只需几行代码即可执行具有干预 CPU 操作的复杂多通道 GPU 计算。所有需要的胶水和着色器代码都是由 Brahma 自动生成的。您需要做的就是编写高级 .NET 代码。
我没有使用它,但我最近刚刚在 .NET Rocks 上收听了一个关于它的播客。如果您不想学习 GPU 着色器语言,这听起来像是一个很好的库。
无论您使用什么将 C# 集成到 GPU,您都应该使用 AES 的 CUDA 实现。他们是最快的。最快的实现看起来来自与您链接的同一个人 - Trinity group。查看现代图形硬件纸上的实用对称密钥密码学。