Efficient Polynomial Root Finding using CUDA Programming
By: Viraj Shah
What is Root Finding? Why is it needed?
Various Root Finding Algorithms: Pros and Cons
Bracketing method (For example Bisection Method)
Non Bracketing methods (For example Secant method)
Why CUDA programming?
Several of the disadvantages on the previous slides can be addressed by running the root finding algorithm multiple times with different intervals or guess values. This way we can find all the roots for an equation as well as remove the dependency on the initial interval or guess values.
Hence, clearly a use for GPU.
Algorithm
CUDA based algorithm involves breaking a very large interval into smaller intervals and launching kernels for each smaller intervals.
For example, in bisection method, we can start with a interval of -10 to 10 and break this interval into 100 smaller intervals. Now, we run bisection method on each subinterval. This way, we can capture all the roots from -10 to 10 as well as catch roots that are close to each other like 0.1 and 0.25, which was not possible earlier even with a very small interval of 0-0.5.
CUDA programming concepts
Concepts incorporated from class in this project
Improvements using CUDA
Bracketing method (For example Bisection Method)
Non Bracketing methods (For example Secant method)
Code Demo
Thank You!