Skip to content

1.1 Application Jacobi

Graeme Bragg edited this page Jun 6, 2018 · 1 revision

Background

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.

Equations describing the Jacobi iterative method.

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.

Knobs and Monitors

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)

Software Dependencies

  • OpenCL

Compatible RTMs and Devices

Compatible with all RTMs and devices