-
Notifications
You must be signed in to change notification settings - Fork 2
1.1 Application Jacobi
The Jacobi iterative method is a mathematical algorithm used to solve the system of N linear equations Ax = b, where A is an N x N matrix and x and **b are N x 1 column vectors. The algorithm is commonly embedded in real-world applications as a computational kernel, which can be used for the purpose of generating an approximation to a physical process.
If A is decomposed into diagonal and remainder components D and R, x can be computed iteratively via equation 1 below, also shown in an element-wise fashion in equation 2, where k is the iteration index. Equation 2 can be parallelised by computing each x_i^(k+1) independently.
The error in the approximation, after performing K iterations of equation 1, is established using epsilon = || Ax - b ||, which represents a single solution of the application. Tuning K operates a trade-off between accuracy and computational speed. The application is implemented as an OpenCL kernel that can be executed on CPUs, GPUs and FPGA-based accelerators.
Selection of the resource to use is controlled through the device type knob. A throughput monitor reports the time taken to complete K iterations of the algorithm. || Ax - b || is captured as an error monitor, with maximum bound epsilon.
Name | Type | Range (min, max) |
---|---|---|
Iterations | knob | 1, inf |
Data Type | knob | float, double |
Device Type | knob | pthreads, OpenCL (device 0) |
Throughput | monitor | 10, inf |
Error | monitor | -inf, e^(-12) |
- OpenCL
Compatible with all RTMs and devices