PAES (Parallel AES or Paolo’s AES) is an OpenCL implementation of AES. I wrote it as thesis for my master degree and its goal was mostly to explore OpenCL peculiarities, ranging from application design issues to software tricks or bugs.
The result isn’t production ready at all because I used an AES reference implementation that followed the algorithm description step by step, while the most used AES implementations often refactor the standard algorithm in order to exploit machine’s performances at their best. On the other hand, PAES works nicely and it’s a good example of OpenCL-based computing.
Anyway the result of my work is pretty remarkable because, thanks to OpenCL, PAES can run flawlessly both on CPUs and GPUs, exploiting all their cores, with a single source code base. The main goal of this thesis project was to gather knowledge both about OpenCL and multi/many-core architectures to be used by a joint project between Perugia’s University departments of Physics, Chemistry and Computer Science. The results are pretty encouraging: while OpenCL has its rough spots, it’s perfectly usable and can bring great results.
The host part of the software and the reference AES serial implementation are written in C99, the kernel in the OpenCL C dialect; there are also some correctness and performances tests written in Python and the thesis text and presentation, both written in LaTeX and in Italian.