论文部分内容阅读
正如我们所知,并行计算已经深入到科研和生活的各个领域,单一计算的速度和效率已经不能满足人们的需求。在未来,许多算法和软件都将重新并行化处理。多核处理器和多线程是我们比较熟悉的通过并行来提高性能的手段。现在,很多国家很多机构都在研究并行化的架构,同时产生了一些比较流行的并行化编程语言。这篇论文旨在利用OpenCL这种并行计算的编程语言,通过实现AES算法的并行性来进行加速,它同时也是API和一种编程环境并能在各个平台移植。它扩展了CPU和GPU的使用来帮助人们获得更高的性能。我们要利用的就是AES算法,它是当今非常流行的块加密算法,并在各个领域广泛使用。我已经分析了在AES算法中的ECB,CFB,CBC,CTR4种模式的并行性,它包括密钥扩展算法和加密算法。之后尝试用GPU上的运算实现并行从而获得更好的性能提升,减少加密时间。在这篇文章中,提出了利用OpenCL实现AES算法,首先介绍了OpenCL的一般架构,包括平台模型,内存模型,执行模型和编程模型。它和CUDA是一种包容关系,也就是说,它的实现的一般过程和CUDA类似。从设备管理到启动kernel,再到执行kernel。之后,我们做了一些优化来提高效率,开始优化主要是围绕在CPU和GPU的数据传输和内存访问。然后用集成之后的程序来加密一些明文,并记录了测试数据,测试数据大小主要是12M,100M和500M。测试结果已经显示利用OpenCL实现能够达到CPU10倍以上的速度提升,当然如果非常小的文件或许并不适合并行,可以直接串行来处理。凡是大量的工作,并行是类似重复的工作,都可以利用GPU做并行来处理。总之,GPU并行计算非常可行。不仅在AES算法,其他很多算法都可以通过这种方法来提高效率。OpenCL这种实现并行计算的语言必将在各个领域充分发展,拥有更广阔的空间。