I have noticed the GPU Programming can be used to speed up processes in many apps - like password cracking in forensic software (like Elcomsoft), video converting software etc. Could anyone please help with clearing somehting up for me?
Q1: Can the GPU’s be used to “speed up” any other applications ? Or does the applications have to be very specific ?
Q2: With Source Code of a software (file converting software) - is it possible to reprogram the code so the application would use GPU acceleration - and finish the job faster ?
I’m not sure if I’m asking about something stupid so please excuse my lack of knowledge. If you need more info to give a better answer please let me know.
CUDA can be used to accelerate any application that has a large amount of parallel calculations to perform. It is not automatic, though. The developer has to rewrite the parallel sections of their code to use CUDA functions to push the required data to the GPU, then operate on it, then copy it back to the CPU.
With the source code to an application, you can modify it to use CUDA, but it is not just like setting a compiler flag. You often have to make extensive changes to parts of the of the source code (and even switch to a more parallel-friendly algorithm sometimes), which requires a lot of knowledge about the specific application domain.
Not all tasks are amenable to GPU acceleration, though. Programs that tend to be limited by disk I/O, or lack large scale data parallel calculations, are usually bad choices.