Hello, I'm a new developer and decided to go from writing small good for nothing programs for practice, to actually making something useful, a RAR-PDF etc password recovery tool. The original plan was to make a simple program written in python that utilizes the CPU, but since I managed to interest some friends of mine in the project, we've decided to make an industry "competitive" (and with competitive I mean something worth someone's time) program that utilizes the GPU, since modern graphics' cards can test roughly 70 times more keys per second than modern CPUs. So it all comes down to how I can utilize a GPU's computing power, I know that with nvidia cards I can use CUDA but I'm kind of lost when it came to AMD cards, since I couldn't find a clear answer. My research up until now is that I should use OpenCL? I don't know, I'm pretty lost, from the looks of it, it seems more like it enhances the GPU performance rather than enhancing a program's performance with the GPU. Any and all answers are appreciated.
OpenCL has a clear advantage when portability is the concern. Some of the key features of OpenCL are:
With GPUOpen, AMD has started an initiative to open source many tools and software that greatly help the developers for creating GPU computing applications for great performance (mainly targeting for AMD hardware/platform). For more information about those computing tools/software, please check this link: https://gpuopen.com/professional-compute/